[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ERC721AddressZeroIsNotaValidOwner", "type": "error" }, { "inputs": [], "name": "ERC721ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ERC721ApproveCallerIsNotOwnerNorApprovedForAll", "type": "error" }, { "inputs": [], "name": "ERC721ApproveToCaller", "type": "error" }, { "inputs": [], "name": "ERC721InvalidTokenId", "type": "error" }, { "inputs": [], "name": "ERC721MintToTheZeroAddress", "type": "error" }, { "inputs": [], "name": "ERC721NotApprovedOrOwner", "type": "error" }, { "inputs": [], "name": "ERC721TokenAlreadyMinted", "type": "error" }, { "inputs": [], "name": "ERC721TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "ERC721TransferToNonReceiverImplementer", "type": "error" }, { "inputs": [], "name": "ERC721TransferToTheZeroAddress", "type": "error" }, { "inputs": [], "name": "RMRKChildAlreadyExists", "type": "error" }, { "inputs": [], "name": "RMRKChildIndexOutOfRange", "type": "error" }, { "inputs": [], "name": "RMRKInvalidChildReclaim", "type": "error" }, { "inputs": [], "name": "RMRKIsNotContract", "type": "error" }, { "inputs": [], "name": "RMRKMaxPendingChildrenReached", "type": "error" }, { "inputs": [], "name": "RMRKNestingTooDeep", "type": "error" }, { "inputs": [], "name": "RMRKNestingTransferToDescendant", "type": "error" }, { "inputs": [], "name": "RMRKNestingTransferToNonRMRKNestingImplementer", "type": "error" }, { "inputs": [], "name": "RMRKNestingTransferToSelf", "type": "error" }, { "inputs": [], "name": "RMRKNotApprovedOrDirectOwner", "type": "error" }, { "inputs": [], "name": "RMRKPendingChildIndexOutOfRange", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "AllChildrenRejected", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "childAddress", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "childId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "childIndex", "type": "uint256" } ], "name": "ChildAccepted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "childAddress", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "childId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "childIndex", "type": "uint256" } ], "name": "ChildProposed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "childAddress", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "childId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "childIndex", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "fromPending", "type": "bool" } ], "name": "ChildUnnested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "_message", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "DICPunchSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "DICPunchesCharged", "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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" }, { "inputs": [], "name": "BRIDGE_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DIC_CHARGER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPDATER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "acceptChild", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "parentTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "childTokenId", "type": "uint256" } ], "name": "addChild", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "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": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokens", "type": "uint256[]" }, { "internalType": "string[]", "name": "metadataURI", "type": "string[]" } ], "name": "bridgeNFTs", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "burnChild", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "chargeDICPunch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "parentTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "childOf", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "contractAddress", "type": "address" } ], "internalType": "struct IRMRKNesting.Child", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "parentTokenId", "type": "uint256" } ], "name": "childrenOf", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "contractAddress", "type": "address" } ], "internalType": "struct IRMRKNesting.Child[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dicPunch", "outputs": [ { "internalType": "contract DICPunch", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dicPunchOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "dicPunchesBalanceByTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "uint256", "name": "", "type": "uint256" } ], "name": "metadataByTokenId", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "destinationId", "type": "uint256" } ], "name": "nestTransferFrom", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "uint256", "name": "parentTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "pendingChildOf", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "contractAddress", "type": "address" } ], "internalType": "struct IRMRKNesting.Child", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "parentTokenId", "type": "uint256" } ], "name": "pendingChildrenOf", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "contractAddress", "type": "address" } ], "internalType": "struct IRMRKNesting.Child[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "childAddress", "type": "address" }, { "internalType": "uint256", "name": "childTokenId", "type": "uint256" } ], "name": "reclaimChild", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "rejectAllChildren", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "rmrkOwnerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bool", "name": "", "type": "bool" } ], "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": "to", "type": "address" }, { "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "message", "type": "string" } ], "name": "sendBagOfDICPunch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "message", "type": "string" } ], "name": "sendDICPunch", "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": "_dicPunch", "type": "address" } ], "name": "setDICPunch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "setDICPunchOwnerAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "string[]", "name": "metadataURIs", "type": "string[]" } ], "name": "setNFTsMetadata", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bool", "name": "isPending", "type": "bool" } ], "name": "unnestChild", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620040e3380380620040e3833981016040819052620000349162000260565b81818181600062000046838262000359565b50600162000055828262000359565b5050505050620000746200006e6200008960201b60201c565b6200008d565b62000081600033620000df565b505062000425565b3390565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620000eb8282620000ef565b5050565b6000828152600c602090815260408083206001600160a01b038516845290915290205460ff16620000eb576000828152600c602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200014f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001bb57600080fd5b81516001600160401b0380821115620001d857620001d862000193565b604051601f8301601f19908116603f0116810190828211818310171562000203576200020362000193565b816040528381526020925086838588010111156200022057600080fd5b600091505b8382101562000244578582018301518183018401529082019062000225565b83821115620002565760008385830101525b9695505050505050565b600080604083850312156200027457600080fd5b82516001600160401b03808211156200028c57600080fd5b6200029a86838701620001a9565b93506020850151915080821115620002b157600080fd5b50620002c085828601620001a9565b9150509250929050565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000193565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613cae80620004356000396000f3fe608060405234801561001057600080fd5b50600436106102ba5760003560e01c8063666d36d311610182578063b3556b8e116100e9578063da3a163f116100a2578063e7468f721161007c578063e7468f72146106cc578063e985e9c5146106df578063ed45ca9e146106f2578063f2fde38b1461070557600080fd5b8063da3a163f14610693578063e4d5127e146106a6578063e5f2e9e4146106b957600080fd5b8063b3556b8e1461060d578063b5bfddea14610620578063b88d4fde14610647578063c87b56dd1461065a578063d24009511461066d578063d547741f1461068057600080fd5b806395d89b411161013b57806395d89b4114610576578063a217fddf1461057e578063a22cb46514610586578063a898e36414610599578063ac68d94b146105ac578063afc523f6146105d357600080fd5b8063666d36d3146105115780636f19951c1461052457806370a0823114610537578063715018a61461054a5780638da5cb5b1461055257806391d148541461056357600080fd5b806336568abe1161022657806351828dc9116101df57806351828dc9146104925780635a481474146104b257806360e45f66146104c5578063624fae46146104d857806363383bb5146104eb5780636352211e146104fe57600080fd5b806336568abe146103ff5780633fcf01f11461041257806342842e0e1461042557806342966c681461043857806344ec93441461044b57806347e633801461046b57600080fd5b806323b872dd1161027857806323b872dd14610362578063248a9ca3146103755780632f2ff15d146103a65780632f32f937146103b95780632fb59acf146103d957806335440faf146103ec57600080fd5b8062db545c146102bf57806301ffc9a7146102ef57806306fdde0314610312578063081812fc14610327578063095ea7b31461033a57806322321e611461034f575b600080fd5b6010546102d2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6103026102fd3660046130f8565b610718565b60405190151581526020016102e6565b61031a610785565b6040516102e6919061316d565b6102d2610335366004613180565b610817565b61034d6103483660046131ae565b61085d565b005b61034d61035d3660046131e8565b6108e9565b61034d610370366004613232565b610906565b610398610383366004613180565b6000908152600c602052604090206001015490565b6040519081526020016102e6565b61034d6103b4366004613273565b610921565b6103cc6103c73660046132a3565b610947565b6040516102e691906132c5565b61034d6103e73660046132e5565b6109e0565b61034d6103fa3660046132a3565b610b9d565b61034d61040d366004613273565b610cda565b600f546102d2906001600160a01b031681565b61034d610433366004613232565b610d5d565b61034d610446366004613180565b610d78565b61045e610459366004613180565b610eab565b6040516102e6919061330c565b6103987f73e573f9566d61418a34d5de3ff49360f9c51fec37f7486551670290f6285dab81565b6103986104a0366004613180565b600e6020526000908152604090205481565b61031a6104c0366004613180565b610f2a565b61034d6104d336600461353a565b610fc4565b61034d6104e636600461359e565b61108d565b61034d6104f936600461359e565b6110d9565b6102d261050c366004613180565b61118c565b61034d61051f3660046132a3565b61121c565b61045e610532366004613180565b611271565b61039861054536600461359e565b6112e1565b61034d611326565b600b546001600160a01b03166102d2565b610302610571366004613273565b61135c565b61031a611387565b610398600081565b61034d6105943660046135bb565b611396565b6103cc6105a73660046132a3565b61142b565b6103987f29da52c410f71fe1d25b4b2f0166761957d782ca5e76b4bd1383d7291bd7076581565b6105e66105e1366004613180565b611488565b604080516001600160a01b03909416845260208401929092521515908201526060016102e6565b61034d61061b366004613180565b611509565b6103987f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61034d6106553660046135e9565b611559565b61031a610668366004613180565b61156f565b61034d61067b366004613669565b611677565b61034d61068e366004613273565b611685565b61034d6106a1366004613669565b6116ab565b61034d6106b43660046136c0565b6116b9565b61034d6106c7366004613736565b6117e9565b61034d6106da36600461377c565b6117ff565b6103026106ed3660046137d6565b611932565b61034d6107003660046132a3565b611960565b61034d61071336600461359e565b611ab6565b60006001600160e01b031982166301ffc9a760e01b148061074957506001600160e01b031982166380ac58cd60e01b145b8061076457506001600160e01b03198216635b5e139f60e01b145b8061077f57506001600160e01b0319821663c71287ad60e01b145b92915050565b60606000805461079490613804565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090613804565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b600061082282611b51565b60008281526004602052604081209061083a8461118c565b6001600160a01b0390811682526020820192909252604001600020541692915050565b60006108688261118c565b9050806001600160a01b0316836001600160a01b03160361089c57604051630591db6d60e01b815260040160405180910390fd5b336001600160a01b038216148015906108bc57506108ba8133611932565b155b156108da57604051634c12315960e11b815260040160405180910390fd5b6108e48383611b89565b505050565b836108f381611c02565b6108ff85858585611c29565b5050505050565b8061091081611db9565b61091b848484611de0565b50505050565b6000828152600c602052604090206001015461093d8133611ee0565b6108e48383611f44565b60408051808201909152600080825260208201528161096584611271565b51116109845760405163653e642560e11b815260040160405180910390fd5b60008381526007602052604081208054849081106109a4576109a461383e565b60009182526020918290206040805180820190915260029092020180548252600101546001600160a01b03169181019190915291505092915050565b826109ea81611c02565b6001600160a01b038316600090815260096020908152604080832085845290915290205415610a2c57604051633ece094960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600a6020908152604080832085845290915290205415610a6e57604051633ece094960e01b815260040160405180910390fd5b6000806000856001600160a01b031663afc523f6866040518263ffffffff1660e01b8152600401610aa191815260200190565b606060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190613854565b919450925090506001600160a01b03831630141580610b015750868214155b80610b0a575080155b15610b2857604051633ece094960e01b815260040160405180910390fd5b60408051632142170760e11b81523060048201523360248201526044810187905290516001600160a01b038816916342842e0e91606480830192600092919082900301818387803b158015610b7c57600080fd5b505af1158015610b90573d6000803e3d6000fd5b5050505050505050505050565b610ba682611b51565b333b610bc55760405163b9d3114760e01b815260040160405180910390fd5b60006040518060400160405280838152602001610bdf3390565b6001600160a01b0316905290506000610bf784610eab565b5190506080811015610c7657602082810180516001600160a01b039081166000908152600a84526040808220875183528552808220600190819055898352600886529082208054808301825590835294909120865160029095020193845591519290910180546001600160a01b03191692909116919091179055610c8f565b60405163a53c8c0560e01b815260040160405180910390fd5b82336001600160a01b0316857fdfb23fa68267b8a66ca315a36a29889d77a420b34073629782071a4cdd02ba9784604051610ccc91815260200190565b60405180910390a450505050565b6001600160a01b0381163314610d4f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610d598282611fca565b5050565b6108e483838360405180602001604052806000815250611559565b80610d8281611db9565b6000610d8d83611488565b505090506000610d9c8461118c565b6001600160a01b03831660009081526003602052604081208054929350600192909190610dca9084906138ad565b90915550610dd59050565b610de0600085611b89565b6000610deb85611271565b805190915060005b81811015610e0d57610e058782612031565b600101610df3565b50600086815260066020908152604080832083815560010180546001600160a81b031916905560089091528120610e439161309b565b6000868152600760205260408120610e5a9161309b565b60008681526004602090815260408083206001600160a01b038716808552925280832080546001600160a01b03191690555188929190600080516020613c59833981519152908390a4505050505050565b6000818152600860209081526040808320805482518185028101850190935280835260609493849084015b82821015610f1e5760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101610ed6565b50929695505050505050565b600d6020526000908152604090208054610f4390613804565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6f90613804565b8015610fbc5780601f10610f9157610100808354040283529160200191610fbc565b820191906000526020600020905b815481529060010190602001808311610f9f57829003601f168201915b505050505081565b7f73e573f9566d61418a34d5de3ff49360f9c51fec37f7486551670290f6285dab610fef8133611ee0565b81518351146110105760405162461bcd60e51b8152600401610d46906138c4565b60005b83518161ffff16101561091b57828161ffff16815181106110365761103661383e565b6020026020010151600d6000868461ffff16815181106110585761105861383e565b60200260200101518152602001908152602001600020908161107a9190613953565b508061108581613a13565b915050611013565b600b546001600160a01b031633146110b75760405162461bcd60e51b8152600401610d4690613a34565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146111035760405162461bcd60e51b8152600401610d4690613a34565b6001600160a01b03811661116a5760405162461bcd60e51b815260206004820152602860248201527f64696350756e63684f776e65722063616e6e6f7420626520746865207a65726f604482015267206164647265737360c01b6064820152608401610d46565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008061119b85611488565b9250925092508015611213576040516331a9108f60e11b8152600481018390526001600160a01b03841690636352211e90602401602060405180830381865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112109190613a69565b92505b50909392505050565b8161122681611db9565b8161123084611271565b511161124f5760405163653e642560e11b815260040160405180910390fd5b6112598383612031565b60008381526007602052604090206108e490836120ca565b6000818152600760209081526040808320805482518185028101850190935280835260609493849084018215610f1e5760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101610ed6565b60006001600160a01b03821661130a57604051633bb9143360e11b815260040160405180910390fd5b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b031633146113505760405162461bcd60e51b8152600401610d4690613a34565b61135a6000612184565b565b6000918252600c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606001805461079490613804565b6001600160a01b03821633036113bf57604051630b7b99b960e21b815260040160405180910390fd5b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60408051808201909152600080825260208201528161144984610eab565b51116114685760405163da22687f60e01b815260040160405180910390fd5b60008381526008602052604081208054849081106109a4576109a461383e565b60008181526006602090815260408083208151606081018352815481526001909101546001600160a01b038116938201849052600160a01b900460ff1615159181019190915282918291906114f05760405163089ba7e160e41b815260040160405180910390fd5b6020810151815160409092015190969195509350915050565b8061151381611c02565b600082815260086020526040812061152a9161309b565b60405182907f8ac4a0d65950c3e40448afb2260e2e0ec36ea15644d9b39e37e85472e5f9445190600090a25050565b8161156381611db9565b6108ff858585856121d6565b6000818152600660205260409020600101546060906001600160a01b03166115d95760405162461bcd60e51b815260206004820152601f60248201527f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e006044820152606401610d46565b6000828152600d6020526040902080546115f290613804565b80601f016020809104026020016040519081016040528092919081815260200182805461161e90613804565b801561166b5780601f106116405761010080835404028352916020019161166b565b820191906000526020600020905b81548152906001019060200180831161164e57829003601f168201915b50505050509050919050565b61091b84848484600561220a565b6000828152600c60205260409020600101546116a18133611ee0565b6108e48383611fca565b61091b84848484600161220a565b7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6116e48133611ee0565b8251825161ffff82161461173a5760405162461bcd60e51b815260206004820152601860248201527f4d65746164617461206c656e677468206d69736d6174636800000000000000006044820152606401610d46565b60005b8161ffff168161ffff1610156117e157838161ffff16815181106117635761176361383e565b6020026020010151600d6000878461ffff16815181106117855761178561383e565b6020026020010151815260200190815260200160002090816117a79190613953565b506117cf86868361ffff16815181106117c2576117c261383e565b6020026020010151612432565b806117d981613a13565b91505061173d565b505050505050565b816117f381611db9565b6108ff8585858561244c565b7f29da52c410f71fe1d25b4b2f0166761957d782ca5e76b4bd1383d7291bd7076561182a8133611ee0565b815183511461184b5760405162461bcd60e51b8152600401610d46906138c4565b60005b83518161ffff16101561091b576000848261ffff16815181106118735761187361383e565b602002602001015190506000848361ffff16815181106118955761189561383e565b6020908102919091010151601054600f549192506118c1916001600160a01b039081169116308461261f565b6000828152600e6020526040812080548392906118df908490613a86565b909155505060408051838152602081018390527f9cad7b45456c1c84ccfbc4683e797ff3245b5174c09091bd2cc7b858e25bebbd910160405180910390a15050808061192a90613a13565b91505061184e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b8161196a81611c02565b8161197484610eab565b51116119935760405163da22687f60e01b815260040160405180910390fd5b600061199f848461142b565b6020808201516001600160a01b03166000908152600982526040808220845183529092522054909150156119e65760405163188a497360e01b815260040160405180910390fd5b60008481526008602052604090206119fe90846120ca565b602081810180516001600160a01b039081166000908152600a84526040808220865183528552808220829055888252600785528082208054600180820183559184528684208851600290920201908155855190820180546001600160a01b03191691861691821790558352600986528183208751845286529181902091909155845192519051878152929391169187917f368600bdce8b2f9bdb235c221e348573e2f531747cb749ecf6cf43fa0e9d8fe89101610ccc565b600b546001600160a01b03163314611ae05760405162461bcd60e51b8152600401610d4690613a34565b6001600160a01b038116611b455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d46565b611b4e81612184565b50565b6000818152600660205260409020600101546001600160a01b0316611b4e5760405163089ba7e160e41b815260040160405180910390fd5b6000611b948261118c565b60008381526004602090815260408083206001600160a01b038581168086529190935281842080546001600160a01b031916938916938417905590519394508593919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a4505050565b611c0c3382612679565b611b4e576040516302728a9d60e41b815260040160405180910390fd5b60408051808201909152600080825260208201528115611c9157611c4d858561142b565b6020808201516001600160a01b03166000908152600a82526040808220845183528352808220829055888252600890925220909150611c8c90856120ca565b611cda565b611c9b8585610947565b6020808201516001600160a01b03166000908152600982526040808220845183528352808220829055888252600790925220909150611cda90856120ca565b6001600160a01b03831615611d5a5760208101518151604051632142170760e11b81523060048201526001600160a01b03868116602483015260448201929092529116906342842e0e90606401600060405180830381600087803b158015611d4157600080fd5b505af1158015611d55573d6000803e3d6000fd5b505050505b806000015181602001516001600160a01b0316867fc80f74751c3fe8525f255ff6e710fc9ffe8cc950bd96642622f1ccfeae397aa18786604051611daa9291909182521515602082015260400190565b60405180910390a45050505050565b611dc333826126d8565b611b4e576040516345f3c98360e11b815260040160405180910390fd5b6000611deb82611488565b50509050836001600160a01b0316816001600160a01b031614611e215760405163e146af6f60e01b815260040160405180910390fd5b6001600160a01b038316611e48576040516338f646ff60e21b815260040160405180910390fd5b6001600160a01b0384166000908152600360205260408120805460019290611e719084906138ad565b90915550611e849050826000858161275b565b6001600160a01b0383166000908152600360205260408120805460019290611ead908490613a86565b909155505060405182906001600160a01b038086169190871690600080516020613c5983398151915290600090a461091b565b611eea828261135c565b610d5957611f02816001600160a01b031660146127d2565b611f0d8360206127d2565b604051602001611f1e929190613a9e565b60408051601f198184030181529082905262461bcd60e51b8252610d469160040161316d565b611f4e828261135c565b610d59576000828152600c602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611f863390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611fd4828261135c565b15610d59576000828152600c602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061203d8383610947565b602080820180516001600160a01b0390811660009081526009845260408082208651835290945283812055905183519251630852cd8d60e31b815293945016916342966c68916120939160040190815260200190565b600060405180830381600087803b1580156120ad57600080fd5b505af11580156120c1573d6000803e3d6000fd5b50505050505050565b815482906120da906001906138ad565b815481106120ea576120ea61383e565b906000526020600020906002020182828154811061210a5761210a61383e565b600091825260209091208254600290920201908155600191820154910180546001600160a01b0319166001600160a01b03909216919091179055815482908061215557612155613b13565b60008281526020812060026000199093019283020190815560010180546001600160a01b031916905590555050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6121e1848484611de0565b6121ed84848484612975565b61091b5760405163bcb5663760e01b815260040160405180910390fd5b336122148461118c565b6001600160a01b0316146122765760405162461bcd60e51b815260206004820152602360248201527f4163636f756e742066726f6d20646f65736e2774206f776e207468697320746f60448201526235b2b760e91b6064820152608401610d46565b846001600160a01b03166122898561118c565b6001600160a01b0316146122e95760405162461bcd60e51b815260206004820152602160248201527f4163636f756e7420746f20646f65736e2774206f776e207468697320746f6b656044820152603760f91b6064820152608401610d46565b6000838152600e60205260409020548111156123535760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420646f65736e2774206861766520656e6f75676820444943506044820152630eadcc6d60e31b6064820152608401610d46565b61011861235f83612a77565b11156123a35760405162461bcd60e51b81526020600482015260136024820152724d65737361676520697320746f6f206c6f6e6760681b6044820152606401610d46565b6000848152600e6020526040812080548392906123c1908490613a86565b90915550506000838152600e6020526040812080548392906123e49084906138ad565b90915550506040517f60b5a1148540e2077e5d346a1e575c34a1421289030d69a0ea2bcd963d396b959061242390339087908990889088908890613b29565b60405180910390a15050505050565b610d59828260405180602001604052806000815250612b71565b600061245783611488565b50509050846001600160a01b0316816001600160a01b03161461248d5760405163e146af6f60e01b815260040160405180910390fd5b6001600160a01b0384166124b4576040516338f646ff60e21b815260040160405180910390fd5b6001600160a01b038416301480156124cb57508183145b156124e9576040516304ae5fdd60e41b815260040160405180910390fd5b6001600160a01b0384163b6125115760405163b9d3114760e01b815260040160405180910390fd5b6040516301ffc9a760e01b815263c71287ad60e01b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa15801561255c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125809190613b76565b61259d57604051636464a3e360e11b815260040160405180910390fd5b6125a8838584612ba5565b6001600160a01b03851660009081526003602052604081208054600192906125d19084906138ad565b909155506125e49050838386600161275b565b6001600160a01b038416600090815260036020526040812080546001929061260d908490613a86565b909155506108ff905083838787612c96565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261091b908590612d2f565b6000806126858361118c565b9050806001600160a01b0316846001600160a01b031614806126ac57506126ac8185611932565b806126d05750836001600160a01b03166126c584610817565b6001600160a01b0316145b949350505050565b60008060006126e684611488565b50915091508060001461270957506001600160a01b03848116911614905061077f565b816001600160a01b0316856001600160a01b0316148061272e575061272e8286611932565b806127525750846001600160a01b031661274785610817565b6001600160a01b0316145b95945050505050565b604080516060810182528481526001600160a01b03808516602080840191825285151584860190815260008a815260069092529481209351845590516001909301805494511515600160a01b026001600160a81b03199095169390921692909217929092179091556127cd9085611b89565b61091b565b606060006127e1836002613b93565b6127ec906002613a86565b67ffffffffffffffff8111156128045761280461336c565b6040519080825280601f01601f19166020018201604052801561282e576020820181803683370190505b509050600360fc1b816000815181106128495761284961383e565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106128785761287861383e565b60200101906001600160f81b031916908160001a905350600061289c846002613b93565b6128a7906001613a86565b90505b600181111561291f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128db576128db61383e565b1a60f81b8282815181106128f1576128f161383e565b60200101906001600160f81b031916908160001a90535060049490941c9361291881613bb2565b90506128aa565b50831561296e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d46565b9392505050565b60006001600160a01b0384163b15612a6c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906129b9903390899088908890600401613bc9565b6020604051808303816000875af19250505080156129f4575060408051601f3d908101601f191682019092526129f191810190613c06565b60015b612a52573d808015612a22576040519150601f19603f3d011682016040523d82523d6000602084013e612a27565b606091505b508051600003612a4a5760405163bcb5663760e01b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506126d0565b506001949350505050565b8051600090819081905b80821015611213576000858381518110612a9d57612a9d61383e565b01602001516001600160f81b0319169050600160ff1b811015612acc57612ac5600184613a86565b9250612b5e565b600760fd1b6001600160f81b031982161015612aed57612ac5600284613a86565b600f60fc1b6001600160f81b031982161015612b0e57612ac5600384613a86565b601f60fb1b6001600160f81b031982161015612b2f57612ac5600484613a86565b603f60fa1b6001600160f81b031982161015612b5057612ac5600584613a86565b612b5b600684613a86565b92505b5082612b6981613c23565b935050612a81565b612b7b8383612e01565b612b886000848484612975565b6108e45760405163bcb5663760e01b815260040160405180910390fd5b60005b6064811015612c7c576000806000856001600160a01b031663afc523f6866040518263ffffffff1660e01b8152600401612be491815260200190565b606060405180830381865afa158015612c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c259190613854565b92509250925080612c395750505050505050565b6001600160a01b03831630148015612c5057508682145b15612c6e57604051630399e00d60e21b815260040160405180910390fd5b509093509150600101612ba8565b5060405163ccc8bb6b60e01b815260040160405180910390fd5b6040516335440faf60e01b8152600481018490526024810185905281906001600160a01b038216906335440faf90604401600060405180830381600087803b158015612ce157600080fd5b505af1158015612cf5573d6000803e3d6000fd5b5050505084826001600160a01b0316846001600160a01b0316600080516020613c5983398151915260405160405180910390a45050505050565b6000612d84826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e379092919063ffffffff16565b8051909150156108e45780806020019051810190612da29190613b76565b6108e45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d46565b612e0d82826000612e46565b60405181906001600160a01b03841690600090600080516020613c59833981519152908290a45050565b60606126d08484600085612f3a565b6001600160a01b038316612e6d576040516325bd6bd360e01b815260040160405180910390fd5b6000828152600660205260409020600101546001600160a01b031615612ea65760405163c5a8d37160e01b815260040160405180910390fd5b6001600160a01b0383166000908152600360205260408120805460019290612ecf908490613a86565b9091555050604080516060810182528281526001600160a01b039485166020808301918252931515828401908152600095865260069094529190932092518355516001909201805491511515600160a01b026001600160a81b03199092169290931691909117179055565b606082471015612f9b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d46565b843b612fe95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d46565b600080866001600160a01b031685876040516130059190613c3c565b60006040518083038185875af1925050503d8060008114613042576040519150601f19603f3d011682016040523d82523d6000602084013e613047565b606091505b5091509150613057828286613062565b979650505050505050565b6060831561307157508161296e565b8251156130815782518084602001fd5b8160405162461bcd60e51b8152600401610d46919061316d565b5080546000825560020290600052602060002090810190611b4e91905b808211156130de57600081556001810180546001600160a01b03191690556002016130b8565b5090565b6001600160e01b031981168114611b4e57600080fd5b60006020828403121561310a57600080fd5b813561296e816130e2565b60005b83811015613130578181015183820152602001613118565b8381111561091b5750506000910152565b60008151808452613159816020860160208601613115565b601f01601f19169290920160200192915050565b60208152600061296e6020830184613141565b60006020828403121561319257600080fd5b5035919050565b6001600160a01b0381168114611b4e57600080fd5b600080604083850312156131c157600080fd5b82356131cc81613199565b946020939093013593505050565b8015158114611b4e57600080fd5b600080600080608085870312156131fe57600080fd5b8435935060208501359250604085013561321781613199565b91506060850135613227816131da565b939692955090935050565b60008060006060848603121561324757600080fd5b833561325281613199565b9250602084013561326281613199565b929592945050506040919091013590565b6000806040838503121561328657600080fd5b82359150602083013561329881613199565b809150509250929050565b600080604083850312156132b657600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b0316908201526040810161077f565b6000806000606084860312156132fa57600080fd5b83359250602084013561326281613199565b602080825282518282018190526000919060409081850190868401855b8281101561335f5761334f848351805182526020908101516001600160a01b0316910152565b9284019290850190600101613329565b5091979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156133ab576133ab61336c565b604052919050565b600067ffffffffffffffff8211156133cd576133cd61336c565b5060051b60200190565b600082601f8301126133e857600080fd5b813560206133fd6133f8836133b3565b613382565b82815260059290921b8401810191818101908684111561341c57600080fd5b8286015b848110156134375780358352918301918301613420565b509695505050505050565b600067ffffffffffffffff83111561345c5761345c61336c565b61346f601f8401601f1916602001613382565b905082815283838301111561348357600080fd5b828260208301376000602084830101529392505050565b600082601f8301126134ab57600080fd5b61296e83833560208501613442565b600082601f8301126134cb57600080fd5b813560206134db6133f8836133b3565b82815260059290921b840181019181810190868411156134fa57600080fd5b8286015b8481101561343757803567ffffffffffffffff81111561351e5760008081fd5b61352c8986838b010161349a565b8452509183019183016134fe565b6000806040838503121561354d57600080fd5b823567ffffffffffffffff8082111561356557600080fd5b613571868387016133d7565b9350602085013591508082111561358757600080fd5b50613594858286016134ba565b9150509250929050565b6000602082840312156135b057600080fd5b813561296e81613199565b600080604083850312156135ce57600080fd5b82356135d981613199565b91506020830135613298816131da565b600080600080608085870312156135ff57600080fd5b843561360a81613199565b9350602085013561361a81613199565b925060408501359150606085013567ffffffffffffffff81111561363d57600080fd5b8501601f8101871361364e57600080fd5b61365d87823560208401613442565b91505092959194509250565b6000806000806080858703121561367f57600080fd5b843561368a81613199565b93506020850135925060408501359150606085013567ffffffffffffffff8111156136b457600080fd5b61365d8782880161349a565b6000806000606084860312156136d557600080fd5b83356136e081613199565b9250602084013567ffffffffffffffff808211156136fd57600080fd5b613709878388016133d7565b9350604086013591508082111561371f57600080fd5b5061372c868287016134ba565b9150509250925092565b6000806000806080858703121561374c57600080fd5b843561375781613199565b9350602085013561376781613199565b93969395505050506040820135916060013590565b6000806040838503121561378f57600080fd5b823567ffffffffffffffff808211156137a757600080fd5b6137b3868387016133d7565b935060208501359150808211156137c957600080fd5b50613594858286016133d7565b600080604083850312156137e957600080fd5b82356137f481613199565b9150602083013561329881613199565b600181811c9082168061381857607f821691505b60208210810361383857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60008060006060848603121561386957600080fd5b835161387481613199565b60208501516040860151919450925061388c816131da565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b6000828210156138bf576138bf613897565b500390565b60208082526029908201527f546f6b656e49647320616e64206d6574616461746155524973206c656e677468604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b601f8211156108e457600081815260208120601f850160051c810160208610156139345750805b601f850160051c820191505b818110156117e157828155600101613940565b815167ffffffffffffffff81111561396d5761396d61336c565b6139818161397b8454613804565b8461390d565b602080601f8311600181146139b6576000841561399e5750858301515b600019600386901b1c1916600185901b1785556117e1565b600085815260208120601f198616915b828110156139e5578886015182559484019460019091019084016139c6565b5085821015613a035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600061ffff808316818103613a2a57613a2a613897565b6001019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215613a7b57600080fd5b815161296e81613199565b60008219821115613a9957613a99613897565b500190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613ad6816017850160208801613115565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613b07816028840160208801613115565b01602801949350505050565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03878116825260208201879052851660408201526060810184905260c060808201819052600090613b6390830185613141565b90508260a0830152979650505050505050565b600060208284031215613b8857600080fd5b815161296e816131da565b6000816000190483118215151615613bad57613bad613897565b500290565b600081613bc157613bc1613897565b506000190190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613bfc90830184613141565b9695505050505050565b600060208284031215613c1857600080fd5b815161296e816130e2565b600060018201613c3557613c35613897565b5060010190565b60008251613c4e818460208701613115565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e0884ae67222b06d8a589205d2d0a585da0e230336128fb4259155329c53959064736f6c634300080f003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000847696d6d69636b730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003474d4b0000000000000000000000000000000000000000000000000000000000