[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "FailedToSendEth", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "sent", "type": "uint256" }, { "internalType": "uint256", "name": "expected", "type": "uint256" } ], "name": "IncorrectETHAmount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "message", "type": "string" } ], "name": "InvalidCollectionRequest", "type": "error" }, { "inputs": [], "name": "InvalidContractAddress", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidMintQuantity", "type": "error" }, { "inputs": [], "name": "MintingClosed", "type": "error" }, { "inputs": [], "name": "MintingNotStarted", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "OutOfSupply", "type": "error" }, { "inputs": [], "name": "OverClaimLimit", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenDoesNotExist", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "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": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MintConfigChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "TokenForgeMint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "comment", "type": "string" } ], "name": "TokenForgeMintComment", "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": "id", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdrawn", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "cost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMetadata", "outputs": [ { "components": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "animation_url", "type": "string" }, { "internalType": "string", "name": "mintType", "type": "string" }, { "internalType": "uint128", "name": "maxSupply", "type": "uint128" }, { "internalType": "uint128", "name": "maxPerWallet", "type": "uint128" }, { "internalType": "uint256", "name": "cost", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amt", "type": "uint256" } ], "internalType": "struct Royalty[]", "name": "royalties", "type": "tuple[]" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "internalType": "struct CollectionCreationRequest", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "animation_url", "type": "string" }, { "internalType": "string", "name": "mintType", "type": "string" }, { "internalType": "uint128", "name": "maxSupply", "type": "uint128" }, { "internalType": "uint128", "name": "maxPerWallet", "type": "uint128" }, { "internalType": "uint256", "name": "cost", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amt", "type": "uint256" } ], "internalType": "struct Royalty[]", "name": "royalties", "type": "tuple[]" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "internalType": "struct CollectionCreationRequest", "name": "request", "type": "tuple" }, { "internalType": "address", "name": "mintingContract_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "metadata", "outputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "animation_url", "type": "string" }, { "internalType": "string", "name": "mintType", "type": "string" }, { "internalType": "uint128", "name": "maxSupply", "type": "uint128" }, { "internalType": "uint128", "name": "maxPerWallet", "type": "uint128" }, { "internalType": "uint256", "name": "cost", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "string", "name": "comment", "type": "string" } ], "name": "mintWithComment", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintingContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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" } ], "name": "safeTransferFrom", "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": "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": [ { "components": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "description", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "animation_url", "type": "string" }, { "internalType": "string", "name": "mintType", "type": "string" }, { "internalType": "uint128", "name": "maxSupply", "type": "uint128" }, { "internalType": "uint128", "name": "maxPerWallet", "type": "uint128" }, { "internalType": "uint256", "name": "cost", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amt", "type": "uint256" } ], "internalType": "struct Royalty[]", "name": "royalties", "type": "tuple[]" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "internalType": "struct CollectionCreationRequest", "name": "metadata_", "type": "tuple" } ], "name": "setMetadata", "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801562000010575f80fd5b5060408051602080820183525f80835283519182019093528281529091620000398382620001ae565b506001620000488282620001ae565b50620000569150506200005c565b6200027a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000ad5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146200010d5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200013957607f821691505b6020821081036200015857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001a957805f5260205f20601f840160051c81016020851015620001855750805b601f840160051c820191505b81811015620001a6575f815560010162000191565b50505b505050565b81516001600160401b03811115620001ca57620001ca62000110565b620001e281620001db845462000124565b846200015e565b602080601f83116001811462000218575f8415620002005750858301515b5f19600386901b1c1916600185901b17855562000272565b5f85815260208120601f198616915b82811015620002485788860151825594840194600190910190840162000227565b50858210156200026657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b614b0180620002885f395ff3fe608060405260043610610188575f3560e01c8063715018a6116100d4578063a22cb46511610083578063a22cb4651461042b578063b88d4fde1461044a578063c87b56dd14610469578063d2f6f67d14610488578063e30c3978146104a7578063e8a3d485146104bb578063e985e9c5146104cf578063f2fde38b14610508575f80fd5b8063715018a61461037c578063792a09321461039057806379ba5097146103af5780637a5b4f59146103c35780638da5cb5b146103e45780639097548d146103f857806395d89b4114610417575f80fd5b806333f014f01161013b57806333f014f014610299578063392f37e9146102b85780633ccfd60b146102e557806340c10f19146102f957806342842e0e1461030c578063574fed171461032b5780636352211e1461033e57806370a082311461035d575f80fd5b80629a9b7b1461018c57806301ffc9a7146101b457806306fdde03146101e3578063081812fc14610204578063095ea7b31461024557806318160ddd1461026657806323b872dd1461027a575b5f80fd5b348015610197575f80fd5b506101a160065481565b6040519081526020015b60405180910390f35b3480156101bf575f80fd5b506101d36101ce366004613b00565b610527565b60405190151581526020016101ab565b3480156101ee575f80fd5b506101f7610578565b6040516101ab9190613b68565b34801561020f575f80fd5b5061023861021e366004613b7a565b60046020525f90815260409020546001600160a01b031681565b6040516101ab9190613b91565b348015610250575f80fd5b5061026461025f366004613bc4565b610603565b005b348015610271575f80fd5b506101a16106ca565b348015610285575f80fd5b50610264610294366004613bee565b6106df565b3480156102a4575f80fd5b506102646102b3366004613f69565b61085c565b3480156102c3575f80fd5b506102cc610a2b565b6040516101ab9d9c9b9a99989796959493929190613fb7565b3480156102f0575f80fd5b50610264610db9565b610264610307366004613bc4565b610e87565b348015610317575f80fd5b50610264610326366004613bee565b61121d565b6102646103393660046140d5565b6112d9565b348015610349575f80fd5b50610238610358366004613b7a565b61138b565b348015610368575f80fd5b506101a161037736600461412c565b6113e1565b348015610387575f80fd5b50610264611442565b34801561039b575f80fd5b506102646103aa366004614147565b611455565b3480156103ba575f80fd5b50610264611491565b3480156103ce575f80fd5b506103d76114d0565b6040516101ab91906141c6565b3480156103ef575f80fd5b5061023861199f565b348015610403575f80fd5b506101a1610412366004613b7a565b6119d3565b348015610422575f80fd5b506101f76119f7565b348015610436575f80fd5b50610264610445366004614332565b611a04565b348015610455575f80fd5b5061026461046436600461435e565b611a6f565b348015610474575f80fd5b506101f7610483366004613b7a565b611b31565b348015610493575f80fd5b50601454610238906001600160a01b031681565b3480156104b2575f80fd5b50610238611fb3565b3480156104c6575f80fd5b506101f7611fbd565b3480156104da575f80fd5b506101d36104e93660046143cb565b600560209081525f928352604080842090915290825290205460ff1681565b348015610513575f80fd5b5061026461052236600461412c565b612438565b5f6301ffc9a760e01b6001600160e01b03198316148061055757506380ac58cd60e01b6001600160e01b03198316145b806105725750635b5e139f60e01b6001600160e01b03198316145b92915050565b5f8054610584906143f7565b80601f01602080910402602001604051908101604052809291908181526020018280546105b0906143f7565b80156105fb5780601f106105d2576101008083540402835291602001916105fb565b820191905f5260205f20905b8154815290600101906020018083116105de57829003601f168201915b505050505081565b5f818152600260205260409020546001600160a01b03163381148061064a57506001600160a01b0381165f90815260056020908152604080832033845290915290205460ff165b61066f5760405162461bcd60e51b81526004016106669061442f565b60405180910390fd5b5f8281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f60016006546106da919061446b565b905090565b5f818152600260205260409020546001600160a01b038481169116146107345760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610666565b6001600160a01b03821661075a5760405162461bcd60e51b81526004016106669061447e565b336001600160a01b038416148061079357506001600160a01b0383165f90815260056020908152604080832033845290915290205460ff165b806107b357505f818152600460205260409020546001600160a01b031633145b6107cf5760405162461bcd60e51b81526004016106669061442f565b6001600160a01b038084165f81815260036020908152604080832080545f19019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156108a05750825b90505f826001600160401b031660011480156108bb5750303b155b9050811580156108c9575080155b156108e75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561091157845460ff60401b1916600160401b1785555b6001600160a01b0386166109385760405163a710429d60e01b815260040160405180910390fd5b6109406124a8565b865161094b906124b0565b6109536124d2565b60208701515f9061096490826144ed565b50606087015160019061097790826144ed565b50610981876124e2565b60c0870151600d9061099390826144ed565b50601480546001600160a01b0319166001600160a01b03881617905560016006556040517fa703f5371c9a5519d27a0ab98ff81ca400a4adb7bf05d607347bfffc0efabe8f905f90a18315610a2257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b60078054600880546001600160a01b039092169291610a49906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a75906143f7565b8015610ac05780601f10610a9757610100808354040283529160200191610ac0565b820191905f5260205f20905b815481529060010190602001808311610aa357829003601f168201915b505050505090806002018054610ad5906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b01906143f7565b8015610b4c5780601f10610b2357610100808354040283529160200191610b4c565b820191905f5260205f20905b815481529060010190602001808311610b2f57829003601f168201915b505050505090806003018054610b61906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d906143f7565b8015610bd85780601f10610baf57610100808354040283529160200191610bd8565b820191905f5260205f20905b815481529060010190602001808311610bbb57829003601f168201915b505050505090806004018054610bed906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c19906143f7565b8015610c645780601f10610c3b57610100808354040283529160200191610c64565b820191905f5260205f20905b815481529060010190602001808311610c4757829003601f168201915b505050505090806005018054610c79906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca5906143f7565b8015610cf05780601f10610cc757610100808354040283529160200191610cf0565b820191905f5260205f20905b815481529060010190602001808311610cd357829003601f168201915b505050505090806006018054610d05906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d31906143f7565b8015610d7c5780601f10610d5357610100808354040283529160200191610d7c565b820191905f5260205f20905b815481529060010190602001808311610d5f57829003601f168201915b505050600784015460088501546009860154600a870154600c9097015495966001600160801b0380851697600160801b909504169550919350918d565b610dc161266f565b475f610dcb61199f565b6001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610e12576040519150601f19603f3d011682016040523d82523d5f602084013e610e17565b606091505b5050905080610e3957604051633fa2a53d60e21b815260040160405180910390fd5b610e4161199f565b6001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d583604051610e7b91815260200190565b60405180910390a25050565b610e8f6126a1565b805f03610eaf5760405163011674e560e71b815260040160405180910390fd5b600e54610ec6906001600160801b031660016145ac565b6001600160801b031681600654610edd91906145d3565b1115610efc576040516309b741cf60e41b815260040160405180910390fd5b60105415801590610f0e575060105442105b15610f2c576040516369183ba160e11b815260040160405180910390fd5b60115415801590610f3e575060115442115b15610f5c5760405163a7e4d9bd60e01b815260040160405180910390fd5b600e54600160801b90046001600160801b031681610f79846113e1565b610f8391906145d3565b1115610fa257604051632e04c6f560e11b815260040160405180910390fd5b5f805f610fae846126d8565b91945092509050610fbf82846145d3565b3414610ff25734610fd083856145d3565b6040516305e4640960e21b815260048101929092526024820152604401610666565b5f5b84816001600160401b031610156110355760068054611023918891905f61101a836145e6565b9190505561278d565b8061102d816145fe565b915050610ff4565b505f61104183826145d3565b90505f826001600160a01b0316846040515f6040518083038185875af1925050503d805f811461108c576040519150601f19603f3d011682016040523d82523d5f602084013e611091565b606091505b50509050806110b357604051633fa2a53d60e21b815260040160405180910390fd5b5f5b60125481101561119f575f6007600b0182815481106110d6576110d6614623565b5f91825260208083206040805180820190915260029093020180546001600160a01b0316835260010154908201819052909250611113908a614637565b905061111f81866145d3565b94505f825f01516001600160a01b0316826040515f6040518083038185875af1925050503d805f811461116d576040519150601f19603f3d011682016040523d82523d5f602084013e611172565b606091505b505090508061119457604051633fa2a53d60e21b815260040160405180910390fd5b5050506001016110b5565b506111aa84866145d3565b82146111bb5781610fd085876145d3565b866001600160a01b03167f02c36b548faac112a24e09f132ea830e930cc215c0a74a678b70e43aede11edd876040516111f691815260200190565b60405180910390a2505050505061121960015f80516020614a6e83398151915255565b5050565b6112288383836106df565b6001600160a01b0382163b15806112b85750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a029061126c9033908890879060040161464e565b6020604051808303815f875af1158015611288573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ac9190614680565b6001600160e01b031916145b6112d45760405162461bcd60e51b81526004016106669061469b565b505050565b6040516340c10f1960e01b81526001600160a01b03851660048201526024810184905230906340c10f199034906044015f604051808303818588803b158015611320575f80fd5b505af1158015611332573d5f803e3d5ffd5b50508315925061138591505057836001600160a01b03167f203498aecb28c99d51721d218d93e378293b86eacb26b42246dae394840ae75684848460405161137c939291906146ed565b60405180910390a25b50505050565b5f818152600260205260409020546001600160a01b0316806113dc5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610666565b919050565b5f6001600160a01b0382166114275760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610666565b506001600160a01b03165f9081526003602052604090205490565b61144a61266f565b6114535f6124b0565b565b61145d61266f565b611466816124e2565b6040517fa703f5371c9a5519d27a0ab98ff81ca400a4adb7bf05d607347bfffc0efabe8f905f90a150565b338061149b611fb3565b6001600160a01b0316146114c4578060405163118cdaa760e01b81526004016106669190613b91565b6114cd816124b0565b50565b611556604051806101c001604052805f6001600160a01b031681526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020015f6001600160801b031681526020015f6001600160801b031681526020015f81526020015f81526020015f8152602001606081526020015f81525090565b604080516101c08101909152600780546001600160a01b0316825260088054602084019190611584906143f7565b80601f01602080910402602001604051908101604052809291908181526020018280546115b0906143f7565b80156115fb5780601f106115d2576101008083540402835291602001916115fb565b820191905f5260205f20905b8154815290600101906020018083116115de57829003601f168201915b50505050508152602001600282018054611614906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611640906143f7565b801561168b5780601f106116625761010080835404028352916020019161168b565b820191905f5260205f20905b81548152906001019060200180831161166e57829003601f168201915b505050505081526020016003820180546116a4906143f7565b80601f01602080910402602001604051908101604052809291908181526020018280546116d0906143f7565b801561171b5780601f106116f25761010080835404028352916020019161171b565b820191905f5260205f20905b8154815290600101906020018083116116fe57829003601f168201915b50505050508152602001600482018054611734906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611760906143f7565b80156117ab5780601f10611782576101008083540402835291602001916117ab565b820191905f5260205f20905b81548152906001019060200180831161178e57829003601f168201915b505050505081526020016005820180546117c4906143f7565b80601f01602080910402602001604051908101604052809291908181526020018280546117f0906143f7565b801561183b5780601f106118125761010080835404028352916020019161183b565b820191905f5260205f20905b81548152906001019060200180831161181e57829003601f168201915b50505050508152602001600682018054611854906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611880906143f7565b80156118cb5780601f106118a2576101008083540402835291602001916118cb565b820191905f5260205f20905b8154815290600101906020018083116118ae57829003601f168201915b505050918352505060078201546001600160801b03808216602080850191909152600160801b909204166040808401919091526008840154606084015260098401546080840152600a84015460a0840152600b8401805482518185028101850190935280835260c09094019391929091905f9084015b82821015611988575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611941565b505050508152602001600c82015481525050905090565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f805f6119df846126d8565b5090925090506119ef81836145d3565b949350505050565b60018054610584906143f7565b335f8181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611a7a8585856106df565b6001600160a01b0384163b1580611b0e5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290611ac29033908a9089908990899060040161470f565b6020604051808303815f875af1158015611ade573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b029190614680565b6001600160e01b031916145b611b2a5760405162461bcd60e51b81526004016106669061469b565b5050505050565b6060600654821180611b41575081155b15611b625760405163c927e5bf60e01b815260048101839052602401610666565b604080516101c08101909152600780546001600160a01b03168252600880546105729392916020840191611b95906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611bc1906143f7565b8015611c0c5780601f10611be357610100808354040283529160200191611c0c565b820191905f5260205f20905b815481529060010190602001808311611bef57829003601f168201915b50505050508152602001600282018054611c25906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c51906143f7565b8015611c9c5780601f10611c7357610100808354040283529160200191611c9c565b820191905f5260205f20905b815481529060010190602001808311611c7f57829003601f168201915b50505050508152602001600382018054611cb5906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce1906143f7565b8015611d2c5780601f10611d0357610100808354040283529160200191611d2c565b820191905f5260205f20905b815481529060010190602001808311611d0f57829003601f168201915b50505050508152602001600482018054611d45906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611d71906143f7565b8015611dbc5780601f10611d9357610100808354040283529160200191611dbc565b820191905f5260205f20905b815481529060010190602001808311611d9f57829003601f168201915b50505050508152602001600582018054611dd5906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611e01906143f7565b8015611e4c5780601f10611e2357610100808354040283529160200191611e4c565b820191905f5260205f20905b815481529060010190602001808311611e2f57829003601f168201915b50505050508152602001600682018054611e65906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611e91906143f7565b8015611edc5780601f10611eb357610100808354040283529160200191611edc565b820191905f5260205f20905b815481529060010190602001808311611ebf57829003601f168201915b505050918352505060078201546001600160801b03808216602080850191909152600160801b909204166040808401919091526008840154606084015260098401546080840152600a84015460a0840152600b8401805482518185028101850190935280835260c09094019391929091905f9084015b82821015611f99575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611f52565b505050508152602001600c82015481525050836001612856565b5f806119c36129a1565b60605f80611fcb60016126d8565b50604080516101c08101909152600780546001600160a01b03168252600880549496509294506124319391929091602084019190612008906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054612034906143f7565b801561207f5780601f106120565761010080835404028352916020019161207f565b820191905f5260205f20905b81548152906001019060200180831161206257829003601f168201915b50505050508152602001600282018054612098906143f7565b80601f01602080910402602001604051908101604052809291908181526020018280546120c4906143f7565b801561210f5780601f106120e65761010080835404028352916020019161210f565b820191905f5260205f20905b8154815290600101906020018083116120f257829003601f168201915b50505050508152602001600382018054612128906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054612154906143f7565b801561219f5780601f106121765761010080835404028352916020019161219f565b820191905f5260205f20905b81548152906001019060200180831161218257829003601f168201915b505050505081526020016004820180546121b8906143f7565b80601f01602080910402602001604051908101604052809291908181526020018280546121e4906143f7565b801561222f5780601f106122065761010080835404028352916020019161222f565b820191905f5260205f20905b81548152906001019060200180831161221257829003601f168201915b50505050508152602001600582018054612248906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054612274906143f7565b80156122bf5780601f10612296576101008083540402835291602001916122bf565b820191905f5260205f20905b8154815290600101906020018083116122a257829003601f168201915b505050505081526020016006820180546122d8906143f7565b80601f0160208091040260200160405190810160405280929190818152602001828054612304906143f7565b801561234f5780601f106123265761010080835404028352916020019161234f565b820191905f5260205f20905b81548152906001019060200180831161233257829003601f168201915b505050918352505060078201546001600160801b03808216602080850191909152600160801b909204166040808401919091526008840154606084015260098401546080840152600a84015460a0840152600b8401805482518185028101850190935280835260c09094019391929091905f9084015b8282101561240c575f848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016123c5565b505050508152602001600c82015481525050828461242a91906145d3565b60016129c5565b9250505090565b61244061266f565b5f6124496129a1565b80546001600160a01b0319166001600160a01b038416908117825590915061246f61199f565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b611453612b0d565b5f6124b96129a1565b80546001600160a01b0319168155905061121982612b56565b6124da612b0d565b611453612bc6565b6124eb81612bce565b8051600780546001600160a01b0319166001600160a01b03909216919091179055602081015160089061251e90826144ed565b50604081015160099061253190826144ed565b506060810151600a9061254490826144ed565b506080810151600b9061255790826144ed565b5060a0810151600c9061256a90826144ed565b5060e08101516101008201516001600160801b03908116600160801b02911617600e55610120810151600f556101408101516010556101608101516011556125b360125f613aa9565b5f5b81610180015151811015611219576007600b01604051806040016040528084610180015184815181106125ea576125ea614623565b60200260200101515f01516001600160a01b03168152602001846101800151848151811061261a5761261a614623565b6020908102919091018101518101519091528254600180820185555f94855293829020835160029092020180546001600160a01b0319166001600160a01b0390921691909117815591015190820155016125b5565b3361267861199f565b6001600160a01b031614611453573360405163118cdaa760e01b81526004016106669190613b91565b5f80516020614a6e8339815191528054600119016126d257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60145460405163106d10c160e21b81525f91829182916001600160a01b031690829082906341b4430490612710903090600401613b91565b606060405180830381865afa15801561272b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274f919061474d565b90505f866007600801546127639190614637565b90505f8783604001516127769190614637565b602090930151919650919450925050509193909250565b6127978282612f83565b6001600160a01b0382163b15806128275750604051630a85bd0160e11b808252906001600160a01b0384169063150b7a02906127db9033905f90879060040161464e565b6020604051808303815f875af11580156127f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061281b9190614680565b6001600160e01b031916145b6112195760405162461bcd60e51b81526004016106669061469b565b60015f80516020614a6e83398151915255565b60605f846020015161286785613068565b6040516020016128789291906147b5565b60408051601f1981840301815282820190915260048252636e616d6560e01b602083015291505f9061297790612972906128b290856130f7565b6128e36040518060400160405280600b81526020016a3232b9b1b934b83a34b7b760a91b8152508a604001516130f7565b61290f604051806040016040528060068152602001651cde5b589bdb60d21b8152508b606001516130f7565b61293a60405180604001604052806005815260200164696d61676560d81b8152508c608001516130f7565b61296d6040518060400160405280600d81526020016c185b9a5b585d1a5bdb97dd5c9b609a1b8152508d60a001516130f7565b613135565b61320b565b90508315612991576129888161321e565b9250505061299a565b915061299a9050565b9392505050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0090565b60605f612aed6129726129f8604051806040016040528060048152602001636e616d6560e01b81525088602001516130f7565b612a296040518060400160405280600b81526020016a3232b9b1b934b83a34b7b760a91b81525089604001516130f7565b612a55604051806040016040528060068152602001651cde5b589bdb60d21b8152508a606001516130f7565b612a8060405180604001604052806005815260200164696d61676560d81b8152508b608001516130f7565b612ab36040518060400160405280600d81526020016c185b9a5b585d1a5bdb97dd5c9b609a1b8152508c60a001516130f7565b612ae86040518060400160405280600a8152602001696d696e74436f6e66696760b01b815250612ae38e8e61326e565b6132ef565b61330d565b90508215612b0657612afe8161321e565b91505061299a565b905061299a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661145357604051631afcd79f60e31b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612843612b0d565b806101600151816101400151118015612beb575061016081015115155b15612c575760405163e21c329160e01b815260206004820152603560248201527f456e642074696d65206d7573742062652067726561746572207468616e206f726044820152741032b8bab0b6103a379039ba30b93a103a34b6b29760591b6064820152608401610666565b5f805b82610180015151811015612d15575f6001600160a01b03168361018001518281518110612c8957612c89614623565b60200260200101515f01516001600160a01b031603612cdd5760405163e21c329160e01b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610666565b8261018001518181518110612cf457612cf4614623565b60200260200101516020015182612d0b91906145d3565b9150600101612c5a565b508161012001518114612d6b5760405163e21c329160e01b815260206004820152601f60248201527f546f74616c20726f79616c74696573206d75737420657175616c20636f7374006044820152606401610666565b6005826101800151511115612dd55760405163e21c329160e01b815260206004820152602960248201527f43616e6e6f742068617665206d6f7265207468616e203520726f79616c74792060448201526861646472657373657360b81b6064820152608401610666565b8160e001516001600160801b03165f03612e405760405163e21c329160e01b815260206004820152602560248201527f4d617820737570706c79206d7573742062652067726561746572207468616e206044820152643d32b9379760d91b6064820152608401610666565b8161010001516001600160801b03165f03612eb05760405163e21c329160e01b815260206004820152602960248201527f4d6178207065722077616c6c6574206d757374206265206772656174657220746044820152683430b7103d32b9379760b91b6064820152608401610666565b6020820151511580612ec55750606082015151155b15612f135760405163e21c329160e01b815260206004820152601e60248201527f4e616d6520262073796d626f6c2063616e6e6f7420626520656d7074792e00006044820152606401610666565b608082015151158015612f29575060a082015151155b156112195760405163e21c329160e01b8152602060048201526024808201527f4d757374206861766520616e20696d616765206f7220616e696d6174696f6e5f6044820152633ab9361760e11b6064820152608401610666565b6001600160a01b038216612fa95760405162461bcd60e51b81526004016106669061447e565b5f818152600260205260409020546001600160a01b031615612ffe5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610666565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60605f61307483613403565b60010190505f816001600160401b0381111561309257613092613c2c565b6040519080825280601f01601f1916602001820160405280156130bc576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846130c657509392505050565b6060613103835f6134da565b61310d835f6134da565b60405160200161311e9291906147f1565b604051602081830303815290604052905092915050565b60408051600580825260c082019092526060915f9190816020015b606081526020019060019003908161315057905050905086815f8151811061317a5761317a614623565b6020026020010181905250858160018151811061319957613199614623565b602002602001018190525084816002815181106131b8576131b8614623565b602002602001018190525083816003815181106131d7576131d7614623565b602002602001018190525082816004815181106131f6576131f6614623565b60209081029190910101529695505050505050565b6060610572613219836135e1565b613606565b6060613248826040516020016132349190614844565b604051602081830303815290604052613619565b604051602001613258919061485f565b6040516020818303038152906040529050919050565b606061299a6129726132b6604051806040016040528060098152602001686d6178537570706c7960b81b8152506132b18760e001516001600160801b0316613068565b613773565b6132ea6040518060400160405280600681526020016570686173657360d01b815250612ae36132e5898961379a565b613988565b61399b565b60606132fb835f6134da565b8260405160200161311e9291906148a3565b60408051600680825260e082019092526060915f9190816020015b606081526020019060019003908161332857905050905087815f8151811061335257613352614623565b6020026020010181905250868160018151811061337157613371614623565b6020026020010181905250858160028151811061339057613390614623565b602002602001018190525084816003815181106133af576133af614623565b602002602001018190525083816004815181106133ce576133ce614623565b602002602001018190525082816005815181106133ed576133ed614623565b6020908102919091010152979650505050505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106134415772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061346d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061348b57662386f26fc10000830492506010015b6305f5e10083106134a3576305f5e100830492506008015b61271083106134b757612710830492506004015b606483106134c9576064830492506002015b600a83106105725760010192915050565b815160405160200190830182156134f657602282538160010191505b7b5c75303030303031323334353637383961626364656662746e0066726015526b1000000000000004000000005b8185146135b45760018501945060ff8551166020811061356d57816001821b166135575780845360018401935050613524565b605c845380600185015360028401935050613524565b6137006001821b1661359a578060041c51601d53600f811651601e53601951845260068401935050613524565b605c84536008810151600185015350600283019250613524565b505081156135c457602281536001015b5f815260408051601f198184030181526020909201905292915050565b606061057282604051806040016040528060018152602001600b60fa1b815250613a0f565b60608160405160200161325891906148ed565b606081515f0361363657505060408051602081019091525f815290565b5f604051806060016040528060408152602001614a2e6040913990505f60038451600261366391906145d3565b61366d9190614920565b613678906004614637565b6001600160401b0381111561368f5761368f613c2c565b6040519080825280601f01601f1916602001820160405280156136b9576020820181803683370190505b509050600182016020820185865187016020810180515f82525b8284101561372e576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506136d3565b905250508551600390066001811461374d576002811461376057613768565b603d6001830353603d6002830353613768565b603d60018303535b509195945050505050565b606061377f835f6134da565b613789835f6134da565b60405160200161311e9291906148a3565b60605f6137b48461010001516001600160801b0316613068565b90505f6040518060600160405280603e8152602001614a8e603e913990505f6040518060600160405280603e81526020016149f0603e913990505f828260405160200161380292919061493f565b60405160208183030381529060405290505f61388f612972613864604051806040016040528060068152602001651b595d1a1bd960d21b8152506040518060400160405280600a8152602001693078343063313066313960b01b8152506130f7565b6132ea60405180604001604052806006815260200165706172616d7360d01b815250612ae387613988565b905061397c6129726138ca604051806040016040528060118152602001701b585e135a5b9d1cd4195c95d85b1b195d607a1b81525088613773565b6138fd60405180604001604052806009815260200168737461727454696d6560b81b8152506132b18d6101400151613068565b61392e60405180604001604052806007815260200166656e6454696d6560c81b8152506132b18e6101600151613068565b61395860405180604001604052806005815260200164707269636560d81b8152506132b18e613068565b61296d604051806040016040528060028152602001610e8f60f31b815250886132ef565b98975050505050505050565b606081604051602001613258919061497a565b60408051600280825260608281019093525f9190816020015b60608152602001906001900390816139b457905050905083815f815181106139de576139de614623565b602002602001018190525082816001815181106139fd576139fd614623565b60209081029190910101529392505050565b606082515f03613a2d575060408051602081019091525f8152610572565b5f835f81518110613a4057613a40614623565b602002602001015190505f600190505b8451811015613aa1578184868381518110613a6d57613a6d614623565b6020026020010151604051602001613a87939291906149ad565b60408051601f198184030181529190529150600101613a50565b509392505050565b5080545f8255600202905f5260205f20908101906114cd91905b80821115613ae75780546001600160a01b03191681555f6001820155600201613ac3565b5090565b6001600160e01b0319811681146114cd575f80fd5b5f60208284031215613b10575f80fd5b813561299a81613aeb565b5f5b83811015613b35578181015183820152602001613b1d565b50505f910152565b5f8151808452613b54816020860160208601613b1b565b601f01601f19169290920160200192915050565b602081525f61299a6020830184613b3d565b5f60208284031215613b8a575f80fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146114cd575f80fd5b80356113dc81613ba5565b5f8060408385031215613bd5575f80fd5b8235613be081613ba5565b946020939093013593505050565b5f805f60608486031215613c00575f80fd5b8335613c0b81613ba5565b92506020840135613c1b81613ba5565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715613c6257613c62613c2c565b60405290565b6040516101c081016001600160401b0381118282101715613c6257613c62613c2c565b604051601f8201601f191681016001600160401b0381118282101715613cb357613cb3613c2c565b604052919050565b5f82601f830112613cca575f80fd5b81356001600160401b03811115613ce357613ce3613c2c565b613cf6601f8201601f1916602001613c8b565b818152846020838601011115613d0a575f80fd5b816020850160208301375f918101602001919091529392505050565b80356001600160801b03811681146113dc575f80fd5b5f82601f830112613d4b575f80fd5b813560206001600160401b03821115613d6657613d66613c2c565b613d74818360051b01613c8b565b82815260069290921b84018101918181019086841115613d92575f80fd5b8286015b84811015613dd85760408189031215613dad575f80fd5b613db5613c40565b8135613dc081613ba5565b81528185013585820152835291830191604001613d96565b509695505050505050565b5f6101c08284031215613df4575f80fd5b613dfc613c68565b9050613e0782613bb9565b815260208201356001600160401b0380821115613e22575f80fd5b613e2e85838601613cbb565b60208401526040840135915080821115613e46575f80fd5b613e5285838601613cbb565b60408401526060840135915080821115613e6a575f80fd5b613e7685838601613cbb565b60608401526080840135915080821115613e8e575f80fd5b613e9a85838601613cbb565b608084015260a0840135915080821115613eb2575f80fd5b613ebe85838601613cbb565b60a084015260c0840135915080821115613ed6575f80fd5b613ee285838601613cbb565b60c0840152613ef360e08501613d26565b60e08401526101009150613f08828501613d26565b91830191909152610120838101359083015261014080840135908301526101608084013590830152610180908184013581811115613f44575f80fd5b613f5086828701613d3c565b838501525050506101a080830135818301525092915050565b5f8060408385031215613f7a575f80fd5b82356001600160401b03811115613f8f575f80fd5b613f9b85828601613de3565b9250506020830135613fac81613ba5565b809150509250929050565b6001600160a01b038e1681526101a060208201525f613fda6101a083018f613b3d565b8281036040840152613fec818f613b3d565b90508281036060840152614000818e613b3d565b90508281036080840152614014818d613b3d565b905082810360a0840152614028818c613b3d565b905082810360c084015261403c818b613b3d565b91505061405460e08301896001600160801b03169052565b6001600160801b03969096166101008201526101208101949094526101408401929092526101608301526101809091015298975050505050505050565b5f8083601f8401126140a1575f80fd5b5081356001600160401b038111156140b7575f80fd5b6020830191508360208285010111156140ce575f80fd5b9250929050565b5f805f80606085870312156140e8575f80fd5b84356140f381613ba5565b93506020850135925060408501356001600160401b03811115614114575f80fd5b61412087828801614091565b95989497509550505050565b5f6020828403121561413c575f80fd5b813561299a81613ba5565b5f60208284031215614157575f80fd5b81356001600160401b0381111561416c575f80fd5b6119ef84828501613de3565b5f815180845260208085019450602084015f5b838110156141bb57815180516001600160a01b03168852830151838801526040909601959082019060010161418b565b509495945050505050565b602081526141e06020820183516001600160a01b03169052565b5f60208301516101c08060408501526141fd6101e0850183613b3d565b91506040850151601f198086850301606087015261421b8483613b3d565b935060608701519150808685030160808701526142388483613b3d565b935060808701519150808685030160a08701526142558483613b3d565b935060a08701519150808685030160c08701526142728483613b3d565b935060c08701519150808685030160e087015261428f8483613b3d565b935060e087015191506101006142af818801846001600160801b03169052565b87015191506101206142cb878201846001600160801b03169052565b87015161014087810191909152870151610160808801919091528701516101808088019190915287015186850382016101a0808901919091529092506143118584614178565b970151959092019490945250929392505050565b80151581146114cd575f80fd5b5f8060408385031215614343575f80fd5b823561434e81613ba5565b91506020830135613fac81614325565b5f805f805f60808688031215614372575f80fd5b853561437d81613ba5565b9450602086013561438d81613ba5565b93506040860135925060608601356001600160401b038111156143ae575f80fd5b6143ba88828901614091565b969995985093965092949392505050565b5f80604083850312156143dc575f80fd5b82356143e781613ba5565b91506020830135613fac81613ba5565b600181811c9082168061440b57607f821691505b60208210810361442957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600e908201526d1393d517d055551213d49256915160921b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561057257610572614457565b6020808252601190820152701253959053125117d49150d25412515395607a1b604082015260600190565b601f8211156112d457805f5260205f20601f840160051c810160208510156144ce5750805b601f840160051c820191505b81811015611b2a575f81556001016144da565b81516001600160401b0381111561450657614506613c2c565b61451a8161451484546143f7565b846144a9565b602080601f83116001811461454d575f84156145365750858301515b5f19600386901b1c1916600185901b1785556145a4565b5f85815260208120601f198616915b8281101561457b5788860151825594840194600190910190840161455c565b508582101561459857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6001600160801b038181168382160190808211156145cc576145cc614457565b5092915050565b8082018082111561057257610572614457565b5f600182016145f7576145f7614457565b5060010190565b5f6001600160401b0380831681810361461957614619614457565b6001019392505050565b634e487b7160e01b5f52603260045260245ffd5b808202811582820484141761057257610572614457565b6001600160a01b03938416815291909216602082015260408101919091526080606082018190525f9082015260a00190565b5f60208284031215614690575f80fd5b815161299a81613aeb565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b838152604060208201525f6147066040830184866146c5565b95945050505050565b6001600160a01b03868116825285166020820152604081018490526080606082018190525f9061474290830184866146c5565b979650505050505050565b5f6060828403121561475d575f80fd5b604051606081018181106001600160401b038211171561477f5761477f613c2c565b604052825161478d81614325565b8152602083015161479d81613ba5565b60208201526040928301519281019290925250919050565b5f83516147c6818460208801613b1b565b61202360f01b90830190815283516147e5816002840160208801613b1b565b01600201949350505050565b5f601160f91b808352845161480d816001860160208901613b1b565b62111d1160e91b6001918501918201528451614830816004840160208901613b1b565b016004810191909152600501949350505050565b5f8251614855818460208701613b1b565b9190910192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f825161489681601d850160208701613b1b565b91909101601d0192915050565b601160f91b815282515f906148bf816001850160208801613b1b565b61111d60f11b60019184019182015283516148e1816003840160208801613b1b565b01600301949350505050565b607b60f81b81525f8251614908816001850160208701613b1b565b607d60f81b6001939091019283015250600201919050565b5f8261493a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f8351614950818460208801613b1b565b600b60fa1b908301908152835161496e816001840160208801613b1b565b01600101949350505050565b605b60f81b81525f8251614995816001850160208701613b1b565b605d60f81b6001939091019283015250600201919050565b5f84516149be818460208901613b1b565b8451908301906149d2818360208901613b1b565b84519101906149e5818360208801613b1b565b019594505050505056fe7b226e616d65223a20227175616e74697479222c202261626954797065223a202275696e74323536222c20226b696e64223a20225155414e54495459227d4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f007b226e616d65223a2022726563697069656e74222c2261626954797065223a202261646472657373222c226b696e64223a2022524543495049454e54227da2646970667358221220adfa4a607dda86052482b4049dadbb07752c7f97b727e4f6f13281c891f72e9b64736f6c63430008160033