From fc1307fb27bf92fe86dd2e3593c0a3dee047ad2f Mon Sep 17 00:00:00 2001 From: Igor Yalovoy Date: Wed, 11 Dec 2024 11:58:22 -0600 Subject: [PATCH 1/2] Refactor isSanctionsMonitored to use uint256 for _days and update related calls for consistency across KintoID, IKintoID, and KintoIdHarness. --- src/KintoID.sol | 6 +++--- src/interfaces/IKintoID.sol | 2 +- test/harness/KintoIdHarness.sol | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/KintoID.sol b/src/KintoID.sol index df541ea1..3827735a 100644 --- a/src/KintoID.sol +++ b/src/KintoID.sol @@ -455,7 +455,7 @@ contract KintoID is * @param _days Number of days to consider for monitoring freshness * @return bool True if sanctions were monitored within the specified period */ - function isSanctionsMonitored(uint32 _days) public view virtual override returns (bool) { + function isSanctionsMonitored(uint256 _days) public view virtual override returns (bool) { return block.timestamp - lastMonitoredAt < _days * (1 days); } @@ -467,7 +467,7 @@ contract KintoID is */ function isSanctionsSafe(address _account) public view virtual override returns (bool) { // If the sanction is not confirmed within SANCTION_EXPIRY_PERIOD, consider the account sanctions safe - return isSanctionsMonitored(7) + return isSanctionsMonitored(EXIT_WINDOW_PERIOD) && ( _kycmetas[_account].sanctionsCount == 0 || (sanctionedAt[_account] != 0 && (block.timestamp - sanctionedAt[_account]) > SANCTION_EXPIRY_PERIOD) @@ -483,7 +483,7 @@ contract KintoID is */ function isSanctionsSafeIn(address _account, uint16 _countryId) external view virtual override returns (bool) { // If the sanction is not confirmed within SANCTION_EXPIRY_PERIOD, consider the account sanctions safe - return isSanctionsMonitored(7) + return isSanctionsMonitored(EXIT_WINDOW_PERIOD) && ( !_kycmetas[_account].sanctions.get(_countryId) || (sanctionedAt[_account] != 0 && (block.timestamp - sanctionedAt[_account]) > SANCTION_EXPIRY_PERIOD) diff --git a/src/interfaces/IKintoID.sol b/src/interfaces/IKintoID.sol index 7e694985..59262e5f 100644 --- a/src/interfaces/IKintoID.sol +++ b/src/interfaces/IKintoID.sol @@ -100,7 +100,7 @@ interface IKintoID { function isKYC(address _account) external view returns (bool); - function isSanctionsMonitored(uint32 _days) external view returns (bool); + function isSanctionsMonitored(uint256 _days) external view returns (bool); function isSanctionsSafe(address _account) external view returns (bool); diff --git a/test/harness/KintoIdHarness.sol b/test/harness/KintoIdHarness.sol index 75631e6e..238d7c5f 100644 --- a/test/harness/KintoIdHarness.sol +++ b/test/harness/KintoIdHarness.sol @@ -6,7 +6,7 @@ import {KintoID} from "@kinto-core/KintoID.sol"; contract KintoIdHarness is KintoID { constructor(address _walletFactory, address _faucet) KintoID(_walletFactory, _faucet) {} - function isSanctionsMonitored(uint32) public view virtual override returns (bool) { + function isSanctionsMonitored(uint256) public view virtual override returns (bool) { return true; } } From 8f9c7cf11c3d1adf78a2bfbf0d35ba82ec51e2f6 Mon Sep 17 00:00:00 2001 From: Igor Yalovoy Date: Wed, 5 Feb 2025 09:39:43 -0600 Subject: [PATCH 2/2] Add new KintoID contract implementation (V11), update deployment scripts and test artifacts with new contract address and transaction details. --- .../7887/run-1738769861.json | 148 ++++++++++++++++++ .../7887/run-latest.json | 84 +++++----- script/migrations/135-upgrade_faucet_id.s.sol | 4 +- test/artifacts/7887/addresses.json | 3 +- 4 files changed, 194 insertions(+), 45 deletions(-) create mode 100644 broadcast/135-upgrade_faucet_id.s.sol/7887/run-1738769861.json diff --git a/broadcast/135-upgrade_faucet_id.s.sol/7887/run-1738769861.json b/broadcast/135-upgrade_faucet_id.s.sol/7887/run-1738769861.json new file mode 100644 index 00000000..f2225d2c --- /dev/null +++ b/broadcast/135-upgrade_faucet_id.s.sol/7887/run-1738769861.json @@ -0,0 +1,148 @@ +{ + "transactions": [ + { + "hash": "0x01ccebe7858ca20390ac059f196a68ac024320403f999e061eefe948ce374db4", + "transactionType": "CREATE2", + "contractName": "KintoID", + "contractAddress": "0x4ac06254558e144c41461a319822993900ce2ee4", + "function": null, + "arguments": [ + "0x8a4720488CA32f1223ccFE5A087e250fE3BC5D75", + "0x0719D47A213149E2Ef8d3f5afDaDA8a8E22dfc03" + ], + "transaction": { + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e06040523060805234801562000014575f80fd5b5060405162004dfc38038062004dfc833981016040819052620000379162000133565b6200004162000059565b6001600160a01b0391821660a0521660c05262000169565b5f54610100900460ff1615620000c55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161462000115575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200012e575f80fd5b919050565b5f806040838503121562000145575f80fd5b620001508362000117565b9150620001606020840162000117565b90509250929050565b60805160a05160c051614c3e620001be5f395f8181610a120152612e8301525f818161096b0152610c1b01525f8181611416015281816114560152818161154c0152818161158c01526116a90152614c3e5ff3fe608060405260043610610371575f3560e01c80638129fc1c116101c8578063c5c03699116100fd578063e985e9c51161009d578063f698da251161006d578063f698da2514610b21578063f72c0d8b14610b37578063fab720d214610b6a578063fb0b294014610b80575f80fd5b8063e985e9c514610a69578063ef3b490314610ab0578063efdbfaee14610acf578063f36c8f5c14610aee575f80fd5b8063d547741f116100d8578063d547741f146109c2578063d9e1063d146109e1578063de5f72fd14610a01578063e42398ad14610a34575f80fd5b8063c5c036991461095a578063c87b56dd1461098d578063d00bb535146109ac575f80fd5b8063a0406ce211610168578063b0a77c6111610143578063b0a77c61146108da578063b61f5515146108f0578063b75a3e4e1461091c578063b88d4fde1461093b575f80fd5b8063a0406ce214610867578063a217fddf146108a8578063a22cb465146108bb575f80fd5b806391d14854116101a357806391d14854146107db57806395d89b41146107fa5780639805c7d1146108295780639944f51814610848575f80fd5b80638129fc1c1461077c578063845b6b6c1461079057806386823a2c146107bc575f80fd5b80632f745c59116102a95780634f6ccce7116102495780636d7cdf6c116102195780636d7cdf6c146106f35780636ed1f4a31461071257806370a08231146107315780637ecebe0014610750575f80fd5b80634f6ccce71461068257806352d1902d146106a15780636352211e146106b55780636d785f3b146106d4575f80fd5b8063390c11ae11610284578063390c11ae146105f157806342842e0e1461063157806342966c68146106505780634f1ef2861461066f575f80fd5b80632f745c591461059457806336568abe146105b35780633659cfe6146105d2575f80fd5b806311c0154e1161031457806321442ec9116102ef57806321442ec9146104f357806323b872dd14610528578063248a9ca3146105475780632f2ff15d14610575575f80fd5b806311c0154e1461049757806318160ddd146104b65780631fbd4041146104d4575f80fd5b806306fdde031161034f57806306fdde03146103e9578063081812fc14610422578063095ea7b3146104595780630add9f7f14610478575f80fd5b806301ffc9a71461037557806304a6238f146103a957806305bdaabb146103ca575b5f80fd5b348015610380575f80fd5b5061039461038f36600461400a565b610b9f565b60405190151581526020015b60405180910390f35b3480156103b4575f80fd5b506103c86103c3366004614040565b610baf565b005b3480156103d5575f80fd5b506103c86103e4366004614082565b610d22565b3480156103f4575f80fd5b5060408051808201909152600881526712da5b9d1bc8125160c21b60208201525b6040516103a091906140f7565b34801561042d575f80fd5b5061044161043c366004614109565b610e26565b6040516001600160a01b0390911681526020016103a0565b348015610464575f80fd5b506103c8610473366004614120565b610e4b565b348015610483575f80fd5b50610394610492366004614148565b610f5f565b3480156104a2575f80fd5b506103c86104b1366004614082565b610fea565b3480156104c1575f80fd5b506099545b6040519081526020016103a0565b3480156104df575f80fd5b506103c86104ee366004614082565b6110e5565b3480156104fe575f80fd5b506104c661050d366004614148565b6001600160a01b03165f908152610193602052604090205490565b348015610533575f80fd5b506103c8610542366004614161565b6112a5565b348015610552575f80fd5b506104c6610561366004614109565b5f90815260fb602052604090206001015490565b348015610580575f80fd5b506103c861058f36600461419a565b6112d6565b34801561059f575f80fd5b506104c66105ae366004614120565b6112fa565b3480156105be575f80fd5b506103c86105cd36600461419a565b61138e565b3480156105dd575f80fd5b506103c86105ec366004614148565b61140c565b3480156105fc575f80fd5b5061039461060b366004614148565b6001600160a01b03165f9081526101936020526040902060020154610100900460ff1690565b34801561063c575f80fd5b506103c861064b366004614161565b6114e9565b34801561065b575f80fd5b506103c861066a366004614109565b611503565b6103c861067d366004614257565b611542565b34801561068d575f80fd5b506104c661069c366004614109565b61160d565b3480156106ac575f80fd5b506104c661169d565b3480156106c0575f80fd5b506104416106cf366004614109565b61174e565b3480156106df575f80fd5b506103c86106ee3660046142f7565b6117ad565b3480156106fe575f80fd5b506103c861070d3660046142f7565b6117d3565b34801561071d575f80fd5b506103c861072c36600461435a565b6117f8565b34801561073c575f80fd5b506104c661074b366004614148565b611aea565b34801561075b575f80fd5b506104c661076a366004614148565b6101946020525f908152604090205481565b348015610787575f80fd5b506103c8611b6e565b34801561079b575f80fd5b506104c66107aa366004614148565b6101986020525f908152604090205481565b3480156107c7575f80fd5b506103946107d6366004614082565b611e22565b3480156107e6575f80fd5b506103946107f536600461419a565b611ed7565b348015610805575f80fd5b5060408051808201909152600781526612d2539513d25160ca1b6020820152610415565b348015610834575f80fd5b50610394610843366004614109565b611f01565b348015610853575f80fd5b50610394610862366004614148565b611f24565b348015610872575f80fd5b50610394610881366004614148565b6001600160a01b03165f9081526101936020526040902060020154610100900460ff161590565b3480156108b3575f80fd5b506104c65f81565b3480156108c6575f80fd5b506103c86108d53660046143cf565b611f40565b3480156108e5575f80fd5b506104c66101925481565b3480156108fb575f80fd5b5061090f61090a366004614148565b611f4b565b6040516103a091906143f7565b348015610927575f80fd5b50610394610936366004614082565b611fea565b348015610946575f80fd5b506103c861095536600461443c565b61202c565b348015610965575f80fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b348015610998575f80fd5b506104156109a7366004614109565b61205e565b3480156109b7575f80fd5b506104c6620d2f0081565b3480156109cd575f80fd5b506103c86109dc36600461419a565b6120c1565b3480156109ec575f80fd5b506104c65f80516020614b7c83398151915281565b348015610a0c575f80fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b348015610a3f575f80fd5b50610441610a4e366004614148565b6101966020525f90815260409020546001600160a01b031681565b348015610a74575f80fd5b50610394610a83366004614040565b6001600160a01b039182165f908152606a6020908152604080832093909416825291909152205460ff1690565b348015610abb575f80fd5b506103c8610aca366004614082565b6120e5565b348015610ada575f80fd5b506103c8610ae936600461449f565b6122a2565b348015610af9575f80fd5b506104c67f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb181565b348015610b2c575f80fd5b506104c66101955481565b348015610b42575f80fd5b506104c67f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b348015610b75575f80fd5b506104c66203f48081565b348015610b8b575f80fd5b506103c8610b9a366004614148565b6125ba565b5f610ba982612686565b92915050565b5f610bb983611aea565b118015610bcc5750610bca81611aea565b155b610c105760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103a3930b739b332b960811b60448201526064015b60405180910390fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610c4c5750610c4c5f33611ed7565b610cb35760405162461bcd60e51b815260206004820152603260248201527f4f6e6c79207468652077616c6c657420666163746f7279206f722061646d696e604482015271732063616e2074726967676572207468697360701b6064820152608401610c07565b6001600160a01b038281165f9081526101966020526040812080546001600160a01b03191692841692909217909155610cfa9083908390610cf59083906112fa565b6126aa565b506001600160a01b03165f9081526101966020526040902080546001600160a01b0319169055565b5f80516020614b7c833981519152610d3981612819565b610d4283611aea565b5f03610d61576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383165f9081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b16610e205760ff600884901c81165f9081526003830160205260409020805460019286169290921b909117905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917f364b7a2e1762fd5d9cdeda6c0ea8e1be396892c015c5c917f4d164cd4968ac7691015b60405180910390a25b50505050565b5f610e3082612823565b505f908152606960205260409020546001600160a01b031690565b5f610e558261174e565b9050806001600160a01b0316836001600160a01b031603610ec25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c07565b336001600160a01b0382161480610ede5750610ede8133610a83565b610f505760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c07565b610f5a8383612881565b505050565b5f610f6c620d2f00611f01565b8015610ba957506001600160a01b0382165f908152610193602052604090206002015460ff161580610ba957506001600160a01b0382165f908152610198602052604090205415801590610ba957506001600160a01b0382165f90815261019860205260409020546203f48090610fe390426144e4565b1192915050565b5f80516020614b7c83398151915261100181612819565b61100a83611aea565b5f03611029576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383165f9081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b1615610e205760ff600884901c81165f9081526003830160205260409020805460019286169290921b19909116905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917fdaf71d6bfd7a93506c86e0e5c5725808f99fe27f13af711f321edf92511e609b9101610e17565b5f80516020614b7c8339815191526110fc81612819565b61110583611aea565b5f03611124576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383165f908152610198602052604090205480158015906111575750620d2f0061115582426144e4565b105b1561118757604051631093e3a360e21b81526001600160a01b038516600482015260248101829052604401610c07565b6001600160a01b0384165f9081526101936020908152604080832060ff600888901c811685526004820190935292205460019186169190911b1661129e5760ff600885901c81165f9081526004830160205260409020805460019287169290921b9091179055600281018054600191905f9061120790849060ff166144f7565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550846001600160a01b03167f87d7acad3a8fb00ded1ae0aeaed871a89b621b17d6cd6ff8fd5c00b63394f94a854260405161127a92919061ffff929092168252602082015260400190565b60405180910390a26001600160a01b0385165f908152610198602052604090204290555b5050505050565b6112af33826128ee565b6112cb5760405162461bcd60e51b8152600401610c0790614510565b610f5a8383836126aa565b5f82815260fb60205260409020600101546112f081612819565b610f5a838361296b565b5f61130483611aea565b82106113665760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610c07565b506001600160a01b03919091165f908152609760209081526040808320938352929052205490565b6001600160a01b03811633146113fe5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c07565b61140882826129f0565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114545760405162461bcd60e51b8152600401610c079061455d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661149c5f80516020614bc2833981519152546001600160a01b031690565b6001600160a01b0316146114c25760405162461bcd60e51b8152600401610c07906145a9565b6114cb81612a56565b604080515f808252602082019092526114e691839190612a80565b50565b610f5a83838360405180602001604052805f81525061202c565b60405163015538b160e01b8152602060048201526013602482015272155cd948189d5c9b92d650c81a5b9cdd195859606a1b6044820152606401610c07565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361158a5760405162461bcd60e51b8152600401610c079061455d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115d25f80516020614bc2833981519152546001600160a01b031690565b6001600160a01b0316146115f85760405162461bcd60e51b8152600401610c07906145a9565b61160182612a56565b61140882826001612a80565b5f61161760995490565b821061167a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610c07565b6099828154811061168d5761168d6145f5565b905f5260205f2001549050919050565b5f306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461173c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c07565b505f80516020614bc283398151915290565b5f818152606760205260408120546001600160a01b031680610ba95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c07565b6101918054905f6117bd83614609565b9190505550610f5a610191548484846001612bea565b6101918054905f6117e383614609565b9190505550610f5a610191548484845f612bea565b5f80516020614b7c83398151915261180f81612819565b838214611832576040516001621398b960e31b0319815260040160405180910390fd5b60c88411156118545760405163a947d77f60e01b815260040160405180910390fd5b425f5b85811015611aa0575f6101935f898985818110611876576118766145f5565b905060200201602081019061188b9190614148565b6001600160a01b03166001600160a01b031681526020019081526020015f2090506118d68888848181106118c1576118c16145f5565b905060200201602081019061074b9190614148565b5f036118e25750611a8e565b4260018201555f5b8686848181106118fc576118fc6145f5565b905060200281019061190e9190614621565b9050811015611a8b575f87878581811061192a5761192a6145f5565b905060200281019061193c9190614621565b8381811061194c5761194c6145f5565b9050606002018036038101906119629190614665565b80519091508015611974575080602001515b156119b2576119ad8a8a8681811061198e5761198e6145f5565b90506020020160208101906119a39190614148565b8260400151610d22565b611a78565b805180156119c257508060200151155b156119fb576119ad8a8a868181106119dc576119dc6145f5565b90506020020160208101906119f19190614148565b8260400151610fea565b8051158015611a0b575080602001515b15611a44576119ad8a8a86818110611a2557611a256145f5565b9050602002016020810190611a3a9190614148565b82604001516110e5565b611a788a8a86818110611a5957611a596145f5565b9050602002016020810190611a6e9190614148565b82604001516120e5565b50611a846001826146ce565b90506118ea565b50505b611a996001826146ce565b9050611857565b50610192819055604080518681526020810183905233917f18fb8b1f79749f3894ec6b996ad0503b2dbcf19585865dba3df7683953fc450d910160405180910390a2505050505050565b5f6001600160a01b038216611b535760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c07565b506001600160a01b03165f9081526068602052604090205490565b5f54610100900460ff1615808015611b8c57505f54600160ff909116105b80611ba55750303b158015611ba557505f5460ff166001145b611c085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c07565b5f805460ff191660011790558015611c29575f805461ff0019166101001790555b611c726040518060400160405280600881526020016712da5b9d1bc8125160c21b8152506040518060400160405280600781526020016612d2539513d25160ca1b815250612f15565b611c7a612f45565b611c82612f45565b611c8a612f45565b611c92612f45565b611c9c5f3361296b565b611cb35f80516020614b7c8339815191523361296b565b611cdd7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e33361296b565b611d077f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb13361296b565b4261019255604080518082018252600781526612da5b9d1bd25160ca1b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff2acf2bff9f153ce27ec66ef28c5d61aaa06a6eac70c4c0de4bac7cb3bec0c54818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c090910190925281519101206101955580156114e6575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f611e2f620d2f00611f01565b8015611ed057506001600160a01b0383165f90815261019360205260409020611e7d9060040161ffff8416600881901c5f90815260208390526040902054600160ff83161b16151592915050565b1580611ed057506001600160a01b0383165f908152610198602052604090205415801590611ed057506001600160a01b0383165f90815261019860205260409020546203f48090611ece90426144e4565b115b9392505050565b5f91825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f611f0f82620151806146e1565b61019254611f1d90426144e4565b1092915050565b5f80611f2f83611aea565b118015610ba95750610ba982610f5f565b611408338383612f6d565b6001600160a01b0381165f9081526101936020526040808220815161010080825261202082019093526060936003909201928160200160208202803683370190505090505f5b610100811015611fe257600881901c5f90815260208490526040902054600160ff83161b161515828281518110611fca57611fca6145f5565b91151560209283029190910190910152600101611f91565b509392505050565b6001600160a01b0382165f9081526101936020908152604080832060ff600886901c81168552600390910190925282205460019184169190911b161515611ed0565b61203633836128ee565b6120525760405162461bcd60e51b8152600401610c0790614510565b610e208484848461303a565b606061206982612823565b5f61207261306d565b90505f8151116120905760405180602001604052805f815250611ed0565b8061209a8461308d565b6040516020016120ab9291906146f8565b6040516020818303038152906040529392505050565b5f82815260fb60205260409020600101546120db81612819565b610f5a83836129f0565b5f80516020614b7c8339815191526120fc81612819565b61210583611aea565b5f03612124576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383165f908152610198602052604090205480158015906121575750620d2f0061215582426144e4565b105b1561218757604051631093e3a360e21b81526001600160a01b038516600482015260248101829052604401610c07565b6001600160a01b0384165f9081526101936020908152604080832060ff600888901c811685526004820190935292205460019186169190911b161561129e5760ff600885901c81165f9081526004830160205260409020805460019287169290921b199091169055600281018054600191905f9061220990849060ff16614726565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550846001600160a01b03167fe307a82882b02537e8254556f85aa0ae942a060782f1f076028687f1fd7dba18854260405161227c92919061ffff929092168252602082015260400190565b60405180910390a2505050506001600160a01b03165f9081526101986020526040812055565b80806040013542106122c757604051630819bdcd60e01b815260040160405180910390fd5b60208101803590610194905f906122de9085614148565b6001600160a01b03166001600160a01b031681526020019081526020015f20541461231c57604051633ab3447f60e11b815260040160405180910390fd5b6123335f80516020614b7c83398151915233611ed7565b61235057604051633b136dc160e11b815260040160405180910390fd5b5f8061235f6020840184614148565b803b92509050811561238457604051631bb5d42560e31b815260040160405180910390fd5b5f61019554612405856123969061473f565b805160208083015160409384015184517fce753e2ed199e3bc0c561ccacfe9f2ebd720bf99f6d0e6854d8ec36486eb18c7818501526001600160a01b039094168486015260608401919091526080808401919091528351808403909101815260a0909201909252805191012090565b60405161190160f01b60208201526022810192909252604282015260620160408051601f198184030181529190528051602090910120905061249f8161244e60608701876147c1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061248f925050506020880188614148565b6001600160a01b0316919061311c565b6124bc57604051632057875960e21b815260040160405180910390fd5b6124cc61074b6020870187614148565b5f036124eb57604051634c3215c360e11b815260040160405180910390fd5b60016101945f6124fe6020890189614148565b6001600160a01b03166001600160a01b031681526020019081526020015f205f82825461252b91906146ce565b9091555061254f905061254a6125446020880188614148565b5f6112fa565b61317a565b5f61256061074b6020880188614148565b111561257f5760405163493e98f360e11b815260040160405180910390fd5b5f610193816125916020890189614148565b6001600160a01b0316815260208101919091526040015f90812081815560010155505050505050565b7f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb16125e481612819565b6001600160a01b0382165f908152610193602052604081206002015460ff16900361262d57604051634d05f3e760e01b81526001600160a01b0383166004820152602401610c07565b6001600160a01b0382165f818152610198602052604080822091909155517f8e5e87839bfd57881dc0bf377cc18550ec2476ac488bb95c3aec4792077ea79f9061267a9042815260200190565b60405180910390a25050565b5f6001600160e01b03198216637965db0b60e01b1480610ba95750610ba982613219565b826001600160a01b03166126bd8261174e565b6001600160a01b0316146126e35760405162461bcd60e51b8152600401610c0790614803565b6001600160a01b0382166127455760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c07565b612752838383600161323d565b826001600160a01b03166127658261174e565b6001600160a01b03161461278b5760405162461bcd60e51b8152600401610c0790614803565b5f81815260696020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526068855283862080545f1901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6114e681336132f5565b5f818152606760205260409020546001600160a01b03166114e65760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c07565b5f81815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906128b58261174e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f806128f98361174e565b9050806001600160a01b0316846001600160a01b0316148061293f57506001600160a01b038082165f908152606a602090815260408083209388168352929052205460ff165b806129635750836001600160a01b031661295884610e26565b6001600160a01b0316145b949350505050565b6129758282611ed7565b611408575f82815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556129ac3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6129fa8282611ed7565b15611408575f82815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e361140881612819565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612ab357610f5a8361334e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b0d575060408051601f3d908101601f19168201909252612b0a91810190614848565b60015b612b705760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c07565b5f80516020614bc28339815191528114612bde5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c07565b50610f5a8383836133e9565b8380604001354210612c0f57604051630819bdcd60e01b815260040160405180910390fd5b60208101803590610194905f90612c269085614148565b6001600160a01b03166001600160a01b031681526020019081526020015f205414612c6457604051633ab3447f60e11b815260040160405180910390fd5b612c7b5f80516020614b7c83398151915233611ed7565b612c9857604051633b136dc160e11b815260040160405180910390fd5b5f80612ca76020840184614148565b803b925090508115612ccc57604051631bb5d42560e31b815260040160405180910390fd5b5f61019554612cde856123969061473f565b60405161190160f01b60208201526022810192909252604282015260620160408051601f1981840301815291905280516020909101209050612d278161244e60608701876147c1565b612d4457604051632057875960e21b815260040160405180910390fd5b5f612d5561074b60208b018b614148565b1115612d745760405163493e98f360e11b815260040160405180910390fd5b5f61019381612d8660208c018c614148565b6001600160a01b0316815260208101919091526040015f90812042808255600182015560028101805461ff0019166101008a15150217905591505b87811015612e2557612e1d898983818110612dde57612dde6145f5565b9050602002016020810190612df3919061485f565b600881901c60ff9081165f908152600386016020526040902080546001939092169290921b179055565b600101612dc1565b506101945f612e3760208c018c614148565b6001600160a01b0316815260208101919091526040015f908120805491612e5d83614609565b90915550612e799050612e7360208b018b614148565b8b61340d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631fa27f76612eb560208c018c614148565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b158015612ef3575f80fd5b505af1158015612f05573d5f803e3d5ffd5b5050505050505050505050505050565b5f54610100900460ff16612f3b5760405162461bcd60e51b8152600401610c0790614878565b6114088282613426565b5f54610100900460ff16612f6b5760405162461bcd60e51b8152600401610c0790614878565b565b816001600160a01b0316836001600160a01b031603612fce5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c07565b6001600160a01b038381165f818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6130458484846126aa565b61305184848484613465565b610e205760405162461bcd60e51b8152600401610c07906148c3565b6060604051806060016040528060268152602001614b9c60269139905090565b60605f61309983613562565b60010190505f816001600160401b038111156130b7576130b76141bb565b6040519080825280601f01601f1916602001820160405280156130e1576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846130eb57509392505050565b5f805f6131298585613639565b90925090505f81600481111561314157613141614915565b14801561315f5750856001600160a01b0316826001600160a01b0316145b80613170575061317086868661367b565b9695505050505050565b5f6131848261174e565b9050613193815f84600161323d565b61319c8261174e565b5f83815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080545f190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b5f6001600160e01b0319821663780e9d6360e01b1480610ba95750610ba982613762565b6001600160a01b038416158061327057506001600160a01b038481165f9081526101966020526040902054811690841614155b80613281575061327f84610f5f565b155b80156132a657506001600160a01b0384161515806132a657506001600160a01b038316155b80156132cb57506001600160a01b03841615806132cb57506001600160a01b03831615155b156132e957604051632a675c2b60e11b815260040160405180910390fd5b610e20848484846137b1565b6132ff8282611ed7565b6114085761330c816138dd565b6133178360206138ef565b604051602001613328929190614929565b60408051601f198184030181529082905262461bcd60e51b8252610c07916004016140f7565b6001600160a01b0381163b6133bb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c07565b5f80516020614bc283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6133f283613a84565b5f825111806133fe5750805b15610f5a57610e208383613ac3565b611408828260405180602001604052805f815250613ae8565b5f54610100900460ff1661344c5760405162461bcd60e51b8152600401610c0790614878565b60656134588382614a13565b506066610f5a8282614a13565b5f6001600160a01b0384163b1561355757604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906134a8903390899088908890600401614ad2565b6020604051808303815f875af19250505080156134e2575060408051601f3d908101601f191682019092526134df91810190614b04565b60015b61353d573d80801561350f576040519150601f19603f3d011682016040523d82523d5f602084013e613514565b606091505b5080515f036135355760405162461bcd60e51b8152600401610c07906148c3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612963565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106135a05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106135cc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106135ea57662386f26fc10000830492506010015b6305f5e1008310613602576305f5e100830492506008015b612710831061361657612710830492506004015b60648310613628576064830492506002015b600a8310610ba95760010192915050565b5f80825160410361366d576020830151604084015160608501515f1a61366187828585613b1a565b94509450505050613674565b505f905060025b9250929050565b5f805f856001600160a01b0316631626ba7e60e01b86866040516024016136a3929190614b1f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516136e19190614b37565b5f60405180830381855afa9150503d805f8114613719576040519150601f19603f3d011682016040523d82523d5f602084013e61371e565b606091505b509150915081801561373257506020815110155b801561317057508051630b135d3f60e11b906137579083016020908101908401614848565b149695505050505050565b5f6001600160e01b031982166380ac58cd60e01b148061379257506001600160e01b03198216635b5e139f60e01b145b80610ba957506301ffc9a760e01b6001600160e01b0319831614610ba9565b60018111156138205760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610c07565b816001600160a01b03851661387b5761387681609980545f838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b61389e565b836001600160a01b0316856001600160a01b03161461389e5761389e8582613bd7565b6001600160a01b0384166138ba576138b581613c70565b61129e565b846001600160a01b0316846001600160a01b03161461129e5761129e8482613d17565b6060610ba96001600160a01b03831660145b60605f6138fd8360026146e1565b6139089060026146ce565b6001600160401b0381111561391f5761391f6141bb565b6040519080825280601f01601f191660200182016040528015613949576020820181803683370190505b509050600360fc1b815f81518110613963576139636145f5565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110613991576139916145f5565b60200101906001600160f81b03191690815f1a9053505f6139b38460026146e1565b6139be9060016146ce565b90505b6001811115613a35576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106139f2576139f26145f5565b1a60f81b828281518110613a0857613a086145f5565b60200101906001600160f81b03191690815f1a90535060049490941c93613a2e81614b52565b90506139c1565b508315611ed05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c07565b613a8d8161334e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611ed08383604051806060016040528060278152602001614be260279139613d59565b613af28383613dc3565b613afe5f848484613465565b610f5a5760405162461bcd60e51b8152600401610c07906148c3565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613b4f57505f90506003613bce565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613ba0573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116613bc8575f60019250925050613bce565b91505f90505b94509492505050565b5f6001613be384611aea565b613bed91906144e4565b5f83815260986020526040902054909150808214613c3e576001600160a01b0384165f9081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b505f9182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099545f90613c81906001906144e4565b5f838152609a602052604081205460998054939450909284908110613ca857613ca86145f5565b905f5260205f20015490508060998381548110613cc757613cc76145f5565b5f918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613cfe57613cfe614b67565b600190038181905f5260205f20015f9055905550505050565b5f613d2183611aea565b6001600160a01b039093165f908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b60605f80856001600160a01b031685604051613d759190614b37565b5f60405180830381855af49150503d805f8114613dad576040519150601f19603f3d011682016040523d82523d5f602084013e613db2565b606091505b509150915061317086838387613f58565b6001600160a01b038216613e195760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c07565b5f818152606760205260409020546001600160a01b031615613e7d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c07565b613e8a5f8383600161323d565b5f818152606760205260409020546001600160a01b031615613eee5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c07565b6001600160a01b0382165f81815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60608315613fc65782515f03613fbf576001600160a01b0385163b613fbf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c07565b5081612963565b6129638383815115613fdb5781518083602001fd5b8060405162461bcd60e51b8152600401610c0791906140f7565b6001600160e01b0319811681146114e6575f80fd5b5f6020828403121561401a575f80fd5b8135611ed081613ff5565b80356001600160a01b038116811461403b575f80fd5b919050565b5f8060408385031215614051575f80fd5b61405a83614025565b915061406860208401614025565b90509250929050565b803561ffff8116811461403b575f80fd5b5f8060408385031215614093575f80fd5b61409c83614025565b915061406860208401614071565b5f5b838110156140c45781810151838201526020016140ac565b50505f910152565b5f81518084526140e38160208601602086016140aa565b601f01601f19169290920160200192915050565b602081525f611ed060208301846140cc565b5f60208284031215614119575f80fd5b5035919050565b5f8060408385031215614131575f80fd5b61413a83614025565b946020939093013593505050565b5f60208284031215614158575f80fd5b611ed082614025565b5f805f60608486031215614173575f80fd5b61417c84614025565b925061418a60208501614025565b9150604084013590509250925092565b5f80604083850312156141ab575f80fd5b8235915061406860208401614025565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126141de575f80fd5b81356001600160401b03808211156141f8576141f86141bb565b604051601f8301601f19908116603f01168101908282118183101715614220576142206141bb565b81604052838152866020858801011115614238575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215614268575f80fd5b61427183614025565b915060208301356001600160401b0381111561428b575f80fd5b614297858286016141cf565b9150509250929050565b5f608082840312156142b1575f80fd5b50919050565b5f8083601f8401126142c7575f80fd5b5081356001600160401b038111156142dd575f80fd5b6020830191508360208260051b8501011115613674575f80fd5b5f805f60408486031215614309575f80fd5b83356001600160401b038082111561431f575f80fd5b61432b878388016142a1565b94506020860135915080821115614340575f80fd5b5061434d868287016142b7565b9497909650939450505050565b5f805f806040858703121561436d575f80fd5b84356001600160401b0380821115614383575f80fd5b61438f888389016142b7565b909650945060208701359150808211156143a7575f80fd5b506143b4878288016142b7565b95989497509550505050565b8035801515811461403b575f80fd5b5f80604083850312156143e0575f80fd5b6143e983614025565b9150614068602084016143c0565b602080825282518282018190525f9190848201906040850190845b81811015614430578351151583529284019291840191600101614412565b50909695505050505050565b5f805f806080858703121561444f575f80fd5b61445885614025565b935061446660208601614025565b92506040850135915060608501356001600160401b03811115614487575f80fd5b614493878288016141cf565b91505092959194509250565b5f602082840312156144af575f80fd5b81356001600160401b038111156144c4575f80fd5b612963848285016142a1565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ba957610ba96144d0565b60ff8181168382160190811115610ba957610ba96144d0565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161461a5761461a6144d0565b5060010190565b5f808335601e19843603018112614636575f80fd5b8301803591506001600160401b0382111561464f575f80fd5b6020019150606081023603821315613674575f80fd5b5f60608284031215614675575f80fd5b604051606081018181106001600160401b0382111715614697576146976141bb565b6040526146a3836143c0565b81526146b1602084016143c0565b60208201526146c260408401614071565b60408201529392505050565b80820180821115610ba957610ba96144d0565b8082028115828204841417610ba957610ba96144d0565b5f83516147098184602088016140aa565b83519083019061471d8183602088016140aa565b01949350505050565b60ff8281168282160390811115610ba957610ba96144d0565b5f6080823603121561474f575f80fd5b604051608081016001600160401b038282108183111715614772576147726141bb565b8160405261477f85614025565b8352602085013560208401526040850135604084015260608501359150808211156147a8575f80fd5b506147b5368286016141cf565b60608301525092915050565b5f808335601e198436030181126147d6575f80fd5b8301803591506001600160401b038211156147ef575f80fd5b602001915036819003821315613674575f80fd5b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215614858575f80fd5b5051919050565b5f6020828403121561486f575f80fd5b611ed082614071565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f83516149608160178501602088016140aa565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516149918160288401602088016140aa565b01602801949350505050565b600181811c908216806149b157607f821691505b6020821081036142b157634e487b7160e01b5f52602260045260245ffd5b601f821115610f5a57805f5260205f20601f840160051c810160208510156149f45750805b601f840160051c820191505b8181101561129e575f8155600101614a00565b81516001600160401b03811115614a2c57614a2c6141bb565b614a4081614a3a845461499d565b846149cf565b602080601f831160018114614a73575f8415614a5c5750858301515b5f19600386901b1c1916600185901b178555614aca565b5f85815260208120601f198616915b82811015614aa157888601518255948401946001909101908401614a82565b5085821015614abe57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90613170908301846140cc565b5f60208284031215614b14575f80fd5b8151611ed081613ff5565b828152604060208201525f61296360408301846140cc565b5f8251614b488184602087016140aa565b9190910192915050565b5f81614b6057614b606144d0565b505f190190565b634e487b7160e01b5f52603160045260245ffdfe6c4079fcac94e7142d8c209744c998efe53a188aadb7e55958f7ad3ea8a1d65268747470733a2f2f6b696e746f2e78797a2f6170692f76312f6e66742d6b696e746f2d69642f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206a6b55ddd4c7dc01fbfc641b69786e0b1d84d49381c8e12f79778832977ca24e64736f6c634300081800330000000000000000000000008a4720488ca32f1223ccfe5a087e250fe3bc5d750000000000000000000000000719d47a213149e2ef8d3f5afdada8a8e22dfc03", + "nonce": "0x4bc73", + "chainId": "0x1ecf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "function": "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)", + "arguments": [ + "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 4414, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe60000000000000000000000004ac06254558e144c41461a319822993900ce2ee400000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0xaea147877c2fda0c0cc62387ed8b4c637406332816b49406a38aefbe4f51417a53c57516039536d7a537fbc93d4795396eb5509526a2403e7db421187845d6cf1b1c7af6f455ed5a0d0b5fbd14bac309f397476a534f89f5a3e73fe1948513b15d38a5349a709ccbd03e36cb14f38c18ad71bc1fa7114735a68828aa46e19abca01c)]", + "0x660ad4B5A74130a4796B4d54BC6750Ae93C86e6c" + ], + "transaction": { + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "value": "0x0", + "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a000000000000000000000000000000000000000000000000000000000000113e0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe60000000000000000000000004ac06254558e144c41461a319822993900ce2ee40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082aea147877c2fda0c0cc62387ed8b4c637406332816b49406a38aefbe4f51417a53c57516039536d7a537fbc93d4795396eb5509526a2403e7db421187845d6cf1b1c7af6f455ed5a0d0b5fbd14bac309f397476a534f89f5a3e73fe1948513b15d38a5349a709ccbd03e36cb14f38c18ad71bc1fa7114735a68828aa46e19abca01c000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4bc74", + "chainId": "0x1ecf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x701fe0", + "logs": [ + { + "address": "0x4ac06254558e144c41461a319822993900ce2ee4", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x58db3b0c5c091aa597f1bf839c8ccf95aa99569432960c50de0fe737fc7b2f5c", + "blockNumber": "0xb1066", + "transactionHash": "0x01ccebe7858ca20390ac059f196a68ac024320403f999e061eefe948ce374db4", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000404000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x01ccebe7858ca20390ac059f196a68ac024320403f999e061eefe948ce374db4", + "transactionIndex": "0x1", + "blockHash": "0x58db3b0c5c091aa597f1bf839c8ccf95aa99569432960c50de0fe737fc7b2f5c", + "blockNumber": "0xb1066", + "gasUsed": "0x701fe0", + "effectiveGasPrice": "0x5f5e100", + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "gasUsedForL1": "0x2e5b42", + "l1BlockNumber": "0x14c5af1" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4f8b3", + "logs": [ + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" + ], + "data": "0x", + "blockHash": "0xf27c443f1a7813e2bc7717d157ba4e1fe6ce899c602f65dacbb5d93fba507b43", + "blockNumber": "0xb1067", + "transactionHash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xf369f78e3a0492cc4e96a90dae0728a38498e9c7", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000004ac06254558e144c41461a319822993900ce2ee4" + ], + "data": "0x", + "blockHash": "0xf27c443f1a7813e2bc7717d157ba4e1fe6ce899c602f65dacbb5d93fba507b43", + "blockNumber": "0xb1067", + "transactionHash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", + "0xa544904d331ac631a32a8516752cb0346b1bdf27ff7cecc583a7e56bf3abde98", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000113e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000083bdb0000000000000000000000000000000000000000000000000000000000083bdb", + "blockHash": "0xf27c443f1a7813e2bc7717d157ba4e1fe6ce899c602f65dacbb5d93fba507b43", + "blockNumber": "0xb1067", + "transactionHash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", + "transactionIndex": "0x1", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000004400000000000000000000000000000000008000000000000100000010000000000000000000000000000020000000000008000000000000000000000000002000000000000000010000000000000000800000000020000000000000000000800002000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000400000100000000400000000000000000000000000000000002000000000000000020100400100001000000000002000000000000004000000000000020000000000000010000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", + "transactionIndex": "0x1", + "blockHash": "0xf27c443f1a7813e2bc7717d157ba4e1fe6ce899c602f65dacbb5d93fba507b43", + "blockNumber": "0xb1067", + "gasUsed": "0x4f8b3", + "effectiveGasPrice": "0x5f5e100", + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "contractAddress": null, + "gasUsedForL1": "0x263bc", + "l1BlockNumber": "0x14c5af1" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1738769861, + "chain": 7887, + "commit": "6b8dd59" +} \ No newline at end of file diff --git a/broadcast/135-upgrade_faucet_id.s.sol/7887/run-latest.json b/broadcast/135-upgrade_faucet_id.s.sol/7887/run-latest.json index ef88a613..f2225d2c 100644 --- a/broadcast/135-upgrade_faucet_id.s.sol/7887/run-latest.json +++ b/broadcast/135-upgrade_faucet_id.s.sol/7887/run-latest.json @@ -1,10 +1,10 @@ { "transactions": [ { - "hash": "0x39a80565f32d26000864066f3d09a285965a055bafd9368ca6a52a8cdc1394d8", + "hash": "0x01ccebe7858ca20390ac059f196a68ac024320403f999e061eefe948ce374db4", "transactionType": "CREATE2", "contractName": "KintoID", - "contractAddress": "0xaa0726829d41e3c70b84bc5390cce82afc56871a", + "contractAddress": "0x4ac06254558e144c41461a319822993900ce2ee4", "function": null, "arguments": [ "0x8a4720488CA32f1223ccFE5A087e250fE3BC5D75", @@ -14,29 +14,29 @@ "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060e0604052306080523480156200001557600080fd5b5060405162004fe038038062004fe0833981016040819052620000389162000138565b620000426200005a565b6001600160a01b0391821660a0521660c05262000170565b600054610100900460ff1615620000c75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000119576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200013357600080fd5b919050565b600080604083850312156200014c57600080fd5b62000157836200011b565b915062000167602084016200011b565b90509250929050565b60805160a05160c051614e16620001ca60003960008181610a3b0152612f5301526000818161098e0152610c71015260008181611486015281816114c6015281816115bf015281816115ff01526117210152614e166000f3fe6080604052600436106103815760003560e01c80638129fc1c116101d1578063c87b56dd11610102578063ead15596116100a0578063f698da251161006f578063f698da2514610b71578063f72c0d8b14610b88578063fab720d214610bbc578063fb0b294014610bd357600080fd5b8063ead1559614610add578063ef3b490314610afd578063efdbfaee14610b1d578063f36c8f5c14610b3d57600080fd5b8063d9e1063d116100dc578063d9e1063d14610a07578063de5f72fd14610a29578063e42398ad14610a5d578063e985e9c514610a9457600080fd5b8063c87b56dd146109b0578063d00bb535146109d0578063d547741f146109e757600080fd5b8063a217fddf1161016f578063b61f551511610149578063b61f55151461090f578063b75a3e4e1461093c578063b88d4fde1461095c578063c5c036991461097c57600080fd5b8063a217fddf146108c3578063a22cb465146108d8578063b0a77c61146108f857600080fd5b806391d14854116101ab57806391d148541461081057806395d89b41146108305780639944f51814610860578063a0406ce21461088057600080fd5b80638129fc1c146107ad578063845b6b6c146107c257806386823a2c146107f057600080fd5b80632f745c59116102b65780634f6ccce7116102545780636d7cdf6c116102235780636d7cdf6c1461071f5780636ed1f4a31461073f57806370a082311461075f5780637ecebe001461077f57600080fd5b80634f6ccce7146106aa57806352d1902d146106ca5780636352211e146106df5780636d785f3b146106ff57600080fd5b8063390c11ae11610290578063390c11ae1461061557806342842e0e1461065757806342966c68146106775780634f1ef2861461069757600080fd5b80632f745c59146105b557806336568abe146105d55780633659cfe6146105f557600080fd5b806311c0154e1161032357806321442ec9116102fd57806321442ec91461050e57806323b872dd14610545578063248a9ca3146105655780632f2ff15d1461059557600080fd5b806311c0154e146104af57806318160ddd146104cf5780631fbd4041146104ee57600080fd5b806306fdde031161035f57806306fdde03146103fd578063081812fc14610437578063095ea7b31461046f5780630add9f7f1461048f57600080fd5b806301ffc9a71461038657806304a6238f146103bb57806305bdaabb146103dd575b600080fd5b34801561039257600080fd5b506103a66103a1366004614128565b610bf3565b60405190151581526020015b60405180910390f35b3480156103c757600080fd5b506103db6103d6366004614161565b610c04565b005b3480156103e957600080fd5b506103db6103f83660046141a6565b610d7b565b34801561040957600080fd5b5060408051808201909152600881526712da5b9d1bc8125160c21b60208201525b6040516103b29190614220565b34801561044357600080fd5b50610457610452366004614233565b610e83565b6040516001600160a01b0390911681526020016103b2565b34801561047b57600080fd5b506103db61048a36600461424c565b610eaa565b34801561049b57600080fd5b506103a66104aa366004614276565b610fbf565b3480156104bb57600080fd5b506103db6104ca3660046141a6565b61104c565b3480156104db57600080fd5b506099545b6040519081526020016103b2565b3480156104fa57600080fd5b506103db6105093660046141a6565b61114b565b34801561051a57600080fd5b506104e0610529366004614276565b6001600160a01b03166000908152610193602052604090205490565b34801561055157600080fd5b506103db610560366004614291565b611312565b34801561057157600080fd5b506104e0610580366004614233565b600090815260fb602052604090206001015490565b3480156105a157600080fd5b506103db6105b03660046142cd565b611343565b3480156105c157600080fd5b506104e06105d036600461424c565b611368565b3480156105e157600080fd5b506103db6105f03660046142cd565b6113fe565b34801561060157600080fd5b506103db610610366004614276565b61147c565b34801561062157600080fd5b506103a6610630366004614276565b6001600160a01b031660009081526101936020526040902060020154610100900460ff1690565b34801561066357600080fd5b506103db610672366004614291565b61155b565b34801561068357600080fd5b506103db610692366004614233565b611576565b6103db6106a5366004614392565b6115b5565b3480156106b657600080fd5b506104e06106c5366004614233565b611681565b3480156106d657600080fd5b506104e0611714565b3480156106eb57600080fd5b506104576106fa366004614233565b6117c7565b34801561070b57600080fd5b506103db61071a36600461443b565b611827565b34801561072b57600080fd5b506103db61073a36600461443b565b61184e565b34801561074b57600080fd5b506103db61075a3660046144a3565b611875565b34801561076b57600080fd5b506104e061077a366004614276565b611b6f565b34801561078b57600080fd5b506104e061079a366004614276565b6101946020526000908152604090205481565b3480156107b957600080fd5b506103db611bf5565b3480156107ce57600080fd5b506104e06107dd366004614276565b6101986020526000908152604090205481565b3480156107fc57600080fd5b506103a661080b3660046141a6565b611eb1565b34801561081c57600080fd5b506103a661082b3660046142cd565b611f69565b34801561083c57600080fd5b5060408051808201909152600781526612d2539513d25160ca1b602082015261042a565b34801561086c57600080fd5b506103a661087b366004614276565b611f94565b34801561088c57600080fd5b506103a661089b366004614276565b6001600160a01b031660009081526101936020526040902060020154610100900460ff161590565b3480156108cf57600080fd5b506104e0600081565b3480156108e457600080fd5b506103db6108f336600461451e565b611fb1565b34801561090457600080fd5b506104e06101925481565b34801561091b57600080fd5b5061092f61092a366004614276565b611fbc565b6040516103b29190614548565b34801561094857600080fd5b506103a66109573660046141a6565b61205e565b34801561096857600080fd5b506103db61097736600461458e565b6120a1565b34801561098857600080fd5b506104577f000000000000000000000000000000000000000000000000000000000000000081565b3480156109bc57600080fd5b5061042a6109cb366004614233565b6120d3565b3480156109dc57600080fd5b506104e0620d2f0081565b3480156109f357600080fd5b506103db610a023660046142cd565b612139565b348015610a1357600080fd5b506104e0600080516020614d5483398151915281565b348015610a3557600080fd5b506104577f000000000000000000000000000000000000000000000000000000000000000081565b348015610a6957600080fd5b50610457610a78366004614276565b610196602052600090815260409020546001600160a01b031681565b348015610aa057600080fd5b506103a6610aaf366004614161565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b348015610ae957600080fd5b506103a6610af83660046145f5565b61215e565b348015610b0957600080fd5b506103db610b183660046141a6565b612189565b348015610b2957600080fd5b506103db610b3836600461461b565b61234d565b348015610b4957600080fd5b506104e07f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb181565b348015610b7d57600080fd5b506104e06101955481565b348015610b9457600080fd5b506104e07f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b348015610bc857600080fd5b506104e06203f48081565b348015610bdf57600080fd5b506103db610bee366004614276565b612673565b6000610bfe82612741565b92915050565b6000610c0f83611b6f565b118015610c225750610c2081611b6f565b155b610c665760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103a3930b739b332b960811b60448201526064015b60405180910390fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610ca35750610ca3600033611f69565b610d0a5760405162461bcd60e51b815260206004820152603260248201527f4f6e6c79207468652077616c6c657420666163746f7279206f722061646d696e604482015271732063616e2074726967676572207468697360701b6064820152608401610c5d565b6001600160a01b0382811660009081526101966020526040812080546001600160a01b03191692841692909217909155610d529083908390610d4d908390611368565b612766565b506001600160a01b031660009081526101966020526040902080546001600160a01b0319169055565b600080516020614d54833981519152610d93816128d7565b610d9c83611b6f565b600003610dbc576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b16610e7d5760ff600884901c811660009081526003830160205260409020805460019286169290921b909117905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917f364b7a2e1762fd5d9cdeda6c0ea8e1be396892c015c5c917f4d164cd4968ac7691015b60405180910390a25b50505050565b6000610e8e826128e1565b506000908152606960205260409020546001600160a01b031690565b6000610eb5826117c7565b9050806001600160a01b0316836001600160a01b031603610f225760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c5d565b336001600160a01b0382161480610f3e5750610f3e8133610aaf565b610fb05760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c5d565b610fba8383612940565b505050565b6000610fcb600761215e565b8015610bfe57506001600160a01b0382166000908152610193602052604090206002015460ff161580610bfe57506001600160a01b0382166000908152610198602052604090205415801590610bfe57506001600160a01b038216600090815261019860205260409020546203f480906110459042614665565b1192915050565b600080516020614d54833981519152611064816128d7565b61106d83611b6f565b60000361108d576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b1615610e7d5760ff600884901c811660009081526003830160205260409020805460019286169290921b19909116905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917fdaf71d6bfd7a93506c86e0e5c5725808f99fe27f13af711f321edf92511e609b9101610e74565b600080516020614d54833981519152611163816128d7565b61116c83611b6f565b60000361118c576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383166000908152610198602052604090205480158015906111c05750620d2f006111be8242614665565b105b156111f057604051631093e3a360e21b81526001600160a01b038516600482015260248101829052604401610c5d565b6001600160a01b03841660009081526101936020908152604080832060ff600888901c811685526004820190935292205460019186169190911b1661130b5760ff600885901c811660009081526004830160205260409020805460019287169290921b90911790556002810180546001919060009061127390849060ff16614678565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550846001600160a01b03167f87d7acad3a8fb00ded1ae0aeaed871a89b621b17d6cd6ff8fd5c00b63394f94a85426040516112e692919061ffff929092168252602082015260400190565b60405180910390a26001600160a01b0385166000908152610198602052604090204290555b5050505050565b61131c33826129ae565b6113385760405162461bcd60e51b8152600401610c5d90614691565b610fba838383612766565b600082815260fb602052604090206001015461135e816128d7565b610fba8383612a2d565b600061137383611b6f565b82106113d55760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610c5d565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6001600160a01b038116331461146e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c5d565b6114788282612ab3565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114c45760405162461bcd60e51b8152600401610c5d906146de565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661150d600080516020614d9a833981519152546001600160a01b031690565b6001600160a01b0316146115335760405162461bcd60e51b8152600401610c5d9061472a565b61153c81612b1a565b6040805160008082526020820190925261155891839190612b44565b50565b610fba838383604051806020016040528060008152506120a1565b60405163015538b160e01b8152602060048201526013602482015272155cd948189d5c9b92d650c81a5b9cdd195859606a1b6044820152606401610c5d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115fd5760405162461bcd60e51b8152600401610c5d906146de565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611646600080516020614d9a833981519152546001600160a01b031690565b6001600160a01b03161461166c5760405162461bcd60e51b8152600401610c5d9061472a565b61167582612b1a565b61147882826001612b44565b600061168c60995490565b82106116ef5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610c5d565b6099828154811061170257611702614776565b90600052602060002001549050919050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117b45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c5d565b50600080516020614d9a83398151915290565b6000818152606760205260408120546001600160a01b031680610bfe5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c5d565b61019180549060006118388361478c565b9190505550610fba610191548484846001612caf565b610191805490600061185f8361478c565b9190505550610fba610191548484846000612caf565b600080516020614d5483398151915261188d816128d7565b8382146118b0576040516001621398b960e31b0319815260040160405180910390fd5b60c88411156118d25760405163a947d77f60e01b815260040160405180910390fd5b4260005b85811015611b2557600061019360008989858181106118f7576118f7614776565b905060200201602081019061190c9190614276565b6001600160a01b03166001600160a01b03168152602001908152602001600020905061195888888481811061194357611943614776565b905060200201602081019061077a9190614276565b6000036119655750611b13565b42600182015560005b86868481811061198057611980614776565b905060200281019061199291906147a5565b9050811015611b105760008787858181106119af576119af614776565b90506020028101906119c191906147a5565b838181106119d1576119d1614776565b9050606002018036038101906119e791906147ed565b805190915080156119f9575080602001515b15611a3757611a328a8a86818110611a1357611a13614776565b9050602002016020810190611a289190614276565b8260400151610d7b565b611afd565b80518015611a4757508060200151155b15611a8057611a328a8a86818110611a6157611a61614776565b9050602002016020810190611a769190614276565b826040015161104c565b8051158015611a90575080602001515b15611ac957611a328a8a86818110611aaa57611aaa614776565b9050602002016020810190611abf9190614276565b826040015161114b565b611afd8a8a86818110611ade57611ade614776565b9050602002016020810190611af39190614276565b8260400151612189565b50611b09600182614858565b905061196e565b50505b611b1e600182614858565b90506118d6565b50610192819055604080518681526020810183905233917f18fb8b1f79749f3894ec6b996ad0503b2dbcf19585865dba3df7683953fc450d910160405180910390a2505050505050565b60006001600160a01b038216611bd95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c5d565b506001600160a01b031660009081526068602052604090205490565b600054610100900460ff1615808015611c155750600054600160ff909116105b80611c2f5750303b158015611c2f575060005460ff166001145b611c925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c5d565b6000805460ff191660011790558015611cb5576000805461ff0019166101001790555b611cfe6040518060400160405280600881526020016712da5b9d1bc8125160c21b8152506040518060400160405280600781526020016612d2539513d25160ca1b815250612fea565b611d0661301b565b611d0e61301b565b611d1661301b565b611d1e61301b565b611d29600033612a2d565b611d41600080516020614d5483398151915233612a2d565b611d6b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e333612a2d565b611d957f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb133612a2d565b4261019255604080518082018252600781526612da5b9d1bd25160ca1b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff2acf2bff9f153ce27ec66ef28c5d61aaa06a6eac70c4c0de4bac7cb3bec0c54818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120610195558015611558576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000611ebd600761215e565b8015611f6257506001600160a01b038316600090815261019360205260409020611f0d9060040161ffff8416600881901c600090815260208390526040902054600160ff83161b16151592915050565b1580611f6257506001600160a01b0383166000908152610198602052604090205415801590611f6257506001600160a01b038316600090815261019860205260409020546203f48090611f609042614665565b115b9392505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080611fa083611b6f565b118015610bfe5750610bfe82610fbf565b611478338383613044565b6001600160a01b038116600090815261019360205260408082208151610100808252612020820190935260609360039092019281602001602082028036833701905050905060005b61010081101561205657600881901c600090815260208490526040902054600160ff83161b16151582828151811061203e5761203e614776565b91151560209283029190910190910152600101612004565b509392505050565b6001600160a01b03821660009081526101936020908152604080832060ff600886901c81168552600390910190925282205460019184169190911b161515611f62565b6120ab33836129ae565b6120c75760405162461bcd60e51b8152600401610c5d90614691565b610e7d84848484613112565b60606120de826128e1565b60006120e8613145565b905060008151116121085760405180602001604052806000815250611f62565b8061211284613165565b60405160200161212392919061486b565b6040516020818303038152906040529392505050565b600082815260fb6020526040902060010154612154816128d7565b610fba8383612ab3565b600061216d826201518061489a565b63ffffffff1661019254426121829190614665565b1092915050565b600080516020614d548339815191526121a1816128d7565b6121aa83611b6f565b6000036121ca576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383166000908152610198602052604090205480158015906121fe5750620d2f006121fc8242614665565b105b1561222e57604051631093e3a360e21b81526001600160a01b038516600482015260248101829052604401610c5d565b6001600160a01b03841660009081526101936020908152604080832060ff600888901c811685526004820190935292205460019186169190911b161561130b5760ff600885901c811660009081526004830160205260409020805460019287169290921b199091169055600281018054600191906000906122b390849060ff166148c2565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550846001600160a01b03167fe307a82882b02537e8254556f85aa0ae942a060782f1f076028687f1fd7dba18854260405161232692919061ffff929092168252602082015260400190565b60405180910390a2505050506001600160a01b031660009081526101986020526040812055565b808060400135421061237257604051630819bdcd60e01b815260040160405180910390fd5b602081018035906101949060009061238a9085614276565b6001600160a01b03166001600160a01b0316815260200190815260200160002054146123c957604051633ab3447f60e11b815260040160405180910390fd5b6123e1600080516020614d5483398151915233611f69565b6123fe57604051633b136dc160e11b815260040160405180910390fd5b60008061240e6020840184614276565b803b92509050811561243357604051631bb5d42560e31b815260040160405180910390fd5b6000610195546124b585612446906148db565b805160208083015160409384015184517fce753e2ed199e3bc0c561ccacfe9f2ebd720bf99f6d0e6854d8ec36486eb18c7818501526001600160a01b039094168486015260608401919091526080808401919091528351808403909101815260a0909201909252805191012090565b60405161190160f01b60208201526022810192909252604282015260620160408051601f1981840301815291905280516020909101209050612550816124fe6060870187614960565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612540925050506020880188614276565b6001600160a01b031691906131f7565b61256d57604051632057875960e21b815260040160405180910390fd5b61257d61077a6020870187614276565b60000361259d57604051634c3215c360e11b815260040160405180910390fd5b600161019460006125b16020890189614276565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125e09190614858565b9091555061260590506126006125f96020880188614276565b6000611368565b613258565b600061261761077a6020880188614276565b11156126365760405163493e98f360e11b815260040160405180910390fd5b6000610193816126496020890189614276565b6001600160a01b031681526020810191909152604001600090812081815560010155505050505050565b7f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb161269d816128d7565b6001600160a01b0382166000908152610193602052604081206002015460ff1690036126e757604051634d05f3e760e01b81526001600160a01b0383166004820152602401610c5d565b6001600160a01b0382166000818152610198602052604080822091909155517f8e5e87839bfd57881dc0bf377cc18550ec2476ac488bb95c3aec4792077ea79f906127359042815260200190565b60405180910390a25050565b60006001600160e01b03198216637965db0b60e01b1480610bfe5750610bfe826132fb565b826001600160a01b0316612779826117c7565b6001600160a01b03161461279f5760405162461bcd60e51b8152600401610c5d906149a6565b6001600160a01b0382166128015760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c5d565b61280e8383836001613320565b826001600160a01b0316612821826117c7565b6001600160a01b0316146128475760405162461bcd60e51b8152600401610c5d906149a6565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61155881336133d9565b6000818152606760205260409020546001600160a01b03166115585760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c5d565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612975826117c7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806129ba836117c7565b9050806001600160a01b0316846001600160a01b03161480612a0157506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80612a255750836001600160a01b0316612a1a84610e83565b6001600160a01b0316145b949350505050565b612a378282611f69565b61147857600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612a6f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612abd8282611f69565b1561147857600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3611478816128d7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612b7757610fba83613432565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612bd1575060408051601f3d908101601f19168201909252612bce918101906149eb565b60015b612c345760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c5d565b600080516020614d9a8339815191528114612ca35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c5d565b50610fba8383836134ce565b8380604001354210612cd457604051630819bdcd60e01b815260040160405180910390fd5b6020810180359061019490600090612cec9085614276565b6001600160a01b03166001600160a01b031681526020019081526020016000205414612d2b57604051633ab3447f60e11b815260040160405180910390fd5b612d43600080516020614d5483398151915233611f69565b612d6057604051633b136dc160e11b815260040160405180910390fd5b600080612d706020840184614276565b803b925090508115612d9557604051631bb5d42560e31b815260040160405180910390fd5b600061019554612da885612446906148db565b60405161190160f01b60208201526022810192909252604282015260620160408051601f1981840301815291905280516020909101209050612df1816124fe6060870187614960565b612e0e57604051632057875960e21b815260040160405180910390fd5b6000612e2061077a60208b018b614276565b1115612e3f5760405163493e98f360e11b815260040160405180910390fd5b600061019381612e5260208c018c614276565b6001600160a01b031681526020810191909152604001600090812042808255600182015560028101805461ff0019166101008a15150217905591505b87811015612ef357612eeb898983818110612eab57612eab614776565b9050602002016020810190612ec09190614a04565b600881901c60ff9081166000908152600386016020526040902080546001939092169290921b179055565b600101612e8e565b506101946000612f0660208c018c614276565b6001600160a01b0316815260208101919091526040016000908120805491612f2d8361478c565b90915550612f499050612f4360208b018b614276565b8b6134f3565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631fa27f76612f8560208c018c614276565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015612fc657600080fd5b505af1158015612fda573d6000803e3d6000fd5b5050505050505050505050505050565b600054610100900460ff166130115760405162461bcd60e51b8152600401610c5d90614a1f565b611478828261350d565b600054610100900460ff166130425760405162461bcd60e51b8152600401610c5d90614a1f565b565b816001600160a01b0316836001600160a01b0316036130a55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c5d565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61311d848484612766565b6131298484848461354d565b610e7d5760405162461bcd60e51b8152600401610c5d90614a6a565b6060604051806060016040528060268152602001614d7460269139905090565b606060006131728361364e565b60010190506000816001600160401b03811115613191576131916142f0565b6040519080825280601f01601f1916602001820160405280156131bb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846131c557509392505050565b60008060006132068585613726565b9092509050600081600481111561321f5761321f614abc565b14801561323d5750856001600160a01b0316826001600160a01b0316145b8061324e575061324e86868661376b565b9695505050505050565b6000613263826117c7565b9050613273816000846001613320565b61327c826117c7565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006001600160e01b0319821663780e9d6360e01b1480610bfe5750610bfe82613857565b6001600160a01b038416158061335457506001600160a01b0384811660009081526101966020526040902054811690841614155b80613365575061336384610fbf565b155b801561338a57506001600160a01b03841615158061338a57506001600160a01b038316155b80156133af57506001600160a01b03841615806133af57506001600160a01b03831615155b156133cd57604051632a675c2b60e11b815260040160405180910390fd5b610e7d848484846138a7565b6133e38282611f69565b611478576133f0816139d4565b6133fb8360206139e6565b60405160200161340c929190614ad2565b60408051601f198184030181529082905262461bcd60e51b8252610c5d91600401614220565b6001600160a01b0381163b61349f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c5d565b600080516020614d9a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6134d783613b81565b6000825111806134e45750805b15610fba57610e7d8383613bc1565b611478828260405180602001604052806000815250613be6565b600054610100900460ff166135345760405162461bcd60e51b8152600401610c5d90614a1f565b60656135408382614bcb565b506066610fba8282614bcb565b60006001600160a01b0384163b1561364357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613591903390899088908890600401614c8a565b6020604051808303816000875af19250505080156135cc575060408051601f3d908101601f191682019092526135c991810190614cbd565b60015b613629573d8080156135fa576040519150601f19603f3d011682016040523d82523d6000602084013e6135ff565b606091505b5080516000036136215760405162461bcd60e51b8152600401610c5d90614a6a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612a25565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061368d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106136b9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106136d757662386f26fc10000830492506010015b6305f5e10083106136ef576305f5e100830492506008015b612710831061370357612710830492506004015b60648310613715576064830492506002015b600a8310610bfe5760010192915050565b600080825160410361375c5760208301516040840151606085015160001a61375087828585613c19565b94509450505050613764565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401613795929190614cda565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516137d39190614cf3565b600060405180830381855afa9150503d806000811461380e576040519150601f19603f3d011682016040523d82523d6000602084013e613813565b606091505b509150915081801561382757506020815110155b801561324e57508051630b135d3f60e11b9061384c90830160209081019084016149eb565b149695505050505050565b60006001600160e01b031982166380ac58cd60e01b148061388857506001600160e01b03198216635b5e139f60e01b145b80610bfe57506301ffc9a760e01b6001600160e01b0319831614610bfe565b60018111156139165760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610c5d565b816001600160a01b0385166139725761396d81609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b613995565b836001600160a01b0316856001600160a01b031614613995576139958582613cdd565b6001600160a01b0384166139b1576139ac81613d7a565b61130b565b846001600160a01b0316846001600160a01b03161461130b5761130b8482613e29565b6060610bfe6001600160a01b03831660145b606060006139f5836002614d0f565b613a00906002614858565b6001600160401b03811115613a1757613a176142f0565b6040519080825280601f01601f191660200182016040528015613a41576020820181803683370190505b509050600360fc1b81600081518110613a5c57613a5c614776565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613a8b57613a8b614776565b60200101906001600160f81b031916908160001a9053506000613aaf846002614d0f565b613aba906001614858565b90505b6001811115613b32576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613aee57613aee614776565b1a60f81b828281518110613b0457613b04614776565b60200101906001600160f81b031916908160001a90535060049490941c93613b2b81614d26565b9050613abd565b508315611f625760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c5d565b613b8a81613432565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611f628383604051806060016040528060278152602001614dba60279139613e6d565b613bf08383613edb565b613bfd600084848461354d565b610fba5760405162461bcd60e51b8152600401610c5d90614a6a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613c505750600090506003613cd4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613ca4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ccd57600060019250925050613cd4565b9150600090505b94509492505050565b60006001613cea84611b6f565b613cf49190614665565b600083815260986020526040902054909150808214613d47576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b609954600090613d8c90600190614665565b6000838152609a602052604081205460998054939450909284908110613db457613db4614776565b906000526020600020015490508060998381548110613dd557613dd5614776565b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613e0d57613e0d614d3d565b6001900381819060005260206000200160009055905550505050565b6000613e3483611b6f565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6060600080856001600160a01b031685604051613e8a9190614cf3565b600060405180830381855af49150503d8060008114613ec5576040519150601f19603f3d011682016040523d82523d6000602084013e613eca565b606091505b509150915061324e86838387614074565b6001600160a01b038216613f315760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c5d565b6000818152606760205260409020546001600160a01b031615613f965760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c5d565b613fa4600083836001613320565b6000818152606760205260409020546001600160a01b0316156140095760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c5d565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606083156140e35782516000036140dc576001600160a01b0385163b6140dc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c5d565b5081612a25565b612a2583838151156140f85781518083602001fd5b8060405162461bcd60e51b8152600401610c5d9190614220565b6001600160e01b03198116811461155857600080fd5b60006020828403121561413a57600080fd5b8135611f6281614112565b80356001600160a01b038116811461415c57600080fd5b919050565b6000806040838503121561417457600080fd5b61417d83614145565b915061418b60208401614145565b90509250929050565b803561ffff8116811461415c57600080fd5b600080604083850312156141b957600080fd5b6141c283614145565b915061418b60208401614194565b60005b838110156141eb5781810151838201526020016141d3565b50506000910152565b6000815180845261420c8160208601602086016141d0565b601f01601f19169290920160200192915050565b602081526000611f6260208301846141f4565b60006020828403121561424557600080fd5b5035919050565b6000806040838503121561425f57600080fd5b61426883614145565b946020939093013593505050565b60006020828403121561428857600080fd5b611f6282614145565b6000806000606084860312156142a657600080fd5b6142af84614145565b92506142bd60208501614145565b9150604084013590509250925092565b600080604083850312156142e057600080fd5b8235915061418b60208401614145565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261431757600080fd5b81356001600160401b0380821115614331576143316142f0565b604051601f8301601f19908116603f01168101908282118183101715614359576143596142f0565b8160405283815286602085880101111561437257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156143a557600080fd5b6143ae83614145565b915060208301356001600160401b038111156143c957600080fd5b6143d585828601614306565b9150509250929050565b6000608082840312156143f157600080fd5b50919050565b60008083601f84011261440957600080fd5b5081356001600160401b0381111561442057600080fd5b6020830191508360208260051b850101111561376457600080fd5b60008060006040848603121561445057600080fd5b83356001600160401b038082111561446757600080fd5b614473878388016143df565b9450602086013591508082111561448957600080fd5b50614496868287016143f7565b9497909650939450505050565b600080600080604085870312156144b957600080fd5b84356001600160401b03808211156144d057600080fd5b6144dc888389016143f7565b909650945060208701359150808211156144f557600080fd5b50614502878288016143f7565b95989497509550505050565b8035801515811461415c57600080fd5b6000806040838503121561453157600080fd5b61453a83614145565b915061418b6020840161450e565b6020808252825182820181905260009190848201906040850190845b81811015614582578351151583529284019291840191600101614564565b50909695505050505050565b600080600080608085870312156145a457600080fd5b6145ad85614145565b93506145bb60208601614145565b92506040850135915060608501356001600160401b038111156145dd57600080fd5b6145e987828801614306565b91505092959194509250565b60006020828403121561460757600080fd5b813563ffffffff81168114611f6257600080fd5b60006020828403121561462d57600080fd5b81356001600160401b0381111561464357600080fd5b612a25848285016143df565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bfe57610bfe61464f565b60ff8181168382160190811115610bfe57610bfe61464f565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161479e5761479e61464f565b5060010190565b6000808335601e198436030181126147bc57600080fd5b8301803591506001600160401b038211156147d657600080fd5b602001915060608102360382131561376457600080fd5b6000606082840312156147ff57600080fd5b604051606081018181106001600160401b0382111715614821576148216142f0565b60405261482d8361450e565b815261483b6020840161450e565b602082015261484c60408401614194565b60408201529392505050565b80820180821115610bfe57610bfe61464f565b6000835161487d8184602088016141d0565b8351908301906148918183602088016141d0565b01949350505050565b63ffffffff8181168382160280821691908281146148ba576148ba61464f565b505092915050565b60ff8281168282160390811115610bfe57610bfe61464f565b6000608082360312156148ed57600080fd5b604051608081016001600160401b038282108183111715614910576149106142f0565b8160405261491d85614145565b83526020850135602084015260408501356040840152606085013591508082111561494757600080fd5b5061495436828601614306565b60608301525092915050565b6000808335601e1984360301811261497757600080fd5b8301803591506001600160401b0382111561499157600080fd5b60200191503681900382131561376457600080fd5b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6000602082840312156149fd57600080fd5b5051919050565b600060208284031215614a1657600080fd5b611f6282614194565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614b0a8160178501602088016141d0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614b3b8160288401602088016141d0565b01602801949350505050565b600181811c90821680614b5b57607f821691505b6020821081036143f157634e487b7160e01b600052602260045260246000fd5b601f821115610fba576000816000526020600020601f850160051c81016020861015614ba45750805b601f850160051c820191505b81811015614bc357828155600101614bb0565b505050505050565b81516001600160401b03811115614be457614be46142f0565b614bf881614bf28454614b47565b84614b7b565b602080601f831160018114614c2d5760008415614c155750858301515b600019600386901b1c1916600185901b178555614bc3565b600085815260208120601f198616915b82811015614c5c57888601518255948401946001909101908401614c3d565b5085821015614c7a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061324e908301846141f4565b600060208284031215614ccf57600080fd5b8151611f6281614112565b828152604060208201526000612a2560408301846141f4565b60008251614d058184602087016141d0565b9190910192915050565b8082028115828204841417610bfe57610bfe61464f565b600081614d3557614d3561464f565b506000190190565b634e487b7160e01b600052603160045260246000fdfe6c4079fcac94e7142d8c209744c998efe53a188aadb7e55958f7ad3ea8a1d65268747470733a2f2f6b696e746f2e78797a2f6170692f76312f6e66742d6b696e746f2d69642f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d9a00d793a43adb7f0ef31dd46734fc563515c57584292ac5aec37236c9b4a6764736f6c634300081800330000000000000000000000008a4720488ca32f1223ccfe5a087e250fe3bc5d750000000000000000000000000719d47a213149e2ef8d3f5afdada8a8e22dfc03", - "nonce": "0x4b891", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e06040523060805234801562000014575f80fd5b5060405162004dfc38038062004dfc833981016040819052620000379162000133565b6200004162000059565b6001600160a01b0391821660a0521660c05262000169565b5f54610100900460ff1615620000c55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161462000115575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200012e575f80fd5b919050565b5f806040838503121562000145575f80fd5b620001508362000117565b9150620001606020840162000117565b90509250929050565b60805160a05160c051614c3e620001be5f395f8181610a120152612e8301525f818161096b0152610c1b01525f8181611416015281816114560152818161154c0152818161158c01526116a90152614c3e5ff3fe608060405260043610610371575f3560e01c80638129fc1c116101c8578063c5c03699116100fd578063e985e9c51161009d578063f698da251161006d578063f698da2514610b21578063f72c0d8b14610b37578063fab720d214610b6a578063fb0b294014610b80575f80fd5b8063e985e9c514610a69578063ef3b490314610ab0578063efdbfaee14610acf578063f36c8f5c14610aee575f80fd5b8063d547741f116100d8578063d547741f146109c2578063d9e1063d146109e1578063de5f72fd14610a01578063e42398ad14610a34575f80fd5b8063c5c036991461095a578063c87b56dd1461098d578063d00bb535146109ac575f80fd5b8063a0406ce211610168578063b0a77c6111610143578063b0a77c61146108da578063b61f5515146108f0578063b75a3e4e1461091c578063b88d4fde1461093b575f80fd5b8063a0406ce214610867578063a217fddf146108a8578063a22cb465146108bb575f80fd5b806391d14854116101a357806391d14854146107db57806395d89b41146107fa5780639805c7d1146108295780639944f51814610848575f80fd5b80638129fc1c1461077c578063845b6b6c1461079057806386823a2c146107bc575f80fd5b80632f745c59116102a95780634f6ccce7116102495780636d7cdf6c116102195780636d7cdf6c146106f35780636ed1f4a31461071257806370a08231146107315780637ecebe0014610750575f80fd5b80634f6ccce71461068257806352d1902d146106a15780636352211e146106b55780636d785f3b146106d4575f80fd5b8063390c11ae11610284578063390c11ae146105f157806342842e0e1461063157806342966c68146106505780634f1ef2861461066f575f80fd5b80632f745c591461059457806336568abe146105b35780633659cfe6146105d2575f80fd5b806311c0154e1161031457806321442ec9116102ef57806321442ec9146104f357806323b872dd14610528578063248a9ca3146105475780632f2ff15d14610575575f80fd5b806311c0154e1461049757806318160ddd146104b65780631fbd4041146104d4575f80fd5b806306fdde031161034f57806306fdde03146103e9578063081812fc14610422578063095ea7b3146104595780630add9f7f14610478575f80fd5b806301ffc9a71461037557806304a6238f146103a957806305bdaabb146103ca575b5f80fd5b348015610380575f80fd5b5061039461038f36600461400a565b610b9f565b60405190151581526020015b60405180910390f35b3480156103b4575f80fd5b506103c86103c3366004614040565b610baf565b005b3480156103d5575f80fd5b506103c86103e4366004614082565b610d22565b3480156103f4575f80fd5b5060408051808201909152600881526712da5b9d1bc8125160c21b60208201525b6040516103a091906140f7565b34801561042d575f80fd5b5061044161043c366004614109565b610e26565b6040516001600160a01b0390911681526020016103a0565b348015610464575f80fd5b506103c8610473366004614120565b610e4b565b348015610483575f80fd5b50610394610492366004614148565b610f5f565b3480156104a2575f80fd5b506103c86104b1366004614082565b610fea565b3480156104c1575f80fd5b506099545b6040519081526020016103a0565b3480156104df575f80fd5b506103c86104ee366004614082565b6110e5565b3480156104fe575f80fd5b506104c661050d366004614148565b6001600160a01b03165f908152610193602052604090205490565b348015610533575f80fd5b506103c8610542366004614161565b6112a5565b348015610552575f80fd5b506104c6610561366004614109565b5f90815260fb602052604090206001015490565b348015610580575f80fd5b506103c861058f36600461419a565b6112d6565b34801561059f575f80fd5b506104c66105ae366004614120565b6112fa565b3480156105be575f80fd5b506103c86105cd36600461419a565b61138e565b3480156105dd575f80fd5b506103c86105ec366004614148565b61140c565b3480156105fc575f80fd5b5061039461060b366004614148565b6001600160a01b03165f9081526101936020526040902060020154610100900460ff1690565b34801561063c575f80fd5b506103c861064b366004614161565b6114e9565b34801561065b575f80fd5b506103c861066a366004614109565b611503565b6103c861067d366004614257565b611542565b34801561068d575f80fd5b506104c661069c366004614109565b61160d565b3480156106ac575f80fd5b506104c661169d565b3480156106c0575f80fd5b506104416106cf366004614109565b61174e565b3480156106df575f80fd5b506103c86106ee3660046142f7565b6117ad565b3480156106fe575f80fd5b506103c861070d3660046142f7565b6117d3565b34801561071d575f80fd5b506103c861072c36600461435a565b6117f8565b34801561073c575f80fd5b506104c661074b366004614148565b611aea565b34801561075b575f80fd5b506104c661076a366004614148565b6101946020525f908152604090205481565b348015610787575f80fd5b506103c8611b6e565b34801561079b575f80fd5b506104c66107aa366004614148565b6101986020525f908152604090205481565b3480156107c7575f80fd5b506103946107d6366004614082565b611e22565b3480156107e6575f80fd5b506103946107f536600461419a565b611ed7565b348015610805575f80fd5b5060408051808201909152600781526612d2539513d25160ca1b6020820152610415565b348015610834575f80fd5b50610394610843366004614109565b611f01565b348015610853575f80fd5b50610394610862366004614148565b611f24565b348015610872575f80fd5b50610394610881366004614148565b6001600160a01b03165f9081526101936020526040902060020154610100900460ff161590565b3480156108b3575f80fd5b506104c65f81565b3480156108c6575f80fd5b506103c86108d53660046143cf565b611f40565b3480156108e5575f80fd5b506104c66101925481565b3480156108fb575f80fd5b5061090f61090a366004614148565b611f4b565b6040516103a091906143f7565b348015610927575f80fd5b50610394610936366004614082565b611fea565b348015610946575f80fd5b506103c861095536600461443c565b61202c565b348015610965575f80fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b348015610998575f80fd5b506104156109a7366004614109565b61205e565b3480156109b7575f80fd5b506104c6620d2f0081565b3480156109cd575f80fd5b506103c86109dc36600461419a565b6120c1565b3480156109ec575f80fd5b506104c65f80516020614b7c83398151915281565b348015610a0c575f80fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b348015610a3f575f80fd5b50610441610a4e366004614148565b6101966020525f90815260409020546001600160a01b031681565b348015610a74575f80fd5b50610394610a83366004614040565b6001600160a01b039182165f908152606a6020908152604080832093909416825291909152205460ff1690565b348015610abb575f80fd5b506103c8610aca366004614082565b6120e5565b348015610ada575f80fd5b506103c8610ae936600461449f565b6122a2565b348015610af9575f80fd5b506104c67f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb181565b348015610b2c575f80fd5b506104c66101955481565b348015610b42575f80fd5b506104c67f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b348015610b75575f80fd5b506104c66203f48081565b348015610b8b575f80fd5b506103c8610b9a366004614148565b6125ba565b5f610ba982612686565b92915050565b5f610bb983611aea565b118015610bcc5750610bca81611aea565b155b610c105760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103a3930b739b332b960811b60448201526064015b60405180910390fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610c4c5750610c4c5f33611ed7565b610cb35760405162461bcd60e51b815260206004820152603260248201527f4f6e6c79207468652077616c6c657420666163746f7279206f722061646d696e604482015271732063616e2074726967676572207468697360701b6064820152608401610c07565b6001600160a01b038281165f9081526101966020526040812080546001600160a01b03191692841692909217909155610cfa9083908390610cf59083906112fa565b6126aa565b506001600160a01b03165f9081526101966020526040902080546001600160a01b0319169055565b5f80516020614b7c833981519152610d3981612819565b610d4283611aea565b5f03610d61576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383165f9081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b16610e205760ff600884901c81165f9081526003830160205260409020805460019286169290921b909117905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917f364b7a2e1762fd5d9cdeda6c0ea8e1be396892c015c5c917f4d164cd4968ac7691015b60405180910390a25b50505050565b5f610e3082612823565b505f908152606960205260409020546001600160a01b031690565b5f610e558261174e565b9050806001600160a01b0316836001600160a01b031603610ec25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c07565b336001600160a01b0382161480610ede5750610ede8133610a83565b610f505760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c07565b610f5a8383612881565b505050565b5f610f6c620d2f00611f01565b8015610ba957506001600160a01b0382165f908152610193602052604090206002015460ff161580610ba957506001600160a01b0382165f908152610198602052604090205415801590610ba957506001600160a01b0382165f90815261019860205260409020546203f48090610fe390426144e4565b1192915050565b5f80516020614b7c83398151915261100181612819565b61100a83611aea565b5f03611029576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383165f9081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b1615610e205760ff600884901c81165f9081526003830160205260409020805460019286169290921b19909116905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917fdaf71d6bfd7a93506c86e0e5c5725808f99fe27f13af711f321edf92511e609b9101610e17565b5f80516020614b7c8339815191526110fc81612819565b61110583611aea565b5f03611124576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383165f908152610198602052604090205480158015906111575750620d2f0061115582426144e4565b105b1561118757604051631093e3a360e21b81526001600160a01b038516600482015260248101829052604401610c07565b6001600160a01b0384165f9081526101936020908152604080832060ff600888901c811685526004820190935292205460019186169190911b1661129e5760ff600885901c81165f9081526004830160205260409020805460019287169290921b9091179055600281018054600191905f9061120790849060ff166144f7565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550846001600160a01b03167f87d7acad3a8fb00ded1ae0aeaed871a89b621b17d6cd6ff8fd5c00b63394f94a854260405161127a92919061ffff929092168252602082015260400190565b60405180910390a26001600160a01b0385165f908152610198602052604090204290555b5050505050565b6112af33826128ee565b6112cb5760405162461bcd60e51b8152600401610c0790614510565b610f5a8383836126aa565b5f82815260fb60205260409020600101546112f081612819565b610f5a838361296b565b5f61130483611aea565b82106113665760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610c07565b506001600160a01b03919091165f908152609760209081526040808320938352929052205490565b6001600160a01b03811633146113fe5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c07565b61140882826129f0565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114545760405162461bcd60e51b8152600401610c079061455d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661149c5f80516020614bc2833981519152546001600160a01b031690565b6001600160a01b0316146114c25760405162461bcd60e51b8152600401610c07906145a9565b6114cb81612a56565b604080515f808252602082019092526114e691839190612a80565b50565b610f5a83838360405180602001604052805f81525061202c565b60405163015538b160e01b8152602060048201526013602482015272155cd948189d5c9b92d650c81a5b9cdd195859606a1b6044820152606401610c07565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361158a5760405162461bcd60e51b8152600401610c079061455d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115d25f80516020614bc2833981519152546001600160a01b031690565b6001600160a01b0316146115f85760405162461bcd60e51b8152600401610c07906145a9565b61160182612a56565b61140882826001612a80565b5f61161760995490565b821061167a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610c07565b6099828154811061168d5761168d6145f5565b905f5260205f2001549050919050565b5f306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461173c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c07565b505f80516020614bc283398151915290565b5f818152606760205260408120546001600160a01b031680610ba95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c07565b6101918054905f6117bd83614609565b9190505550610f5a610191548484846001612bea565b6101918054905f6117e383614609565b9190505550610f5a610191548484845f612bea565b5f80516020614b7c83398151915261180f81612819565b838214611832576040516001621398b960e31b0319815260040160405180910390fd5b60c88411156118545760405163a947d77f60e01b815260040160405180910390fd5b425f5b85811015611aa0575f6101935f898985818110611876576118766145f5565b905060200201602081019061188b9190614148565b6001600160a01b03166001600160a01b031681526020019081526020015f2090506118d68888848181106118c1576118c16145f5565b905060200201602081019061074b9190614148565b5f036118e25750611a8e565b4260018201555f5b8686848181106118fc576118fc6145f5565b905060200281019061190e9190614621565b9050811015611a8b575f87878581811061192a5761192a6145f5565b905060200281019061193c9190614621565b8381811061194c5761194c6145f5565b9050606002018036038101906119629190614665565b80519091508015611974575080602001515b156119b2576119ad8a8a8681811061198e5761198e6145f5565b90506020020160208101906119a39190614148565b8260400151610d22565b611a78565b805180156119c257508060200151155b156119fb576119ad8a8a868181106119dc576119dc6145f5565b90506020020160208101906119f19190614148565b8260400151610fea565b8051158015611a0b575080602001515b15611a44576119ad8a8a86818110611a2557611a256145f5565b9050602002016020810190611a3a9190614148565b82604001516110e5565b611a788a8a86818110611a5957611a596145f5565b9050602002016020810190611a6e9190614148565b82604001516120e5565b50611a846001826146ce565b90506118ea565b50505b611a996001826146ce565b9050611857565b50610192819055604080518681526020810183905233917f18fb8b1f79749f3894ec6b996ad0503b2dbcf19585865dba3df7683953fc450d910160405180910390a2505050505050565b5f6001600160a01b038216611b535760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c07565b506001600160a01b03165f9081526068602052604090205490565b5f54610100900460ff1615808015611b8c57505f54600160ff909116105b80611ba55750303b158015611ba557505f5460ff166001145b611c085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c07565b5f805460ff191660011790558015611c29575f805461ff0019166101001790555b611c726040518060400160405280600881526020016712da5b9d1bc8125160c21b8152506040518060400160405280600781526020016612d2539513d25160ca1b815250612f15565b611c7a612f45565b611c82612f45565b611c8a612f45565b611c92612f45565b611c9c5f3361296b565b611cb35f80516020614b7c8339815191523361296b565b611cdd7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e33361296b565b611d077f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb13361296b565b4261019255604080518082018252600781526612da5b9d1bd25160ca1b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff2acf2bff9f153ce27ec66ef28c5d61aaa06a6eac70c4c0de4bac7cb3bec0c54818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c090910190925281519101206101955580156114e6575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f611e2f620d2f00611f01565b8015611ed057506001600160a01b0383165f90815261019360205260409020611e7d9060040161ffff8416600881901c5f90815260208390526040902054600160ff83161b16151592915050565b1580611ed057506001600160a01b0383165f908152610198602052604090205415801590611ed057506001600160a01b0383165f90815261019860205260409020546203f48090611ece90426144e4565b115b9392505050565b5f91825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f611f0f82620151806146e1565b61019254611f1d90426144e4565b1092915050565b5f80611f2f83611aea565b118015610ba95750610ba982610f5f565b611408338383612f6d565b6001600160a01b0381165f9081526101936020526040808220815161010080825261202082019093526060936003909201928160200160208202803683370190505090505f5b610100811015611fe257600881901c5f90815260208490526040902054600160ff83161b161515828281518110611fca57611fca6145f5565b91151560209283029190910190910152600101611f91565b509392505050565b6001600160a01b0382165f9081526101936020908152604080832060ff600886901c81168552600390910190925282205460019184169190911b161515611ed0565b61203633836128ee565b6120525760405162461bcd60e51b8152600401610c0790614510565b610e208484848461303a565b606061206982612823565b5f61207261306d565b90505f8151116120905760405180602001604052805f815250611ed0565b8061209a8461308d565b6040516020016120ab9291906146f8565b6040516020818303038152906040529392505050565b5f82815260fb60205260409020600101546120db81612819565b610f5a83836129f0565b5f80516020614b7c8339815191526120fc81612819565b61210583611aea565b5f03612124576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b0383165f908152610198602052604090205480158015906121575750620d2f0061215582426144e4565b105b1561218757604051631093e3a360e21b81526001600160a01b038516600482015260248101829052604401610c07565b6001600160a01b0384165f9081526101936020908152604080832060ff600888901c811685526004820190935292205460019186169190911b161561129e5760ff600885901c81165f9081526004830160205260409020805460019287169290921b199091169055600281018054600191905f9061220990849060ff16614726565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550846001600160a01b03167fe307a82882b02537e8254556f85aa0ae942a060782f1f076028687f1fd7dba18854260405161227c92919061ffff929092168252602082015260400190565b60405180910390a2505050506001600160a01b03165f9081526101986020526040812055565b80806040013542106122c757604051630819bdcd60e01b815260040160405180910390fd5b60208101803590610194905f906122de9085614148565b6001600160a01b03166001600160a01b031681526020019081526020015f20541461231c57604051633ab3447f60e11b815260040160405180910390fd5b6123335f80516020614b7c83398151915233611ed7565b61235057604051633b136dc160e11b815260040160405180910390fd5b5f8061235f6020840184614148565b803b92509050811561238457604051631bb5d42560e31b815260040160405180910390fd5b5f61019554612405856123969061473f565b805160208083015160409384015184517fce753e2ed199e3bc0c561ccacfe9f2ebd720bf99f6d0e6854d8ec36486eb18c7818501526001600160a01b039094168486015260608401919091526080808401919091528351808403909101815260a0909201909252805191012090565b60405161190160f01b60208201526022810192909252604282015260620160408051601f198184030181529190528051602090910120905061249f8161244e60608701876147c1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061248f925050506020880188614148565b6001600160a01b0316919061311c565b6124bc57604051632057875960e21b815260040160405180910390fd5b6124cc61074b6020870187614148565b5f036124eb57604051634c3215c360e11b815260040160405180910390fd5b60016101945f6124fe6020890189614148565b6001600160a01b03166001600160a01b031681526020019081526020015f205f82825461252b91906146ce565b9091555061254f905061254a6125446020880188614148565b5f6112fa565b61317a565b5f61256061074b6020880188614148565b111561257f5760405163493e98f360e11b815260040160405180910390fd5b5f610193816125916020890189614148565b6001600160a01b0316815260208101919091526040015f90812081815560010155505050505050565b7f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb16125e481612819565b6001600160a01b0382165f908152610193602052604081206002015460ff16900361262d57604051634d05f3e760e01b81526001600160a01b0383166004820152602401610c07565b6001600160a01b0382165f818152610198602052604080822091909155517f8e5e87839bfd57881dc0bf377cc18550ec2476ac488bb95c3aec4792077ea79f9061267a9042815260200190565b60405180910390a25050565b5f6001600160e01b03198216637965db0b60e01b1480610ba95750610ba982613219565b826001600160a01b03166126bd8261174e565b6001600160a01b0316146126e35760405162461bcd60e51b8152600401610c0790614803565b6001600160a01b0382166127455760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c07565b612752838383600161323d565b826001600160a01b03166127658261174e565b6001600160a01b03161461278b5760405162461bcd60e51b8152600401610c0790614803565b5f81815260696020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526068855283862080545f1901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6114e681336132f5565b5f818152606760205260409020546001600160a01b03166114e65760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c07565b5f81815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906128b58261174e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f806128f98361174e565b9050806001600160a01b0316846001600160a01b0316148061293f57506001600160a01b038082165f908152606a602090815260408083209388168352929052205460ff165b806129635750836001600160a01b031661295884610e26565b6001600160a01b0316145b949350505050565b6129758282611ed7565b611408575f82815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556129ac3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6129fa8282611ed7565b15611408575f82815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e361140881612819565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612ab357610f5a8361334e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612b0d575060408051601f3d908101601f19168201909252612b0a91810190614848565b60015b612b705760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c07565b5f80516020614bc28339815191528114612bde5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c07565b50610f5a8383836133e9565b8380604001354210612c0f57604051630819bdcd60e01b815260040160405180910390fd5b60208101803590610194905f90612c269085614148565b6001600160a01b03166001600160a01b031681526020019081526020015f205414612c6457604051633ab3447f60e11b815260040160405180910390fd5b612c7b5f80516020614b7c83398151915233611ed7565b612c9857604051633b136dc160e11b815260040160405180910390fd5b5f80612ca76020840184614148565b803b925090508115612ccc57604051631bb5d42560e31b815260040160405180910390fd5b5f61019554612cde856123969061473f565b60405161190160f01b60208201526022810192909252604282015260620160408051601f1981840301815291905280516020909101209050612d278161244e60608701876147c1565b612d4457604051632057875960e21b815260040160405180910390fd5b5f612d5561074b60208b018b614148565b1115612d745760405163493e98f360e11b815260040160405180910390fd5b5f61019381612d8660208c018c614148565b6001600160a01b0316815260208101919091526040015f90812042808255600182015560028101805461ff0019166101008a15150217905591505b87811015612e2557612e1d898983818110612dde57612dde6145f5565b9050602002016020810190612df3919061485f565b600881901c60ff9081165f908152600386016020526040902080546001939092169290921b179055565b600101612dc1565b506101945f612e3760208c018c614148565b6001600160a01b0316815260208101919091526040015f908120805491612e5d83614609565b90915550612e799050612e7360208b018b614148565b8b61340d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631fa27f76612eb560208c018c614148565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b158015612ef3575f80fd5b505af1158015612f05573d5f803e3d5ffd5b5050505050505050505050505050565b5f54610100900460ff16612f3b5760405162461bcd60e51b8152600401610c0790614878565b6114088282613426565b5f54610100900460ff16612f6b5760405162461bcd60e51b8152600401610c0790614878565b565b816001600160a01b0316836001600160a01b031603612fce5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c07565b6001600160a01b038381165f818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6130458484846126aa565b61305184848484613465565b610e205760405162461bcd60e51b8152600401610c07906148c3565b6060604051806060016040528060268152602001614b9c60269139905090565b60605f61309983613562565b60010190505f816001600160401b038111156130b7576130b76141bb565b6040519080825280601f01601f1916602001820160405280156130e1576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846130eb57509392505050565b5f805f6131298585613639565b90925090505f81600481111561314157613141614915565b14801561315f5750856001600160a01b0316826001600160a01b0316145b80613170575061317086868661367b565b9695505050505050565b5f6131848261174e565b9050613193815f84600161323d565b61319c8261174e565b5f83815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080545f190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b5f6001600160e01b0319821663780e9d6360e01b1480610ba95750610ba982613762565b6001600160a01b038416158061327057506001600160a01b038481165f9081526101966020526040902054811690841614155b80613281575061327f84610f5f565b155b80156132a657506001600160a01b0384161515806132a657506001600160a01b038316155b80156132cb57506001600160a01b03841615806132cb57506001600160a01b03831615155b156132e957604051632a675c2b60e11b815260040160405180910390fd5b610e20848484846137b1565b6132ff8282611ed7565b6114085761330c816138dd565b6133178360206138ef565b604051602001613328929190614929565b60408051601f198184030181529082905262461bcd60e51b8252610c07916004016140f7565b6001600160a01b0381163b6133bb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c07565b5f80516020614bc283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6133f283613a84565b5f825111806133fe5750805b15610f5a57610e208383613ac3565b611408828260405180602001604052805f815250613ae8565b5f54610100900460ff1661344c5760405162461bcd60e51b8152600401610c0790614878565b60656134588382614a13565b506066610f5a8282614a13565b5f6001600160a01b0384163b1561355757604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906134a8903390899088908890600401614ad2565b6020604051808303815f875af19250505080156134e2575060408051601f3d908101601f191682019092526134df91810190614b04565b60015b61353d573d80801561350f576040519150601f19603f3d011682016040523d82523d5f602084013e613514565b606091505b5080515f036135355760405162461bcd60e51b8152600401610c07906148c3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612963565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106135a05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106135cc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106135ea57662386f26fc10000830492506010015b6305f5e1008310613602576305f5e100830492506008015b612710831061361657612710830492506004015b60648310613628576064830492506002015b600a8310610ba95760010192915050565b5f80825160410361366d576020830151604084015160608501515f1a61366187828585613b1a565b94509450505050613674565b505f905060025b9250929050565b5f805f856001600160a01b0316631626ba7e60e01b86866040516024016136a3929190614b1f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516136e19190614b37565b5f60405180830381855afa9150503d805f8114613719576040519150601f19603f3d011682016040523d82523d5f602084013e61371e565b606091505b509150915081801561373257506020815110155b801561317057508051630b135d3f60e11b906137579083016020908101908401614848565b149695505050505050565b5f6001600160e01b031982166380ac58cd60e01b148061379257506001600160e01b03198216635b5e139f60e01b145b80610ba957506301ffc9a760e01b6001600160e01b0319831614610ba9565b60018111156138205760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610c07565b816001600160a01b03851661387b5761387681609980545f838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b61389e565b836001600160a01b0316856001600160a01b03161461389e5761389e8582613bd7565b6001600160a01b0384166138ba576138b581613c70565b61129e565b846001600160a01b0316846001600160a01b03161461129e5761129e8482613d17565b6060610ba96001600160a01b03831660145b60605f6138fd8360026146e1565b6139089060026146ce565b6001600160401b0381111561391f5761391f6141bb565b6040519080825280601f01601f191660200182016040528015613949576020820181803683370190505b509050600360fc1b815f81518110613963576139636145f5565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110613991576139916145f5565b60200101906001600160f81b03191690815f1a9053505f6139b38460026146e1565b6139be9060016146ce565b90505b6001811115613a35576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106139f2576139f26145f5565b1a60f81b828281518110613a0857613a086145f5565b60200101906001600160f81b03191690815f1a90535060049490941c93613a2e81614b52565b90506139c1565b508315611ed05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c07565b613a8d8161334e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611ed08383604051806060016040528060278152602001614be260279139613d59565b613af28383613dc3565b613afe5f848484613465565b610f5a5760405162461bcd60e51b8152600401610c07906148c3565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613b4f57505f90506003613bce565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613ba0573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116613bc8575f60019250925050613bce565b91505f90505b94509492505050565b5f6001613be384611aea565b613bed91906144e4565b5f83815260986020526040902054909150808214613c3e576001600160a01b0384165f9081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b505f9182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099545f90613c81906001906144e4565b5f838152609a602052604081205460998054939450909284908110613ca857613ca86145f5565b905f5260205f20015490508060998381548110613cc757613cc76145f5565b5f918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613cfe57613cfe614b67565b600190038181905f5260205f20015f9055905550505050565b5f613d2183611aea565b6001600160a01b039093165f908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b60605f80856001600160a01b031685604051613d759190614b37565b5f60405180830381855af49150503d805f8114613dad576040519150601f19603f3d011682016040523d82523d5f602084013e613db2565b606091505b509150915061317086838387613f58565b6001600160a01b038216613e195760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c07565b5f818152606760205260409020546001600160a01b031615613e7d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c07565b613e8a5f8383600161323d565b5f818152606760205260409020546001600160a01b031615613eee5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c07565b6001600160a01b0382165f81815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60608315613fc65782515f03613fbf576001600160a01b0385163b613fbf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c07565b5081612963565b6129638383815115613fdb5781518083602001fd5b8060405162461bcd60e51b8152600401610c0791906140f7565b6001600160e01b0319811681146114e6575f80fd5b5f6020828403121561401a575f80fd5b8135611ed081613ff5565b80356001600160a01b038116811461403b575f80fd5b919050565b5f8060408385031215614051575f80fd5b61405a83614025565b915061406860208401614025565b90509250929050565b803561ffff8116811461403b575f80fd5b5f8060408385031215614093575f80fd5b61409c83614025565b915061406860208401614071565b5f5b838110156140c45781810151838201526020016140ac565b50505f910152565b5f81518084526140e38160208601602086016140aa565b601f01601f19169290920160200192915050565b602081525f611ed060208301846140cc565b5f60208284031215614119575f80fd5b5035919050565b5f8060408385031215614131575f80fd5b61413a83614025565b946020939093013593505050565b5f60208284031215614158575f80fd5b611ed082614025565b5f805f60608486031215614173575f80fd5b61417c84614025565b925061418a60208501614025565b9150604084013590509250925092565b5f80604083850312156141ab575f80fd5b8235915061406860208401614025565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126141de575f80fd5b81356001600160401b03808211156141f8576141f86141bb565b604051601f8301601f19908116603f01168101908282118183101715614220576142206141bb565b81604052838152866020858801011115614238575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215614268575f80fd5b61427183614025565b915060208301356001600160401b0381111561428b575f80fd5b614297858286016141cf565b9150509250929050565b5f608082840312156142b1575f80fd5b50919050565b5f8083601f8401126142c7575f80fd5b5081356001600160401b038111156142dd575f80fd5b6020830191508360208260051b8501011115613674575f80fd5b5f805f60408486031215614309575f80fd5b83356001600160401b038082111561431f575f80fd5b61432b878388016142a1565b94506020860135915080821115614340575f80fd5b5061434d868287016142b7565b9497909650939450505050565b5f805f806040858703121561436d575f80fd5b84356001600160401b0380821115614383575f80fd5b61438f888389016142b7565b909650945060208701359150808211156143a7575f80fd5b506143b4878288016142b7565b95989497509550505050565b8035801515811461403b575f80fd5b5f80604083850312156143e0575f80fd5b6143e983614025565b9150614068602084016143c0565b602080825282518282018190525f9190848201906040850190845b81811015614430578351151583529284019291840191600101614412565b50909695505050505050565b5f805f806080858703121561444f575f80fd5b61445885614025565b935061446660208601614025565b92506040850135915060608501356001600160401b03811115614487575f80fd5b614493878288016141cf565b91505092959194509250565b5f602082840312156144af575f80fd5b81356001600160401b038111156144c4575f80fd5b612963848285016142a1565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ba957610ba96144d0565b60ff8181168382160190811115610ba957610ba96144d0565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161461a5761461a6144d0565b5060010190565b5f808335601e19843603018112614636575f80fd5b8301803591506001600160401b0382111561464f575f80fd5b6020019150606081023603821315613674575f80fd5b5f60608284031215614675575f80fd5b604051606081018181106001600160401b0382111715614697576146976141bb565b6040526146a3836143c0565b81526146b1602084016143c0565b60208201526146c260408401614071565b60408201529392505050565b80820180821115610ba957610ba96144d0565b8082028115828204841417610ba957610ba96144d0565b5f83516147098184602088016140aa565b83519083019061471d8183602088016140aa565b01949350505050565b60ff8281168282160390811115610ba957610ba96144d0565b5f6080823603121561474f575f80fd5b604051608081016001600160401b038282108183111715614772576147726141bb565b8160405261477f85614025565b8352602085013560208401526040850135604084015260608501359150808211156147a8575f80fd5b506147b5368286016141cf565b60608301525092915050565b5f808335601e198436030181126147d6575f80fd5b8301803591506001600160401b038211156147ef575f80fd5b602001915036819003821315613674575f80fd5b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215614858575f80fd5b5051919050565b5f6020828403121561486f575f80fd5b611ed082614071565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b5f52602160045260245ffd5b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f83516149608160178501602088016140aa565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516149918160288401602088016140aa565b01602801949350505050565b600181811c908216806149b157607f821691505b6020821081036142b157634e487b7160e01b5f52602260045260245ffd5b601f821115610f5a57805f5260205f20601f840160051c810160208510156149f45750805b601f840160051c820191505b8181101561129e575f8155600101614a00565b81516001600160401b03811115614a2c57614a2c6141bb565b614a4081614a3a845461499d565b846149cf565b602080601f831160018114614a73575f8415614a5c5750858301515b5f19600386901b1c1916600185901b178555614aca565b5f85815260208120601f198616915b82811015614aa157888601518255948401946001909101908401614a82565b5085821015614abe57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90613170908301846140cc565b5f60208284031215614b14575f80fd5b8151611ed081613ff5565b828152604060208201525f61296360408301846140cc565b5f8251614b488184602087016140aa565b9190910192915050565b5f81614b6057614b606144d0565b505f190190565b634e487b7160e01b5f52603160045260245ffdfe6c4079fcac94e7142d8c209744c998efe53a188aadb7e55958f7ad3ea8a1d65268747470733a2f2f6b696e746f2e78797a2f6170692f76312f6e66742d6b696e746f2d69642f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206a6b55ddd4c7dc01fbfc641b69786e0b1d84d49381c8e12f79778832977ca24e64736f6c634300081800330000000000000000000000008a4720488ca32f1223ccfe5a087e250fe3bc5d750000000000000000000000000719d47a213149e2ef8d3f5afdada8a8e22dfc03", + "nonce": "0x4bc73", "chainId": "0x1ecf" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x9fa20142e6e04305e74314e6670ecbf65477f470a9251ec55dc52ddcd34940b1", + "hash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", "transactionType": "CALL", "contractName": null, "contractAddress": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "function": "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)", "arguments": [ - "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 3869, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe6000000000000000000000000aa0726829d41e3c70b84bc5390cce82afc56871a00000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0xb94296c09642c3b7acdd1ec81a2ec1384197617bbefb61526bc7e9516d78013f7139a0d83d27fec0ed85d3fb67fce4ec5f2d3e27df7a2a57d0514582b19b214a1b6a170a46524db21a08fb81a8958bed4faf0ec85e45a4f1fd4ffe219f96af281b31d8e3af7b14a2d2ba1690cfa106cf9ea6b2593100def96ead0d9021a4d3bb201b)]", + "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 4414, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe60000000000000000000000004ac06254558e144c41461a319822993900ce2ee400000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0xaea147877c2fda0c0cc62387ed8b4c637406332816b49406a38aefbe4f51417a53c57516039536d7a537fbc93d4795396eb5509526a2403e7db421187845d6cf1b1c7af6f455ed5a0d0b5fbd14bac309f397476a534f89f5a3e73fe1948513b15d38a5349a709ccbd03e36cb14f38c18ad71bc1fa7114735a68828aa46e19abca01c)]", "0x660ad4B5A74130a4796B4d54BC6750Ae93C86e6c" ], "transaction": { "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "value": "0x0", - "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000f1d0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe6000000000000000000000000aa0726829d41e3c70b84bc5390cce82afc56871a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082b94296c09642c3b7acdd1ec81a2ec1384197617bbefb61526bc7e9516d78013f7139a0d83d27fec0ed85d3fb67fce4ec5f2d3e27df7a2a57d0514582b19b214a1b6a170a46524db21a08fb81a8958bed4faf0ec85e45a4f1fd4ffe219f96af281b31d8e3af7b14a2d2ba1690cfa106cf9ea6b2593100def96ead0d9021a4d3bb201b000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x4b892", + "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a000000000000000000000000000000000000000000000000000000000000113e0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe60000000000000000000000004ac06254558e144c41461a319822993900ce2ee40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082aea147877c2fda0c0cc62387ed8b4c637406332816b49406a38aefbe4f51417a53c57516039536d7a537fbc93d4795396eb5509526a2403e7db421187845d6cf1b1c7af6f455ed5a0d0b5fbd14bac309f397476a534f89f5a3e73fe1948513b15d38a5349a709ccbd03e36cb14f38c18ad71bc1fa7114735a68828aa46e19abca01c000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4bc74", "chainId": "0x1ecf" }, "additionalContracts": [], @@ -46,39 +46,39 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x5a4c58", + "cumulativeGasUsed": "0x701fe0", "logs": [ { - "address": "0xaa0726829d41e3c70b84bc5390cce82afc56871a", + "address": "0x4ac06254558e144c41461a319822993900ce2ee4", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", - "blockHash": "0x3ed1667214d9fb9c1bdcf7860d596393cbbf2851a140998bee053cb1e7e88d71", - "blockNumber": "0x98d52", - "transactionHash": "0x39a80565f32d26000864066f3d09a285965a055bafd9368ca6a52a8cdc1394d8", + "blockHash": "0x58db3b0c5c091aa597f1bf839c8ccf95aa99569432960c50de0fe737fc7b2f5c", + "blockNumber": "0xb1066", + "transactionHash": "0x01ccebe7858ca20390ac059f196a68ac024320403f999e061eefe948ce374db4", "transactionIndex": "0x1", "logIndex": "0x0", "removed": false } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000002000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000404000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x39a80565f32d26000864066f3d09a285965a055bafd9368ca6a52a8cdc1394d8", + "transactionHash": "0x01ccebe7858ca20390ac059f196a68ac024320403f999e061eefe948ce374db4", "transactionIndex": "0x1", - "blockHash": "0x3ed1667214d9fb9c1bdcf7860d596393cbbf2851a140998bee053cb1e7e88d71", - "blockNumber": "0x98d52", - "gasUsed": "0x5a4c58", + "blockHash": "0x58db3b0c5c091aa597f1bf839c8ccf95aa99569432960c50de0fe737fc7b2f5c", + "blockNumber": "0xb1066", + "gasUsed": "0x701fe0", "effectiveGasPrice": "0x5f5e100", "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null, - "gasUsedForL1": "0x1709f0", - "l1BlockNumber": "0x146258f" + "gasUsedForL1": "0x2e5b42", + "l1BlockNumber": "0x14c5af1" }, { "status": "0x1", - "cumulativeGasUsed": "0x3bef4", + "cumulativeGasUsed": "0x4f8b3", "logs": [ { "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", @@ -86,9 +86,9 @@ "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" ], "data": "0x", - "blockHash": "0x175c525db0d122bf2898f1b19893eb9b2e9d25f97da9e178957e2edeb58bc315", - "blockNumber": "0x98d53", - "transactionHash": "0x9fa20142e6e04305e74314e6670ecbf65477f470a9251ec55dc52ddcd34940b1", + "blockHash": "0xf27c443f1a7813e2bc7717d157ba4e1fe6ce899c602f65dacbb5d93fba507b43", + "blockNumber": "0xb1067", + "transactionHash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", "transactionIndex": "0x1", "logIndex": "0x0", "removed": false @@ -97,12 +97,12 @@ "address": "0xf369f78e3a0492cc4e96a90dae0728a38498e9c7", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000aa0726829d41e3c70b84bc5390cce82afc56871a" + "0x0000000000000000000000004ac06254558e144c41461a319822993900ce2ee4" ], "data": "0x", - "blockHash": "0x175c525db0d122bf2898f1b19893eb9b2e9d25f97da9e178957e2edeb58bc315", - "blockNumber": "0x98d53", - "transactionHash": "0x9fa20142e6e04305e74314e6670ecbf65477f470a9251ec55dc52ddcd34940b1", + "blockHash": "0xf27c443f1a7813e2bc7717d157ba4e1fe6ce899c602f65dacbb5d93fba507b43", + "blockNumber": "0xb1067", + "transactionHash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", "transactionIndex": "0x1", "logIndex": "0x1", "removed": false @@ -111,38 +111,38 @@ "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "topics": [ "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", - "0xc2b6864a3f82c0ddde2802fd18c924b30b80ed978102b0f3818e95ff3b0d5054", + "0xa544904d331ac631a32a8516752cb0346b1bdf27ff7cecc583a7e56bf3abde98", "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", "0x0000000000000000000000000000000000000000000000000000000000000000" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000f1d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000083bf40000000000000000000000000000000000000000000000000000000000083bf4", - "blockHash": "0x175c525db0d122bf2898f1b19893eb9b2e9d25f97da9e178957e2edeb58bc315", - "blockNumber": "0x98d53", - "transactionHash": "0x9fa20142e6e04305e74314e6670ecbf65477f470a9251ec55dc52ddcd34940b1", + "data": "0x000000000000000000000000000000000000000000000000000000000000113e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000083bdb0000000000000000000000000000000000000000000000000000000000083bdb", + "blockHash": "0xf27c443f1a7813e2bc7717d157ba4e1fe6ce899c602f65dacbb5d93fba507b43", + "blockNumber": "0xb1067", + "transactionHash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", "transactionIndex": "0x1", "logIndex": "0x2", "removed": false } ], - "logsBloom": "0x00000000000000000000004000000004400001000000000000000000000000000008000000000000000000010000000000000000000000000000020000000000008000000000000000000020000002000000000000000010000000000000000800000000020000000000000040000800002000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000400000000000000400400000000000000000000000000000002000000000000000020000000100001000000000000000000000000000000000000000020000000000000010000000000000000000004000000000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000004400000000000000000000000000000000008000000000000100000010000000000000000000000000000020000000000008000000000000000000000000002000000000000000010000000000000000800000000020000000000000000000800002000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000400000100000000400000000000000000000000000000000002000000000000000020100400100001000000000002000000000000004000000000000020000000000000010000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x9fa20142e6e04305e74314e6670ecbf65477f470a9251ec55dc52ddcd34940b1", + "transactionHash": "0xee19b10811d98a79d18ea4dfd1684702c0e30070a2e3cf428de3799c257b83f8", "transactionIndex": "0x1", - "blockHash": "0x175c525db0d122bf2898f1b19893eb9b2e9d25f97da9e178957e2edeb58bc315", - "blockNumber": "0x98d53", - "gasUsed": "0x3bef4", + "blockHash": "0xf27c443f1a7813e2bc7717d157ba4e1fe6ce899c602f65dacbb5d93fba507b43", + "blockNumber": "0xb1067", + "gasUsed": "0x4f8b3", "effectiveGasPrice": "0x5f5e100", "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "contractAddress": null, - "gasUsedForL1": "0x129e4", - "l1BlockNumber": "0x146258f" + "gasUsedForL1": "0x263bc", + "l1BlockNumber": "0x14c5af1" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1733860818, + "timestamp": 1738769861, "chain": 7887, - "commit": "cf4f7be" + "commit": "6b8dd59" } \ No newline at end of file diff --git a/script/migrations/135-upgrade_faucet_id.s.sol b/script/migrations/135-upgrade_faucet_id.s.sol index e1e4a3d3..f01d1cfe 100644 --- a/script/migrations/135-upgrade_faucet_id.s.sol +++ b/script/migrations/135-upgrade_faucet_id.s.sol @@ -14,8 +14,8 @@ contract UpgradeKintoIDScript is MigrationHelper { abi.encode(_getChainDeployment("KintoWalletFactory"), _getChainDeployment("Faucet")) ); - address impl = _deployImplementationAndUpgrade("KintoID", "V10", bytecode); - saveContractAddress("KintoIDV10-impl", impl); + address impl = _deployImplementationAndUpgrade("KintoID", "V11", bytecode); + saveContractAddress("KintoIDV11-impl", impl); KintoID kintoID = KintoID(_getChainDeployment("KintoID")); address nioGovernor = _getChainDeployment("NioGovernor"); diff --git a/test/artifacts/7887/addresses.json b/test/artifacts/7887/addresses.json index a8bac927..0cbace32 100644 --- a/test/artifacts/7887/addresses.json +++ b/test/artifacts/7887/addresses.json @@ -263,5 +263,6 @@ "CRV-impl": "0x0635494DF1e6643eEC19C4eA113b3F242519ee4E", "CRV": "0xC90000A619e56D12B9da6858509BA497B64e77eC", "BridgerL2V12-impl": "0xB0AC6E846079FA2A984298C056F304070EA24e31", - "BridgerL2V13-impl": "0xfcdF95304e95aFb40d14300d39c258dB45194734" + "BridgerL2V13-impl": "0xfcdF95304e95aFb40d14300d39c258dB45194734", + "KintoIDV11-impl": "0x4aC06254558e144C41461a319822993900cE2eE4" } \ No newline at end of file