[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "indexed": false, "internalType": "address", "name": "ERC20Token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "ERC20TokenValue", "type": "uint256" } ], "name": "MerchantPayment", "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": false, "internalType": "address", "name": "beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "PBMTokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "ERC20Token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "ERC20TokenValue", "type": "uint256" } ], "name": "PBMrevokeWithdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "batchMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractExpiry", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "companyName", "type": "string" }, { "internalType": "address", "name": "spotAddress", "type": "address" }, { "internalType": "uint256", "name": "spotAmount", "type": "uint256" }, { "internalType": "string", "name": "spotType", "type": "string" }, { "internalType": "uint256", "name": "tokenExpiry", "type": "uint256" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "string", "name": "tokenURI", "type": "string" }, { "internalType": "string", "name": "postExpiryURI", "type": "string" } ], "name": "createPBMTokenType", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getSpotAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenDetails", "outputs": [ { "internalType": "string", "name": "", "type": "string" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_expiry", "type": "uint256" }, { "internalType": "address", "name": "_pbmAddressList", "type": "address" }, { "internalType": "address", "name": "_noahPaymentManager", "type": "address" } ], "name": "initialise", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mintUnbackedPBM", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "noahPaymentManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "", "type": "string" } ], "name": "paymentList", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "totalValue", "type": "uint256" }, { "internalType": "uint256", "name": "refundedValue", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pbmAddressList", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pbmTokenManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "recoverAllERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "string", "name": "sourceReferenceID", "type": "string" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "requestPayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "mintTo", "type": "address" }, { "internalType": "string", "name": "sourceReferenceID", "type": "string" } ], "name": "revertPaymentForCancel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "mintTo", "type": "address" }, { "internalType": "string", "name": "sourceReferenceID", "type": "string" }, { "internalType": "uint256", "name": "refundValue", "type": "uint256" } ], "name": "revertPaymentForRefund", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "revokePBM", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "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": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "postExpiryURI", "type": "string" } ], "name": "updatePostExpiryURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "updateTokenExpiry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "updateTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
6080604052600580546001600160a01b0319908116909155600680549091169055600780546001600160a81b03191690553480156200003d57600080fd5b506040805160208101909152600081526200005881620000c8565b506200006433620000e1565b6003805460ff60a01b191690556001600455604051620000849062000133565b604051809103906000f080158015620000a1573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b039290921691909117905562000224565b8051620000dd90600290602084019062000141565b5050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611968806200482e83390190565b8280546200014f90620001e7565b90600052602060002090601f016020900481019282620001735760008555620001be565b82601f106200018e57805160ff1916838001178555620001be565b82800160010185558215620001be579182015b82811115620001be578251825591602001919060010190620001a1565b50620001cc929150620001d0565b5090565b5b80821115620001cc5760008155600101620001d1565b600181811c90821680620001fc57607f821691505b602082108114156200021e57634e487b7160e01b600052602260045260246000fd5b50919050565b6145fa80620002346000396000f3fe608060405234801561001057600080fd5b506004361061021b5760003560e01c80638da5cb5b11610125578063d10424c7116100ad578063e985e9c51161007c578063e985e9c5146104a6578063f07772b4146104e2578063f242432a14610542578063f2fde38b14610555578063fb34b2011461056857600080fd5b8063d10424c71461045a578063d383d3e91461046d578063d8597f5714610480578063e7d3fe6b1461049357600080fd5b8063a5bfafbe116100f4578063a5bfafbe146103eb578063b054b536146103fe578063b61c95bb14610411578063c1e0372814610424578063caa54c3e1461044757600080fd5b80638da5cb5b146103a15780639308bf65146103b25780639faf433f146103c5578063a22cb465146103d857600080fd5b806351e86cf6116101a857806373e17e761161017757806373e17e76146103575780637d4a96a61461036a5780638456cb591461037d5780638980f11f1461038557806389aba6421461039857600080fd5b806351e86cf6146103175780635c975abb1461032a57806363be47d21461033c578063715018a61461034f57600080fd5b806318e97fd1116101ef57806318e97fd1146102b457806322607dc3146102c95780632eb2c2d6146102dc5780633f4ba83a146102ef5780634e1273f4146102f757600080fd5b8062fdd58e1461022057806301ffc9a71461024657806302b83c8a146102695780630e89341c14610294575b600080fd5b61023361022e366004613534565b61057b565b6040519081526020015b60405180910390f35b610259610254366004613576565b610692565b604051901515815260200161023d565b61027c61027736600461359a565b6106e2565b6040516001600160a01b03909116815260200161023d565b6102a76102a236600461359a565b61075f565b60405161023d919061360b565b6102c76102c23660046136e3565b6107e0565b005b6102c76102d7366004613729565b610850565b6102c76102ea366004613815565b610b59565b6102c7610eee565b61030a6103053660046138c2565b610f00565b60405161023d91906139bf565b60065461027c906001600160a01b031681565b600354600160a01b900460ff16610259565b60055461027c906001600160a01b031681565b6102c7611029565b6102c761036536600461359a565b61103b565b6102c76103783660046139d2565b611200565b6102c7611336565b6102c7610393366004613534565b611346565b61023360085481565b6003546001600160a01b031661027c565b6102c76103c0366004613a0b565b6113cc565b6102c76103d3366004613a42565b6114c9565b6102c76103e6366004613a89565b6115f0565b6102c76103f9366004613ac2565b6115ff565b6102c761040c366004613ae4565b61163f565b60075461027c906001600160a01b031681565b61043761043236600461359a565b611705565b60405161023d9493929190613b01565b6102c7610455366004613b39565b61179e565b61023361046836600461359a565b611a22565b6102c761047b366004613bd3565b611a9f565b6102c761048e3660046136e3565b611b24565b6102c76104a13660046139d2565b611b5e565b6102596104b4366004613cb4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6105226104f0366004613ce2565b805160208183018101805160098252928201919093012091528054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161023d565b6102c7610550366004613d1e565b611dca565b6102c7610563366004613ae4565b611fd8565b6102c7610576366004613d86565b61204e565b60006001600160a01b0383166105ec5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b6005546001600160a01b03166348fd09f561060684612369565b6040518263ffffffff1660e01b815260040161062291906139bf565b60206040518083038186803b15801561063a57600080fd5b505afa15801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106729190613df2565b156106885761068183836123b4565b905061068c565b5060005b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806106c357506001600160e01b031982166303a24d0760e21b145b8061068c57506301ffc9a760e01b6001600160e01b031983161461068c565b60055460405163015c1e4560e11b8152600481018390526000916001600160a01b0316906302b83c8a9060240160206040518083038186803b15801561072757600080fd5b505afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068c9190613e0f565b6005546040516303a24d0760e21b8152600481018390526060916001600160a01b031690630e89341c9060240160006040518083038186803b1580156107a457600080fd5b505afa1580156107b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261068c9190810190613e84565b6107e8612445565b6005546040516318e97fd160e01b81526001600160a01b03909116906318e97fd19061081a9085908590600401613eb8565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050505050565b6007546001600160a01b0316331461087a5760405162461bcd60e51b81526004016105e390613ed1565b600060098360405161088c9190613f22565b90815260408051918290036020908101832060808401835280548452600181015491840191909152600281015491830182905260030154606083018190529192506108d79190613f54565b8211156109385760405162461bcd60e51b815260206004820152602960248201527f50424d3a20526566756e642076616c756520657863656564732072656d61696e604482015268696e672076616c756560b81b60648201526084016105e3565b80604001518214156109e85760055481516001600160a01b039091169063f600d9f49061096490612369565b6109718460200151612369565b6040518363ffffffff1660e01b815260040161098e929190613f6b565b600060405180830381600087803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b505050506109e384826000015183602001516040518060200160405280600081525061249f565b610b1d565b60006109f78260000151611a22565b9050610a038184613fa6565b15610a765760405162461bcd60e51b815260206004820152603760248201527f50424d3a20526566756e642076616c75652073686f756c64206265206d756c7460448201527f69706c65206f662070626d20746f6b656e2076616c756500000000000000000060648201526084016105e3565b6000610a828285613fba565b60055484519192506001600160a01b03169063f600d9f490610aa390612369565b610aac84612369565b6040518363ffffffff1660e01b8152600401610ac9929190613f6b565b600060405180830381600087803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b50505050610b1a868460000151836040518060200160405280600081525061249f565b50505b81600984604051610b2e9190613f22565b90815260200160405180910390206003016000828254610b4e9190613fce565b909155505050505050565b610b61612570565b610b696125bd565b610b738585612617565b8151835114610bc45760405162461bcd60e51b815260206004820181905260248201527f556e657175616c2069647320616e6420616d6f756e747320737570706c69656460448201526064016105e3565b600654604051631a2f716760e01b81526001600160a01b03868116600483015290911690631a2f716790602401602060405180830381600087803b158015610c0b57600080fd5b505af1158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c439190613df2565b15610ed05760008060005b8551811015610d9e576000868281518110610c6b57610c6b613fe6565b602002602001015190506000610c80826106e2565b905082610c8b578093505b806001600160a01b0316846001600160a01b031614610d465760405162461bcd60e51b8152602060048201526064602482018190527f4261746368656420746f6b656e73206d75737420616c6c20736861726520746860448301527f652073616d6520756e6465726c79696e672073706f7420746f6b656e20747970908201527f652e205377617020756e6465726c79696e6720696620726571756972656420666084820152631a5c9cdd60e21b60a482015260c4016105e3565b6000878481518110610d5a57610d5a613fe6565b602002602001015190506000610d6f84611a22565b610d799083613ffc565b9050610d858188613fce565b9650505050508080610d969061401b565b915050610c4e565b50610daa878686612733565b60055460405163e21c8b5960e01b81526001600160a01b039091169063e21c8b5990610ddc9088908890600401613f6b565b600060405180830381600087803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b505060075460405163341bfb8560e01b81526001600160a01b03909116925063341bfb859150610e46908a908a90869088908a90600401614036565b600060405180830381600087803b158015610e6057600080fd5b505af1158015610e74573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f68c9cd42836993caa70415e61f3c3baceb0bb31dcb22af6e5e0db98fa8870fac87878587604051610ec1949392919061407c565b60405180910390a35050610edd565b610edd85858585856128bf565b610ee76001600455565b5050505050565b610ef6612445565b610efe612a53565b565b60608151835114610f655760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016105e3565b600083516001600160401b03811115610f8057610f8061361e565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b50905060005b845181101561102157610ff4858281518110610fcd57610fcd613fe6565b6020026020010151858381518110610fe757610fe7613fe6565b602002602001015161057b565b82828151811061100657611006613fe6565b602090810291909101015261101a8161401b565b9050610faf565b509392505050565b611031612445565b610efe6000612aa8565b611043612570565b61104b6125bd565b600554604051631a410e9b60e31b8152600481018390526000916001600160a01b03169063d20874d89060240160206040518083038186803b15801561109057600080fd5b505afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c891906140be565b600554604051630da8d02760e21b8152600481018590523360248201529192506001600160a01b0316906336a3409c90604401600060405180830381600087803b15801561111557600080fd5b505af1158015611129573d6000803e3d6000fd5b505050506000611138836106e2565b600754604051633102e32f60e21b81529192506001600160a01b03169063c40b8cbc9061116f9030903390869088906004016140d7565b600060405180830381600087803b15801561118957600080fd5b505af115801561119d573d6000803e3d6000fd5b505060408051338152602081018790526001600160a01b038516818301526060810186905290517fa1c359e2aefcb2a02fa122099023552498d16ee2c91b81d3cfd8cd086f037d449350908190036080019150a150506111fd6001600455565b50565b611208612445565b60065460405163fe575a8760e01b81526001600160a01b0383811660048301529091169063fe575a8790602401602060405180830381600087803b15801561124f57600080fd5b505af1158015611263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112879190613df2565b156112a45760405162461bcd60e51b81526004016105e390614101565b6005546001600160a01b031663f600d9f46112be85612369565b6112c785612369565b6040518363ffffffff1660e01b81526004016112e4929190613f6b565b600060405180830381600087803b1580156112fe57600080fd5b505af1158015611312573d6000803e3d6000fd5b505050506113318184846040518060200160405280600081525061249f565b505050565b61133e612445565b610efe612afa565b61134e612445565b60075482906001600160a01b031663c40b8cbc306113746003546001600160a01b031690565b84866040518563ffffffff1660e01b815260040161139594939291906140d7565b600060405180830381600087803b1580156113af57600080fd5b505af11580156113c3573d6000803e3d6000fd5b50505050505050565b6113d4612445565b600754600160a01b900460ff161561142e5760405162461bcd60e51b815260206004820152601860248201527f50424d3a20416c726561647920696e697469616c69736564000000000000000060448201526064016105e3565b6001600160a01b0382163b6114855760405162461bcd60e51b815260206004820152601860248201527f496e76616c69642070626d2061646472657373206c697374000000000000000060448201526064016105e3565b600892909255600680546001600160a01b039283166001600160a01b0319909116179055600780546001600160a81b0319169290911691909117600160a01b179055565b6007546001600160a01b031633146114f35760405162461bcd60e51b81526004016105e390613ed1565b60006009826040516115059190613f22565b9081526020016040518091039020604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382015481525050905060006115578260000151612369565b905060006115688360200151612369565b600554604051633d80367d60e21b81529192506001600160a01b03169063f600d9f49061159b9085908590600401613f6b565b600060405180830381600087803b1580156115b557600080fd5b505af11580156115c9573d6000803e3d6000fd5b50505050610ee785846000015185602001516040518060200160405280600081525061249f565b6115fb338383612b3d565b5050565b611607612445565b6005546040516352dfd7df60e11b815260048101849052602481018390526001600160a01b039091169063a5bfafbe9060440161081a565b611647612445565b60075481906001600160a01b031663c40b8cbc3061166d6003546001600160a01b031690565b6040516370a0823160e01b815230600482015285906001600160a01b038216906370a082319060240160206040518083038186803b1580156116ae57600080fd5b505afa1580156116c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e691906140be565b6040518563ffffffff1660e01b815260040161081a94939291906140d7565b60055460405163183c06e560e31b815260048101839052606091600091829182916001600160a01b039091169063c1e037289060240160006040518083038186803b15801561175357600080fd5b505afa158015611767573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261178f9190810190614138565b93509350935093509193509193565b6117a6612570565b6117ae6125bd565b6117b88686612617565b600654604051631a2f716760e01b81526001600160a01b03878116600483015290911690631a2f716790602401602060405180830381600087803b1580156117ff57600080fd5b505af1158015611813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118379190613df2565b61189c5760405162461bcd60e51b815260206004820152603060248201527f5061796d656e74732063616e206f6e6c79206265206d61646520746f2061206d60448201526f32b931b430b73a1030b2323932b9b99760811b60648201526084016105e3565b60006118a785611a22565b6118b19085613ffc565b905060006118be866106e2565b90506118cc84878785612c1e565b6007546040516361baf65d60e11b81526001600160a01b039091169063c375ecba90611906908b908b90869088908b908b9060040161419a565b600060405180830381600087803b15801561192057600080fd5b505af1158015611934573d6000803e3d6000fd5b50505050611943888787612d4e565b6005546001600160a01b031663e21c8b5961195d88612369565b61196688612369565b6040518363ffffffff1660e01b8152600401611983929190613f6b565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b50505050866001600160a01b0316886001600160a01b03167f68c9cd42836993caa70415e61f3c3baceb0bb31dcb22af6e5e0db98fa8870fac6119f389612369565b6119fc89612369565b8587604051611a0e949392919061407c565b60405180910390a350506108486001600455565b60055460405163d10424c760e01b8152600481018390526000916001600160a01b03169063d10424c79060240160206040518083038186803b158015611a6757600080fd5b505afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068c91906140be565b611aa7612445565b60055460085460405163113ecf5b60e01b81526001600160a01b039092169163113ecf5b91611ae8918c918c918c918c918c918c918c918c916004016141f4565b600060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050505050505050505050565b611b2c612445565b60055460405163d8597f5760e01b81526001600160a01b039091169063d8597f579061081a9085908590600401613eb8565b611b66612570565b611b6e6125bd565b60065460405163fe575a8760e01b81526001600160a01b0383811660048301529091169063fe575a8790602401602060405180830381600087803b158015611bb557600080fd5b505af1158015611bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bed9190613df2565b15611c0a5760405162461bcd60e51b81526004016105e390614101565b6000611c1584611a22565b611c1f9084613ffc565b90506000611c2c856106e2565b9050611c3a81333085612e52565b60075460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052829182169063095ea7b390604401602060405180830381600087803b158015611c8957600080fd5b505af1158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc19190613df2565b50600754604051630ba7dfd960e11b81523060048201526001600160a01b038481166024830152604482018690529091169063174fbfb290606401600060405180830381600087803b158015611d1657600080fd5b505af1158015611d2a573d6000803e3d6000fd5b50506005546001600160a01b0316915063f600d9f49050611d4a88612369565b611d5388612369565b6040518363ffffffff1660e01b8152600401611d70929190613f6b565b600060405180830381600087803b158015611d8a57600080fd5b505af1158015611d9e573d6000803e3d6000fd5b50505050611dbd8487876040518060200160405280600081525061249f565b5050506113316001600455565b611dd2612570565b611dda6125bd565b611de48585612617565b600654604051631a2f716760e01b81526001600160a01b03868116600483015290911690631a2f716790602401602060405180830381600087803b158015611e2b57600080fd5b505af1158015611e3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e639190613df2565b15611fcb576000611e7384611a22565b611e7d9084613ffc565b9050611e8a868585612d4e565b6005546001600160a01b031663e21c8b59611ea486612369565b611ead86612369565b6040518363ffffffff1660e01b8152600401611eca929190613f6b565b600060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b505050506000611f07856106e2565b60075460405163341bfb8560e01b81529192506001600160a01b03169063341bfb8590611f40908a908a90869088908a90600401614036565b600060405180830381600087803b158015611f5a57600080fd5b505af1158015611f6e573d6000803e3d6000fd5b50505050856001600160a01b0316876001600160a01b03167f68c9cd42836993caa70415e61f3c3baceb0bb31dcb22af6e5e0db98fa8870fac611fb088612369565b611fb988612369565b8587604051610ec1949392919061407c565b610edd8585858585613015565b611fe0612445565b6001600160a01b0381166120455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e3565b6111fd81612aa8565b612056612570565b61205e6125bd565b60065460405163fe575a8760e01b81526001600160a01b0383811660048301529091169063fe575a8790602401602060405180830381600087803b1580156120a557600080fd5b505af11580156120b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120dd9190613df2565b156120fa5760405162461bcd60e51b81526004016105e390614101565b815183511461214b5760405162461bcd60e51b815260206004820181905260248201527f556e657175616c2069647320616e6420616d6f756e747320737570706c69656460448201526064016105e3565b60005b835181101561234357600084828151811061216b5761216b613fe6565b60200260200101519050600084838151811061218957612189613fe6565b60200260200101519050600061219e83611a22565b6121a89083613ffc565b905060006121b5846106e2565b90506121c381333085612e52565b60075460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052829182169063095ea7b390604401602060405180830381600087803b15801561221257600080fd5b505af1158015612226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224a9190613df2565b50600754604051630ba7dfd960e11b81523060048201526001600160a01b038481166024830152604482018690529091169063174fbfb290606401600060405180830381600087803b15801561229f57600080fd5b505af11580156122b3573d6000803e3d6000fd5b50506005546001600160a01b0316915063f600d9f490506122d387612369565b6122dc87612369565b6040518363ffffffff1660e01b81526004016122f9929190613f6b565b600060405180830381600087803b15801561231357600080fd5b505af1158015612327573d6000803e3d6000fd5b505050505050505050808061233b9061401b565b91505061214e565b5061235f8184846040518060200160405280600081525061313f565b6113316001600455565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106123a3576123a3613fe6565b602090810291909101015292915050565b60006001600160a01b03831661241f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084016105e3565b506000908152602081815260408083206001600160a01b03949094168352929052205490565b6003546001600160a01b03163314610efe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e3565b6001600160a01b0384166124c55760405162461bcd60e51b81526004016105e390614283565b3360006124d185612369565b905060006124de85612369565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290612510908490613fce565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113c38360008989898961328a565b600354600160a01b900460ff1615610efe5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105e3565b600260045414156126105760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105e3565b6002600455565b6001600160a01b038216331480612633575061263382336104b4565b6126975760405162461bcd60e51b815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526e195c881b9bdc88185c1c1c9bdd9959608a1b60648201526084016105e3565b60065460405163fe575a8760e01b81526001600160a01b0383811660048301529091169063fe575a8790602401602060405180830381600087803b1580156126de57600080fd5b505af11580156126f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127169190613df2565b156115fb5760405162461bcd60e51b81526004016105e390614101565b6001600160a01b0383166127595760405162461bcd60e51b81526004016105e3906142c4565b805182511461277a5760405162461bcd60e51b81526004016105e390614307565b604080516020810190915260009081905233905b83518110156128505760008482815181106127ab576127ab613fe6565b6020026020010151905060008483815181106127c9576127c9613fe6565b602090810291909101810151600084815280835260408082206001600160a01b038c1683529093529190912054909150818110156128195760405162461bcd60e51b81526004016105e39061434f565b6000928352602083815260408085206001600160a01b038b16865290915290922091039055806128488161401b565b91505061278e565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516128a1929190613f6b565b60405180910390a46040805160208101909152600090525b50505050565b81518351146128e05760405162461bcd60e51b81526004016105e390614307565b6001600160a01b0384166129065760405162461bcd60e51b81526004016105e390614393565b3360005b84518110156129ed57600085828151811061292757612927613fe6565b60200260200101519050600085838151811061294557612945613fe6565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156129955760405162461bcd60e51b81526004016105e3906143d8565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906129d2908490613fce565b92505081905550505050806129e69061401b565b905061290a565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612a3d929190613f6b565b60405180910390a46108488187878787876133f5565b612a5b6134bf565b6003805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b612b02612570565b6003805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612a8b3390565b816001600160a01b0316836001600160a01b03161415612bb15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016105e3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008111612c7a5760405162461bcd60e51b8152602060048201526024808201527f546f74616c2076616c75652073686f756c6420626520677265617465722074686044820152630616e20360e41b60648201526084016105e3565b600984604051612c8a9190613f22565b908152602001604051809103902060020154600014612ce45760405162461bcd60e51b81526020600482015260166024820152755061796d656e7420616c72656164792065786973747360501b60448201526064016105e3565b60405180608001604052808481526020018381526020018281526020016000815250600985604051612d169190613f22565b908152604080516020928190038301902083518155918301516001830155820151600282015560609091015160039091015550505050565b6001600160a01b038316612d745760405162461bcd60e51b81526004016105e3906142c4565b336000612d8084612369565b90506000612d8d84612369565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015612dda5760405162461bcd60e51b81526004016105e39061434f565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090526113c3565b6001600160a01b038416612e9d5760405162461bcd60e51b815260206004820152601260248201527145524332303a204e696c206164647265737360701b60448201526064016105e3565b6001600160a01b0384163b612eea5760405162461bcd60e51b8152602060048201526013602482015272115490cc8c0e881153d0481c1c9bdd9a591959606a1b60448201526064016105e3565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612f4e9190613f22565b6000604051808303816000865af19150503d8060008114612f8b576040519150601f19603f3d011682016040523d82523d6000602084013e612f90565b606091505b5091509150818015612fba575080511580612fba575080806020019051810190612fba9190613df2565b6108485760405162461bcd60e51b815260206004820152602660248201527f45524332303a20496e737566666963656e742062616c616e6365206f722061706044820152651c1c9bdd985b60d21b60648201526084016105e3565b6001600160a01b03841661303b5760405162461bcd60e51b81526004016105e390614393565b33600061304785612369565b9050600061305485612369565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156130975760405162461bcd60e51b81526004016105e3906143d8565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906130d4908490613fce565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4613134848a8a8a8a8a61328a565b505050505050505050565b6001600160a01b0384166131655760405162461bcd60e51b81526004016105e390614283565b81518351146131865760405162461bcd60e51b81526004016105e390614307565b3360005b8451811015613222578381815181106131a5576131a5613fe6565b60200260200101516000808784815181106131c2576131c2613fe6565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461320a9190613fce565b9091555081905061321a8161401b565b91505061318a565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051613273929190613f6b565b60405180910390a4610ee7816000878787876133f5565b6001600160a01b0384163b156108485760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906132ce9089908990889088908890600401614422565b602060405180830381600087803b1580156132e857600080fd5b505af1925050508015613318575060408051601f3d908101601f191682019092526133159181019061445c565b60015b6133c557613324614479565b806308c379a0141561335e5750613339614495565b806133445750613360565b8060405162461bcd60e51b81526004016105e3919061360b565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016105e3565b6001600160e01b0319811663f23a6e6160e01b146113c35760405162461bcd60e51b81526004016105e39061451e565b6001600160a01b0384163b156108485760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906134399089908990889088908890600401614566565b602060405180830381600087803b15801561345357600080fd5b505af1925050508015613483575060408051601f3d908101601f191682019092526134809181019061445c565b60015b61348f57613324614479565b6001600160e01b0319811663bc197c8160e01b146113c35760405162461bcd60e51b81526004016105e39061451e565b600354600160a01b900460ff16610efe5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105e3565b6001600160a01b03811681146111fd57600080fd5b803561352f8161350f565b919050565b6000806040838503121561354757600080fd5b82356135528161350f565b946020939093013593505050565b6001600160e01b0319811681146111fd57600080fd5b60006020828403121561358857600080fd5b813561359381613560565b9392505050565b6000602082840312156135ac57600080fd5b5035919050565b60005b838110156135ce5781810151838201526020016135b6565b838111156128b95750506000910152565b600081518084526135f78160208601602086016135b3565b601f01601f19169290920160200192915050565b60208152600061359360208301846135df565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156136595761365961361e565b6040525050565b60006001600160401b038211156136795761367961361e565b50601f01601f191660200190565b600082601f83011261369857600080fd5b81356136a381613660565b6040516136b08282613634565b8281528560208487010111156136c557600080fd5b82602086016020830137600092810160200192909252509392505050565b600080604083850312156136f657600080fd5b8235915060208301356001600160401b0381111561371357600080fd5b61371f85828601613687565b9150509250929050565b60008060006060848603121561373e57600080fd5b83356137498161350f565b925060208401356001600160401b0381111561376457600080fd5b61377086828701613687565b925050604084013590509250925092565b60006001600160401b0382111561379a5761379a61361e565b5060051b60200190565b600082601f8301126137b557600080fd5b813560206137c282613781565b6040516137cf8282613634565b83815260059390931b85018201928281019150868411156137ef57600080fd5b8286015b8481101561380a57803583529183019183016137f3565b509695505050505050565b600080600080600060a0868803121561382d57600080fd5b85356138388161350f565b945060208601356138488161350f565b935060408601356001600160401b038082111561386457600080fd5b61387089838a016137a4565b9450606088013591508082111561388657600080fd5b61389289838a016137a4565b935060808801359150808211156138a857600080fd5b506138b588828901613687565b9150509295509295909350565b600080604083850312156138d557600080fd5b82356001600160401b03808211156138ec57600080fd5b818501915085601f83011261390057600080fd5b8135602061390d82613781565b60405161391a8282613634565b83815260059390931b850182019282810191508984111561393a57600080fd5b948201945b838610156139615785356139528161350f565b8252948201949082019061393f565b9650508601359250508082111561397757600080fd5b5061371f858286016137a4565b600081518084526020808501945080840160005b838110156139b457815187529582019590820190600101613998565b509495945050505050565b6020815260006135936020830184613984565b6000806000606084860312156139e757600080fd5b83359250602084013591506040840135613a008161350f565b809150509250925092565b600080600060608486031215613a2057600080fd5b833592506020840135613a328161350f565b91506040840135613a008161350f565b60008060408385031215613a5557600080fd5b8235613a608161350f565b915060208301356001600160401b0381111561371357600080fd5b80151581146111fd57600080fd5b60008060408385031215613a9c57600080fd5b8235613aa78161350f565b91506020830135613ab781613a7b565b809150509250929050565b60008060408385031215613ad557600080fd5b50508035926020909101359150565b600060208284031215613af657600080fd5b81356135938161350f565b608081526000613b1460808301876135df565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008060008060008060c08789031215613b5257600080fd5b8635613b5d8161350f565b95506020870135613b6d8161350f565b9450604087013593506060870135925060808701356001600160401b0380821115613b9757600080fd5b613ba38a838b01613687565b935060a0890135915080821115613bb957600080fd5b50613bc689828a01613687565b9150509295509295509295565b600080600080600080600080610100898b031215613bf057600080fd5b88356001600160401b0380821115613c0757600080fd5b613c138c838d01613687565b9950613c2160208c01613524565b985060408b0135975060608b0135915080821115613c3e57600080fd5b613c4a8c838d01613687565b965060808b01359550613c5f60a08c01613524565b945060c08b0135915080821115613c7557600080fd5b613c818c838d01613687565b935060e08b0135915080821115613c9757600080fd5b50613ca48b828c01613687565b9150509295985092959890939650565b60008060408385031215613cc757600080fd5b8235613cd28161350f565b91506020830135613ab78161350f565b600060208284031215613cf457600080fd5b81356001600160401b03811115613d0a57600080fd5b613d1684828501613687565b949350505050565b600080600080600060a08688031215613d3657600080fd5b8535613d418161350f565b94506020860135613d518161350f565b9350604086013592506060860135915060808601356001600160401b03811115613d7a57600080fd5b6138b588828901613687565b600080600060608486031215613d9b57600080fd5b83356001600160401b0380821115613db257600080fd5b613dbe878388016137a4565b94506020860135915080821115613dd457600080fd5b50613de1868287016137a4565b9250506040840135613a008161350f565b600060208284031215613e0457600080fd5b815161359381613a7b565b600060208284031215613e2157600080fd5b81516135938161350f565b600082601f830112613e3d57600080fd5b8151613e4881613660565b604051613e558282613634565b828152856020848701011115613e6a57600080fd5b613e7b8360208301602088016135b3565b95945050505050565b600060208284031215613e9657600080fd5b81516001600160401b03811115613eac57600080fd5b613d1684828501613e2c565b828152604060208201526000613d1660408301846135df565b60208082526031908201527f50424d3a204f6e6c79206e6f6168207061796d656e74206d616e616765722063604082015270185b881c995d995c9d081c185e5b595b9d607a1b606082015260800190565b60008251613f348184602087016135b3565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b600082821015613f6657613f66613f3e565b500390565b604081526000613f7e6040830185613984565b8281036020840152613e7b8185613984565b634e487b7160e01b600052601260045260246000fd5b600082613fb557613fb5613f90565b500690565b600082613fc957613fc9613f90565b500490565b60008219821115613fe157613fe1613f3e565b500190565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561401657614016613f3e565b500290565b600060001982141561402f5761402f613f3e565b5060010190565b6001600160a01b0386811682528581166020830152841660408201526060810183905260a060808201819052600090614071908301846135df565b979650505050505050565b60808152600061408f6080830187613984565b82810360208401526140a18187613984565b6001600160a01b0395909516604084015250506060015292915050565b6000602082840312156140d057600080fd5b5051919050565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6020808252601d908201527f50424d3a2027746f27206164647265737320626c61636b6c6973746564000000604082015260600190565b6000806000806080858703121561414e57600080fd5b84516001600160401b0381111561416457600080fd5b61417087828801613e2c565b9450506020850151925060408501519150606085015161418f8161350f565b939692955090935050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906141d5908301856135df565b82810360a08401526141e781856135df565b9998505050505050505050565b60006101208083526142088184018d6135df565b6001600160a01b038c81166020860152604085018c90528482036060860152909150614234828b6135df565b915088608085015280881660a08501525082810360c084015261425781876135df565b905082810360e084015261426b81866135df565b915050826101008301529a9950505050505050505050565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614071908301846135df565b60006020828403121561446e57600080fd5b815161359381613560565b600060033d11156144925760046000803e5060005160e01c5b90565b600060443d10156144a35790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156144d257505050505090565b82850191508151818111156144ea5750505050505090565b843d87010160208285010111156145045750505050505090565b61451360208286010187613634565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061459290830186613984565b82810360608401526145a48186613984565b905082810360808401526145b881856135df565b9897505050505050505056fea26469706673582212209efd3cfebd63af8e16390b303b9b58a503e96106206aef117e9b864dc6e2269764736f6c6343000809003360a0604052600060015534801561001557600080fd5b5061001f33610028565b30608052610078565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6080516118d56100936000396000610fc801526118d56000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063934689a9116100ad578063d8597f5711610071578063d8597f571461027d578063e21c8b5914610290578063f2fde38b146102a3578063f600d9f4146102b6578063f6314d57146102c957600080fd5b8063934689a91461020e578063a5bfafbe14610221578063c1e0372814610234578063d10424c714610257578063d20874d81461026a57600080fd5b8063234661c4116100f4578063234661c41461019e57806336a3409c146101bf57806348fd09f5146101d2578063715018a6146101f55780638da5cb5b146101fd57600080fd5b806302b83c8a146101265780630e89341c14610156578063113ecf5b1461017657806318e97fd11461018b575b600080fd5b610139610134366004611293565b6102dc565b6040516001600160a01b0390911681526020015b60405180910390f35b610169610164366004611293565b610332565b60405161014d9190611308565b6101896101843660046113f5565b61040a565b005b6101896101993660046114e1565b6107e5565b6101b16101ac366004611293565b610838565b60405190815260200161014d565b6101896101cd366004611528565b61089a565b6101e56101e03660046115d4565b610934565b604051901515815260200161014d565b6101896109be565b6000546001600160a01b0316610139565b61013961021c366004611293565b6109d2565b61018961022f366004611611565b610a3d565b610247610242366004611293565b610a7b565b60405161014d9493929190611633565b6101b1610265366004611293565b610b78565b6101b1610278366004611293565b610bdb565b61018961028b3660046114e1565b610c32565b61018961029e36600461166b565b610c80565b6101896102b13660046116c5565b610d8e565b6101896102c436600461166b565b610e07565b6101696102d7366004611293565b610f15565b6000818152600260208190526040822001546103135760405162461bcd60e51b815260040161030a906116e0565b60405180910390fd5b506000908152600260205260409020600101546001600160a01b031690565b60008181526002602052604090206004015460609042106103ee576000828152600260205260409020600801805461036990611717565b80601f016020809104026020016040519081016040528092919081815260200182805461039590611717565b80156103e25780601f106103b7576101008083540402835291602001916103e2565b820191906000526020600020905b8154815290600101906020018083116103c557829003601f168201915b50505050509050919050565b6000828152600260205260409020600701805461036990611717565b610412610f63565b61041a610fbd565b808511156104635760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420746f6b656e206578706972792d3160501b604482015260640161030a565b4285116104ab5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103a37b5b2b71032bc3834b93c969960511b604482015260640161030a565b6001600160a01b0388163b6104f85760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b21022a9219918103a37b5b2b760691b604482015260640161030a565b866105385760405162461bcd60e51b815260206004820152601060248201526f053706f7420616d6f756e7420697320360841b604482015260640161030a565b604080518082019091526004815263161554d160e21b6020918201528651908701207f1456b963f67efe00b2f8df51feb519ca050521ab6f87f75d2d096b39a04b425914806105c757506040805180820190915260048152631614d1d160e21b6020918201528651908701207feb356c5daf1440f443e24bbff91f802d2dffce265d2df807e65146012098ade8145b6106135760405162461bcd60e51b815260206004820152601d60248201527f53706f7454797065206d7573742062652058555344206f722058534744000000604482015260640161030a565b60008961061f89611035565b604051602001610630929190611752565b60408051601f1981840301815291815260015460009081526002602090815291902082519293506106659290918401906111fa565b508860026000600154815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555087600260006001548152602001908152602001600020600201819055508660026000600154815260200190815260200160002060030190805190602001906106ec9291906111fa565b506001805460009081526002602090815260408083206004018a90558354835280832060050180546001600160a01b0319166001600160a01b038b1617905583548352808320600601839055925482529190208551610753926007909201918701906111fa565b506001546000908152600260209081526040909120845161077c926008909201918601906111fa565b507f1cde36472d99035834fc5e1f6d02df66ee3d89fceaf06562e3417fd033c3d61a600154828b8b8b8b8b6040516107ba9796959493929190611781565b60405180910390a160018060008282546107d491906117f7565b909155505050505050505050505050565b6107ed610f63565b600154821061080e5760405162461bcd60e51b815260040161030a9061180f565b60008281526002602090815260409091208251610833926007909201918401906111fa565b505050565b60008181526002602081905260408220015415801590610868575060008281526002602052604090206004015442105b6108845760405162461bcd60e51b815260040161030a906116e0565b5060009081526002602052604090206006015490565b6108a2610f63565b6000828152600260205260409020600501546001600160a01b0382811691161480156108df57506000828152600260205260409020600401544210155b61091f5760405162461bcd60e51b815260206004820152601160248201527050424d206e6f74207265766f6b61626c6560781b604482015260640161030a565b50600090815260026020526040812060060155565b6000805b82518110156109b557600083828151811061095557610955611838565b602002602001015190506002600082815260200190815260200160002060040154421180610993575060008181526002602081905260409091200154155b156109a2575060009392505050565b50806109ad8161184e565b915050610938565b50600192915050565b6109c6610f63565b6109d060006110d2565b565b60008181526002602081905260408220015415801590610a02575060008281526002602052604090206004015442105b610a1e5760405162461bcd60e51b815260040161030a906116e0565b506000908152600260205260409020600501546001600160a01b031690565b610a45610f63565b6001548210610a665760405162461bcd60e51b815260040161030a9061180f565b60009182526002602052604090912060040155565b6000818152600260208190526040822001546060919081908190610ab15760405162461bcd60e51b815260040161030a906116e0565b6000858152600260208190526040909120908101546004820154600583015483546001600160a01b03909116908490610ae990611717565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1590611717565b8015610b625780601f10610b3757610100808354040283529160200191610b62565b820191906000526020600020905b815481529060010190602001808311610b4557829003601f168201915b5050505050935093509350935093509193509193565b60008181526002602081905260408220015415801590610ba8575060008281526002602052604090206004015442105b610bc45760405162461bcd60e51b815260040161030a906116e0565b506000908152600260208190526040909120015490565b600081815260026020819052604082200154610c095760405162461bcd60e51b815260040161030a906116e0565b60008281526002602081905260409091206006810154910154610c2c9190611869565b92915050565b610c3a610f63565b6001548210610c5b5760405162461bcd60e51b815260040161030a9061180f565b60008281526002602090815260409091208251610833926008909201918401906111fa565b610c88610f63565b60005b82518110156108335760026000848381518110610caa57610caa611838565b6020026020010151815260200190815260200160002060020154600014158015610d02575060026000848381518110610ce557610ce5611838565b602002602001015181526020019081526020016000206004015442105b610d1e5760405162461bcd60e51b815260040161030a906116e0565b818181518110610d3057610d30611838565b602002602001015160026000858481518110610d4e57610d4e611838565b602002602001015181526020019081526020016000206006016000828254610d769190611888565b90915550819050610d868161184e565b915050610c8b565b610d96610f63565b6001600160a01b038116610dfb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161030a565b610e04816110d2565b50565b610e0f610f63565b60005b82518110156108335760026000848381518110610e3157610e31611838565b6020026020010151815260200190815260200160002060020154600014158015610e89575060026000848381518110610e6c57610e6c611838565b602002602001015181526020019081526020016000206004015442105b610ea55760405162461bcd60e51b815260040161030a906116e0565b818181518110610eb757610eb7611838565b602002602001015160026000858481518110610ed557610ed5611838565b602002602001015181526020019081526020016000206006016000828254610efd91906117f7565b90915550819050610f0d8161184e565b915050610e12565b60008181526002602081905260409091200154606090610f475760405162461bcd60e51b815260040161030a906116e0565b6000828152600260205260409020600301805461036990611717565b6000546001600160a01b031633146109d05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109d05760405162461bcd60e51b815260206004820152601960248201527f44656c65676174652063616c6c73207265737472696374656400000000000000604482015260640161030a565b6060600061104283611122565b600101905060008167ffffffffffffffff81111561106257611062611322565b6040519080825280601f01601f19166020018201604052801561108c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846110c5576110ca565b611096565b509392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106111615772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061118d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106111ab57662386f26fc10000830492506010015b6305f5e10083106111c3576305f5e100830492506008015b61271083106111d757612710830492506004015b606483106111e9576064830492506002015b600a8310610c2c5760010192915050565b82805461120690611717565b90600052602060002090601f016020900481019282611228576000855561126e565b82601f1061124157805160ff191683800117855561126e565b8280016001018555821561126e579182015b8281111561126e578251825591602001919060010190611253565b5061127a92915061127e565b5090565b5b8082111561127a576000815560010161127f565b6000602082840312156112a557600080fd5b5035919050565b60005b838110156112c75781810151838201526020016112af565b838111156112d6576000848401525b50505050565b600081518084526112f48160208601602086016112ac565b601f01601f19169290920160200192915050565b60208152600061131b60208301846112dc565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561136157611361611322565b604052919050565b600082601f83011261137a57600080fd5b813567ffffffffffffffff81111561139457611394611322565b6113a7601f8201601f1916602001611338565b8181528460208386010111156113bc57600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160a01b03811681146113f057600080fd5b919050565b60008060008060008060008060006101208a8c03121561141457600080fd5b893567ffffffffffffffff8082111561142c57600080fd5b6114388d838e01611369565b9a5061144660208d016113d9565b995060408c0135985060608c013591508082111561146357600080fd5b61146f8d838e01611369565b975060808c0135965061148460a08d016113d9565b955060c08c013591508082111561149a57600080fd5b6114a68d838e01611369565b945060e08c01359150808211156114bc57600080fd5b506114c98c828d01611369565b9250506101008a013590509295985092959850929598565b600080604083850312156114f457600080fd5b82359150602083013567ffffffffffffffff81111561151257600080fd5b61151e85828601611369565b9150509250929050565b6000806040838503121561153b57600080fd5b8235915061154b602084016113d9565b90509250929050565b600082601f83011261156557600080fd5b8135602067ffffffffffffffff82111561158157611581611322565b8160051b611590828201611338565b92835284810182019282810190878511156115aa57600080fd5b83870192505b848310156115c9578235825291830191908301906115b0565b979650505050505050565b6000602082840312156115e657600080fd5b813567ffffffffffffffff8111156115fd57600080fd5b61160984828501611554565b949350505050565b6000806040838503121561162457600080fd5b50508035926020909101359150565b60808152600061164660808301876112dc565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b6000806040838503121561167e57600080fd5b823567ffffffffffffffff8082111561169657600080fd5b6116a286838701611554565b935060208501359150808211156116b857600080fd5b5061151e85828601611554565b6000602082840312156116d757600080fd5b61131b826113d9565b60208082526018908201527f50424d3a20496e76616c696420546f6b656e2049642873290000000000000000604082015260600190565b600181811c9082168061172b57607f821691505b6020821081141561174c57634e487b7160e01b600052602260045260246000fd5b50919050565b600083516117648184602088016112ac565b8351908301906117788183602088016112ac565b01949350505050565b87815260e06020820152600061179a60e08301896112dc565b6001600160a01b0388811660408501526060840188905283820360808501526117c382886112dc565b92508560a085015280851660c0850152505098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180a5761180a6117e1565b500190565b6020808252600f908201526e125b9d985b1a59081d1bdad95b9259608a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611862576118626117e1565b5060010190565b6000816000190483118215151615611883576118836117e1565b500290565b60008282101561189a5761189a6117e1565b50039056fea26469706673582212204a6b0f093337fd487e1de6166f76b6529899384e95aa6bef63a1e31c74a171c564736f6c63430008090033