[ { "inputs": [], "name": "OnlyOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorNotAllowed", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newRegistry", "type": "address" } ], "name": "OperatorFilterRegistryAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_newRoyalty", "type": "uint96" } ], "name": "adjustDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_newRoyalty", "type": "uint96" } ], "name": "adjustSingleTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "adminClaim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "admins", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "config", "outputs": [ { "internalType": "contract NTConfig", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getAdditionalItem", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getClaimantIdentityIdByTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCreditMultiplier", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCreditProportionOfTotalSupply", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCredits", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "identityTokenId", "type": "uint256" } ], "name": "getTokenClaimedByIdentityTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidationFunction", "outputs": [ { "internalType": "bytes4", "name": "functionSignature", "type": "bytes4" }, { "internalType": "bool", "name": "isViewFunction", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "address", "name": "validator", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "config_", "type": "address" }, { "internalType": "address", "name": "registry", "type": "address" }, { "internalType": "address", "name": "subscriptionOrRegistrantToCopy", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "migrateAsset", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operatorFilterRegistry", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "config_", "type": "address" } ], "name": "setConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "setContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "setIdAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setOpenClaimState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "functionSignature", "type": "bytes4" } ], "name": "setTransferValidationFunction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "validator", "type": "address" } ], "name": "setTransferValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "adminToToggle", "type": "address" } ], "name": "toggleAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRegistry", "type": "address" } ], "name": "updateOperatorFilterRegistryAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a0806040523461003157306080526134bc9081610036823960805181818161109b0152818161125c01526118b50152f35b5f80fdfe6080806040526004361015610012575f80fd5b5f90813560e01c90816301ffc9a7146120845750806306fdde0314611ff7578063081812fc14611fd8578063095ea7b314611e59578063098144d414611e2f5780630d705df614611dfd57806318160ddd14611dde57806319389b9514611d665780631ea6510a14611cee57806320e3dbd414611ca9578063224b2fe714611c5457806323b872dd14611c105780632a55205a14611b4c5780632f745c5914611a9e57806333724c2514611a735780633659cfe6146118905780633ceea4f4146116555780633f5c0fb81461162557806342842e0e146115ca578063429b62e51461158a5780634f0ac267146114b35780634f1ef2861461121e5780634f6ccce71461118b5780635158fb911461114657806352d1902d146110885780635d6a565314610fcb5780635db3e2c514610f615780636352211e14610f30578063672c7ae714610f0557806370a0823114610ed9578063715018a614610e7b57806375f890ab14610e2c57806379502c5514610e025780638da5cb5b14610dd857806395d89b4114610d14578063a22cb46514610c35578063a9fc664e14610bbc578063ac3f32e014610ae3578063b0ccc31e14610ab6578063b88d4fde14610a1e578063b8d1e53214610990578063c0c53b8b14610439578063c87b56dd14610405578063cd89eaff14610355578063d3b8614114610309578063e985e9c5146102b65763f2fde38b14610223575f80fd5b346102b35760203660031901126102b35761023c61214e565b6102446122c4565b6001600160a01b0381161561025f5761025c9061231d565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b80fd5b50346102b35760403660031901126102b3576102d061214e565b60406102da612164565b9260018060a01b0380931681526101006020522091165f52602052602060ff60405f2054166040519015158152f35b50346102b35760203660031901126102b35761032361214e565b61032b6122c4565b6001600160a01b031681526101c360205260408120805460ff818116151660ff1990911617905580f35b50346102b35760203660031901126102b35760043561037b610376826125fb565b61288a565b6101c45460405163cd89eaff60e01b8152600481019290925282908290602490829060181c6001600160a01b03165afa9081156103fa57826103d393926103d7575b5050604051918291602083526020830190612129565b0390f35b6103f392503d8091833e6103eb8183612242565b8101906128ee565b5f806103bd565b6040513d84823e3d90fd5b50346102b35760203660031901126102b3576103d361042560043561294c565b604051918291602083526020830190612129565b50346102b35760603660031901126102b35761045361214e565b61045b612164565b906044356001600160a01b038116900361098c5782549160ff8360081c16159283809461097f575b8015610968575b1561090c5760ff1981166001178555836108fb575b506040516104ac816121d6565b602081527f4e656f20546f6b796f205061727420323a205661756c742043617264732056326020820152604051906104e3826121d6565b60058252642722a7aa2b60d91b602083015261050e60ff875460081c1661050981612789565b612789565b8051906001600160401b0382116108e757819061052c60fb54612598565b601f811161087c575b50602090601f83116001146107f55788926107ea575b50508160011b915f199060031b1c19161760fb555b8051906001600160401b0382116107d657819061057e60fc54612598565b601f8111610768575b50602090601f83116001146106e15787926106d6575b50508160011b915f199060031b1c19161760fc555b6105e360ff855460081c166105c681612789565b6105cf81612789565b6105d881612789565b600161019155612789565b836105ec61270f565b80546001600160a01b03939093166001600160a01b03199384168117909155803b610681575b5060ff610627915460081c1661050981612789565b6106303361231d565b6101c69160018060a01b03169082541617905561064a5780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b803b156106d257816040518092633e9f1edf60e11b82528183816106ab60443530600484016127e9565b03925af180156103fa5715610612576106c3906121af565b6106ce57835f610612565b8380fd5b5080fd5b015190505f8061059d565b60fc88528793507f371f36870d18f32a11fea0f144b021c8b407bb50f8e0267c711123f454b963c091905b601f198416851061074d576001945083601f19811610610735575b505050811b0160fc556105b2565b01515f1960f88460031b161c191690555f8080610727565b8181015183556020948501946001909301929091019061070c565b60fc88529091507f371f36870d18f32a11fea0f144b021c8b407bb50f8e0267c711123f454b963c0601f840160051c810191602085106107cc575b90601f859493920160051c01905b8181106107be5750610587565b5f81558493506001016107b1565b90915081906107a3565b634e487b7160e01b86526041600452602486fd5b015190505f8061054b565b60fb89528893507f3e7257b7272bb46d49cd6019b04ddee20da7c0cb13f7c1ec3391291b2ccebabc91905b601f1984168510610861576001945083601f19811610610849575b505050811b0160fb55610560565b01515f1960f88460031b161c191690555f808061083b565b81810151835560209485019460019093019290910190610820565b60fb89529091507f3e7257b7272bb46d49cd6019b04ddee20da7c0cb13f7c1ec3391291b2ccebabc601f840160051c8101602085106108e0575b90849392915b601f830160051c820181106108d2575050610535565b5f81558594506001016108bc565b50806108b6565b634e487b7160e01b87526041600452602487fd5b61ffff19166101011784555f61049f565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b15801561048a5750600160ff82161461048a565b50600160ff821610610483565b5f80fd5b50346102b35760203660031901126102b3576109aa61214e565b61015f546001600160a01b039081163303610a0c577f9f513fe86dc42fdbac355fa4d9b1d5be7b5e6cd2df67e30db8003766568de476916020916109ec61270f565b80546001600160a01b03191691909216908117909155604051908152a180f35b604051635fc483c560e01b8152600490fd5b50346102b35760803660031901126102b357610a3861214e565b610a40612164565b90606435906044356001600160401b038311610ab25761025c93610a6b610a9f94369060040161227e565b92336001600160a01b03821603610aa4575b610a8f610a8a8433613074565b613012565b610a9a838383613139565b612e6f565b612d14565b610aad33612f5e565b610a7d565b8480fd5b50346102b357806003193601126102b35760206001600160a01b03610ad961270f565b5416604051908152f35b50346102b35760403660031901126102b357600435610b00612164565b90610b09612a12565b3383526101c360205260ff60408420541615610b7a57610b28816125fb565b610b3e57610b3591612a69565b60016101915580f35b60405162461bcd60e51b8152602060048201526014602482015273546f6b656e20616c72656164792065786973747360601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a6024820152794f6e6c792061646d696e732063616e2061646d696e436c61696d60301b6044820152606490fd5b50346102b35760203660031901126102b3577fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac610bf761214e565b610bff6122c4565b6101cb80546001600160a01b038381166001600160a01b0319831617909255604051928392610c2f9216836127e9565b0390a180f35b50346102b35760403660031901126102b357610c4f61214e565b60243590811515908183036106ce57610c6781612f5e565b6001600160a01b031691338314610cd357610ca49033855261010060205260408520845f5260205260405f209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b60405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606490fd5b50346102b357806003193601126102b35760405190808260fc5491610d3883612598565b928383526020946001918683821691825f14610db6575050600114610d7a575b5050610d6692500383612242565b6103d3604051928284938452830190612129565b9085925060fc82528282205b858310610d9e575050610d6693508201015f80610d58565b80548389018501528794508693909201918101610d86565b9250935050610d6694915060ff191682840152151560051b8201015f80610d58565b50346102b357806003193601126102b35761015f546040516001600160a01b039091168152602090f35b50346102b357806003193601126102b3576101c6546040516001600160a01b039091168152602090f35b50346102b35760203660031901126102b357610e4661214e565b610e4e6122c4565b6101c480546301000000600160b81b03191660189290921b6301000000600160b81b031691909117905580f35b50346102b357806003193601126102b357610e946122c4565b61015f80546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102b35760203660031901126102b3576020610efd610ef861214e565b6124b7565b604051908152f35b50346102b35760203660031901126102b357604060209160043581526101c983522054604051908152f35b50346102b35760203660031901126102b3576020610f4f600435612573565b6040516001600160a01b039091168152f35b50346102b35760203660031901126102b357604051635db3e2c560e01b815260048035908201528181602481734d4c756515029ae00a58c4b4b6e0c196979b2d845afa9081156103fa57826103d393926103d7575050604051918291602083526020830190612129565b50346102b35760403660031901126102b357610fe561214e565b6024356001600160601b0381169182820361098c576110026122c4565b611010612710841115612ee7565b6001600160a01b031691821561104757602060405161102e816121d6565b848152015260a01b6001600160a01b0319161760c95580f35b60405162461bcd60e51b815260206004820152601960248201527822a921991c9c189d1034b73b30b634b2103932b1b2b4bb32b960391b6044820152606490fd5b50346102b357806003193601126102b3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036110e05760206040515f805160206134678339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b50346102b35760203660031901126102b35761116061214e565b6111686122c4565b6101c580546001600160a01b0319166001600160a01b0390921691909117905580f35b50346102b35760203660031901126102b35760043561012f548110156111c4576111b6602091612617565b90546040519160031b1c8152f35b60405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608490fd5b5060403660031901126102b35761123361214e565b6024356001600160401b0381116114af5761125290369060040161227e565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692919061128c30851415612366565b6112a85f805160206134678339815191529482865416146123c7565b6112b06122c4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156112e657505061025c9150612428565b82919216604051936352d1902d60e01b85526020948581600481865afa5f9181611480575b5061136c5760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b949394036114295761137d82612428565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115801590611421575b6113b7575b50505080f35b5f8061141894604051946113ca8661220c565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c81870152660819985a5b195960ca1b604087015281519101845af4611412612643565b91612672565b505f80806113b1565b5060016113ac565b60405162461bcd60e51b815260048101849052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b90918782813d83116114a8575b6114978183612242565b810103126102b3575051905f61130b565b503d61148d565b8280fd5b50346102b35760603660031901126102b3576114cd612164565b6044356001600160601b0381169081900361098c576114ea6122c4565b6114f8612710821115612ee7565b6001600160a01b039182169182156115475760405192611517846121d6565b83526020808401928352600435855260ca9052604084209251915160a01b6001600160a01b031916911617905580f35b60405162461bcd60e51b815260206004820152601b60248201527a455243323938313a20496e76616c696420706172616d657465727360281b6044820152606490fd5b50346102b35760203660031901126102b35760209060ff906040906001600160a01b036115b561214e565b1681526101c384522054166040519015158152f35b50346102b35761025c610a9f6115df3661217a565b6001600160a01b0383163314159290919083611617575b60405193611603856121f1565b878552610aa457610a8f610a8a8433613074565b61162033612f5e565b6115f6565b50346102b357806003193601126102b35761163e6122c4565b6101c4805460ff80821615169060ff191617905580f35b50346102b35760403660031901126102b35761166f61214e565b90602480359061167d612a12565b6101c654604051637cd07e4760e01b8152602092916001600160a01b0391908216908481600481855afa9081156117fe579083918891611873575b50163303611831578360449160405192838092635683d7d160e11b8252600260048301528a888301525afa908115611826579082918791611809575b5016926040516331a9108f60e11b815285600482015281818581885afa9081156117fe5787916117d1575b5082881692839116036117925750823b15610ab25790606485928360405195869485936323b872dd60e01b8552600485015230908401528760448401525af1801561178757611774575b50610b359192612a69565b91611781610b35936121af565b91611769565b6040513d85823e3d90fd5b6064906019846040519262461bcd60e51b84526004840152820152782cb7ba903237903737ba1037bbb7103a3434b9903a37b5b2b760391b6044820152fd5b6117f19150823d84116117f7575b6117e98183612242565b8101906129f3565b5f61171f565b503d6117df565b6040513d89823e3d90fd5b6118209150853d87116117f7576117e98183612242565b5f6116f4565b6040513d88823e3d90fd5b60405162461bcd60e51b815260048101859052601b818501527a36b9b39739b2b73232b91036bab9ba1031329036b4b3b930ba37b960291b6044820152606490fd5b61188a9150863d88116117f7576117e98183612242565b5f6116b8565b50346102b3576020806003193601126106d2576118ab61214e565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166118e230821415612366565b6118fe5f805160206134678339815191529183835416146123c7565b6119066122c4565b60405191611913836121f1565b8583527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561194d5750505061025c9150612428565b83929316906040516352d1902d60e01b81528581600481865afa879181611a40575b506119d05760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b94939403611429576119e182612428565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a283835115801590611a39575b611a1d575b5050505080f35b80611a2f94604051946113ca8661220c565b505f808083611a16565b5080611a11565b9091508681813d8311611a6c575b611a588183612242565b81010312611a685751905f61196f565b8780fd5b503d611a4e565b50346102b35760203660031901126102b357604060209160043581526101ca83522054604051908152f35b50346102b35760403660031901126102b357611ab861214e565b60243591611ac5826124b7565b831015611af35760209260409260018060a01b0316825261012d845282822090825283522054604051908152f35b60405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608490fd5b50346102b35760403660031901126102b357602435600435825260ca602052604082209160405192611b7d846121d6565b546001600160a01b0380821680865260a09290921c602086015293919015611bec575b60208201516001600160601b03168381029380159085049091141715611bd85750604092612710915116918351928352046020820152f35b634e487b7160e01b81526011600452602490fd5b9050604051611bfa816121d6565b60c954848116825260a01c602082015290611ba0565b50346102b35761025c611c223661217a565b91336001600160a01b03821603611c46575b611c41610a8a8433613074565b613139565b611c4f33612f5e565b611c34565b50346102b35760203660031901126102b3576004356001600160e01b0319811681036106d257611c826122c4565b6101cb805463ffffffff60a01b191660409290921c63ffffffff60a01b1691909117905580f35b50346102b35760203660031901126102b357611cc361214e565b611ccb6122c4565b6101c680546001600160a01b0319166001600160a01b0390921691909117905580f35b50346102b35760203660031901126102b357600435611d0f610376826125fb565b6101c454604051630f53288560e11b8152600481019290925282908290602490829060181c6001600160a01b03165afa9081156103fa57826103d393926103d7575050604051918291602083526020830190612129565b50346102b35760203660031901126102b357600435611d87610376826125fb565b6101c4546040516319389b9560e01b8152600481019290925282908290602490829060181c6001600160a01b03165afa9081156103fa57826103d393926103d7575050604051918291602083526020830190612129565b50346102b357806003193601126102b357602061012f54604051908152f35b50346102b357806003193601126102b3576101cb546040805191811b6001600160e01b03191682526001602083015290f35b50346102b357806003193601126102b3576101cb546040516001600160a01b039091168152602090f35b50346102b35760403660031901126102b357611e7361214e565b60243590611e8081612f5e565b6001600160a01b038080611e9385612573565b16921691808314611f8957803314908115611f67575b5015611efc5782845260ff6020526040842080546001600160a01b03191683179055611ed483612573565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b60405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608490fd5b905084526101006020526040842033855260205260ff6040852054165f611ea9565b60405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b50346102b35760203660031901126102b3576020610f4f6004356125d0565b50346102b357806003193601126102b35760405190808260fb549161201b83612598565b928383526020946001918683821691825f14610db6575050600114612048575050610d6692500383612242565b9085925060fb82528282205b85831061206c575050610d6693508201015f80610d58565b80548389018501528794508693909201918101612054565b9050346106d25760203660031901126106d2576004356001600160e01b031981168082036106ce5760209350638c0c8fbb60e01b149081156120f7575b81156120e6575b81156120d6575b5015158152f35b6120e09150612803565b5f6120cf565b90506120f18161285e565b906120c8565b905061210281612803565b906120c1565b5f5b8381106121195750505f910152565b818101518382015260200161210a565b9060209161214281518092818552858086019101612108565b601f01601f1916010190565b600435906001600160a01b038216820361098c57565b602435906001600160a01b038216820361098c57565b606090600319011261098c576001600160a01b0390600435828116810361098c5791602435908116810361098c579060443590565b6001600160401b0381116121c257604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176121c257604052565b602081019081106001600160401b038211176121c257604052565b606081019081106001600160401b038211176121c257604052565b60c081019081106001600160401b038211176121c257604052565b90601f801991011681019081106001600160401b038211176121c257604052565b6001600160401b0381116121c257601f01601f191660200190565b81601f8201121561098c5780359061229582612263565b926122a36040519485612242565b8284526020838301011161098c57815f926020809301838601378301015290565b61015f546001600160a01b031633036122d957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61015f80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561236d57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156123ce57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b803b1561245c575f8051602061346783398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b6001600160a01b031680156124d5575f5260fe60205260405f205490565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b1561253357565b60405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606490fd5b5f90815260fd60205260409020546001600160a01b031661259581151561252c565b90565b90600182811c921680156125c6575b60208310146125b257565b634e487b7160e01b5f52602260045260245ffd5b91607f16916125a7565b6125e16125dc826125fb565b61252c565b5f90815260ff60205260409020546001600160a01b031690565b5f90815260fd60205260409020546001600160a01b0316151590565b61012f805482101561262f575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b3d1561266d573d9061265482612263565b916126626040519384612242565b82523d5f602084013e565b606090565b919290156126d45750815115612686575090565b3b1561268f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156126e75750805190602001fd5b60405162461bcd60e51b81526020600482015290819061270b906024830190612129565b0390fd5b603660405161271d8161220c565b8181527561626c652e636f6e7472616374732e73746f7261676560501b604060208301927f557064617461626c654f70657261746f7246696c74657265725570677261646584520152205f1981019081116127755790565b634e487b7160e01b5f52601160045260245ffd5b1561279057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6001600160a01b0391821681529116602082015260400190565b6001600160e01b0319811663780e9d6360e01b811491821561282457505090565b6380ac58cd60e01b8214925090821561284d575b508115612843575090565b612595915061285e565b635b5e139f60e01b1491505f612838565b63ffffffff60e01b1663152a902d60e11b811490811561287c575090565b6301ffc9a760e01b14919050565b1561289157565b60405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608490fd5b60208183031261098c578051906001600160401b03821161098c570181601f8201121561098c57805161292081612263565b9261292e6040519485612242565b8184526020828401011161098c576125959160208085019101612108565b612958610376826125fb565b6101c6546001600160a01b03908116338190036129c457505f906101c45460181c169160246040518094819363c87b56dd60e01b835260048301525afa9081156129b9575f916129a6575090565b612595913d8091833e6103eb8183612242565b6040513d5f823e3d90fd5b915f915060246040518094819363c87b56dd60e01b835260048301525afa9081156129b9575f916129a6575090565b9081602091031261098c57516001600160a01b038116810361098c5790565b6101916002815414612a245760029055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b90604091825192612a79846121f1565b5f8085526001600160a01b0383811692908315612c7e57612aa2612a9c876125fb565b15612d34565b61012f90815487855260209261013084528185872055600160401b8210156107d657612ad8828a926001612af095019055612617565b90919082549060031b91821b915f19901b1916179055565b612af9866124b7565b85855261012d83528385208186528352878486205587855261012e8352838520556101cb5490811690811515808091612c77575b612ba4575b50505092612ba296949286949260fd8694612b52612a9c610a9f9b6125fb565b84845260fe81528284208054600101905585845252812080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4612d7f565b565b612baf575b80612b32565b8491829185518581019163ffffffff60e01b90881b1682523360248201528360448201528860648201528a608482015260848152612bec81612227565b51915afa612bf8612643565b81612c47575b5015612c0b575f80612ba9565b606491519062461bcd60e51b825260048201526017602482015276151c985b9cd9995c881b9bdd08185d5d1a1bdc9a5e9959604a1b6044820152fd5b80518015925083908315612c5f575b5050505f612bfe565b612c6f9350820181019101612f46565b5f8281612c56565b5085612b2d565b6064825162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b15612d1b57565b60405162461bcd60e51b81528061270b60048201612cc1565b15612d3b57565b60405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606490fd5b909190803b15612e67576020604051809281630a85bd0160e11b9687825233600483015281612dc75f9889938460248501526044840152608060648401526084830190612129565b03926001600160a01b03165af190829082612e1f575b5050612e1157612deb612643565b80519081612e0c5760405162461bcd60e51b81528061270b60048201612cc1565b602001fd5b6001600160e01b0319161490565b909192506020813d8211612e5f575b81612e3b60209383612242565b810103126106d25751906001600160e01b0319821682036102b35750905f80612ddd565b3d9150612e2e565b505050600190565b9290803b15612ede57612ebf9160209160018060a01b039460405180958194829389630a85bd0160e11b9b8c86523360048701521660248501526044840152608060648401526084830190612129565b03915f968791165af190829082612e1f575050612e1157612deb612643565b50505050600190565b15612eee57565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b9081602091031261098c5751801515810361098c5790565b6001600160a01b0380612f6f61270f565b541680151580613008575b612f8357505050565b60206040518092633185c44d60e21b82528180612fa48830600484016127e9565b03915afa9081156129b9575f91612fda575b5015612fc0575050565b604051633b79c77360e21b81529116600482015260249150fd5b612ffb915060203d8111613001575b612ff38183612242565b810190612f46565b5f612fb6565b503d612fe9565b50803b1515612f7a565b1561301957565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b906001600160a01b03808061308884612573565b169316918383149384156130bb575b5083156130a5575b50505090565b6130b1919293506125d0565b16145f808061309f565b9093505f5261010060205260405f20825f5260205260ff60405f205416925f613097565b156130e657565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b9061315f9061314784612573565b6001600160a01b0384811693909291831684146130df565b8181169384156134155783801591825f1461337557505061012f91825492875f526101306020528360405f2055600160401b8410156121c25787612ad8856131ad9360018a98019055612617565b828603613341575b506101cb548381169182151580918192613338575b5061325d575b5050506131e7916131e086612573565b16146130df565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f84815260ff6020526040812060018060a01b03199081815416905583825260fe602052604082205f198154019055848252604082206001815401905585825260fd60205284604083209182541617905580a4565b613268575b806131d0565b5f9250908291604051602081019163ffffffff60e01b9060401b168252336024820152866044820152876064820152886084820152608481526132aa81612227565b51915afa6132b6612643565b81613309575b50156132ca57815f80613262565b60405162461bcd60e51b8152602060048201526017602482015276151c985b9cd9995c881b9bdd08185d5d1a1bdc9a5e9959604a1b6044820152606490fd5b805180159250821561331e575b50505f6132bc565b6133319250602080918301019101612f46565b5f80613316565b9050155f6131ca565b61334a906124b7565b60405f87815261012d602052818120838252602052888282205588815261012e60205220555f6131b5565b8682949203613385575b506131ad565b6133909193506124b7565b5f198101929083116127755784925f9088825261012e90602082815260409283852054908382036133de575b50508a8452838381205586845261012d8152828420918452528120555f61337f565b88865261012d808452858720858852845285872054908a885284528587208388528452808688205586528252838520555f806133bc565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209a809aaf4b55316930a2f27541075ade19ec6be0c9be5feb41f48cb03ecfda0264736f6c63430008150033