[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" }, { "internalType": "string", "name": "initialUri", "type": "string" }, { "internalType": "address", "name": "initialRecipient", "type": "address" }, { "internalType": "bytes32", "name": "initialOgRoot", "type": "bytes32" }, { "internalType": "bytes32", "name": "initialWlRoot", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__InvalidTransferValidatorContract", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__SetTransferValidatorFirst", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "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": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "ShouldNotMintToBurnAddress", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "inputs": [], "name": "DEFAULT_OPERATOR_WHITELIST_ID", "outputs": [ { "internalType": "uint120", "name": "", "type": "uint120" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_SECURITY_LEVEL", "outputs": [ { "internalType": "enum TransferSecurityLevels", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_VALIDATOR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "adminMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "amountMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseExtension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxSupply", "type": "uint256" } ], "name": "cutSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPermittedContractReceivers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSecurityPolicy", "outputs": [ { "components": [ { "internalType": "enum TransferSecurityLevels", "name": "transferSecurityLevel", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversId", "type": "uint120" } ], "internalType": "struct CollectionSecurityPolicy", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "contract ICreatorTokenTransferValidator", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistedOperators", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "isContractReceiverPermitted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isOperatorWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintPhase", "outputs": [ { "internalType": "enum Web3Embassy.MintPhase", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ogMaxMint", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "ogMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "ogRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicMaxMint", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "publicMinted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum Web3Embassy.MintPhase", "name": "phase", "type": "uint8" } ], "name": "setMintPhase", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "og", "type": "bytes32" }, { "internalType": "bytes32", "name": "wl", "type": "bytes32" } ], "name": "setRoots", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "validator", "type": "address" }, { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomValidatorAndSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setToDefaultSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "transferValidator_", "type": "address" } ], "name": "setTransferValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "wlMaxMint", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "wlMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "wlRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" } ]
608060405261012c600b5560fa600c5566b1a2bc2ec50000600d556002600e5f6101000a81548160ff021916908360ff1602179055506001600e60016101000a81548160ff021916908360ff1602179055506001600e60026101000a81548160ff021916908360ff1602179055506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250601090816100b19190610e59565b503480156100bd575f80fd5b50604051616f78380380616f7883398181016040528101906100df91906110d5565b846040518060400160405280600b81526020017f436974697a656e736869700000000000000000000000000000000000000000008152506040518060400160405280600781526020017f454d4241535359000000000000000000000000000000000000000000000000008152508181816002908161015d9190610e59565b50806003908161016d9190610e59565b5061017c61027660201b60201c565b5f8190555061018f61027660201b60201c565b61019d61027e60201b60201c565b10156101ba576101b963fed8210f60e01b6102a560201b60201c565b5b505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361022e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016102259190611177565b60405180910390fd5b61023d816102ad60201b60201c565b50816012819055508060138190555061025b8461037060201b60201c565b61026c83600161039160201b60201c565b5050505050611350565b5f6001905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b805f5260045ffd5b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61037e6103b460201b60201c565b80600f908161038d9190610e59565b5050565b6103b0828260405180602001604052805f81525061044d60201b60201c565b5050565b6103c26104d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166103e66104dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461044b5761040f6104d560201b60201c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016104429190611177565b60405180910390fd5b565b61045d838361050460201b60201c565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146104d0575f805490505f83820390505b61049f5f8683806001019450866106ae60201b60201c565b6104ba576104b963d1a57ed660e01b6102a560201b60201c565b5b81811061048757815f54146104cd575f80fd5b50505b505050565b5f33905090565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805490505f82036105275761052663b562e8dd60e01b6102a560201b60201c565b5b6105395f8483856107e460201b60201c565b6105698361054e5f865f61081c60201b60201c565b61055d8561084960201b60201c565b1761085860201b60201c565b60045f8381526020019081526020015f2081905550600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f73ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690505f81036106205761061f632e07630060e01b6102a560201b60201c565b5b5f83830190505f83905061063861027e60201b60201c565b600183031115610659576106586381647e3a60e01b6102a560201b60201c565b5b5b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a481816001019150810361065a57815f819055505050506106a95f84838561088260201b60201c565b505050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a026106d96108ba60201b60201c565b8786866040518563ffffffff1660e01b81526004016106fb94939291906111f1565b6020604051808303815f875af192505050801561073657506040513d601f19601f820116820180604052508101906107339190611290565b60015b610791573d805f8114610764576040519150601f19603f3d011682016040523d82523d5f602084013e610769565b606091505b505f8151036107895761078863d1a57ed660e01b6102a560201b60201c565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b5f5b818110156108155761080a858583866107ff91906112e8565b6108ce60201b60201c565b8060010190506107e6565b5050505050565b5f8060e883901c905060e86108388686846109f060201b60201c565b62ffffff16901b9150509392505050565b5f6001821460e11b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b5f5b818110156108b3576108a88585838661089d91906112e8565b6109f860201b60201c565b806001019050610884565b5050505050565b5f6108c96104d560201b60201c565b905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905081801561093c5750805b15610973576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561099d5761099861098a6104d560201b60201c565b858534610b1a60201b60201c565b6109e9565b80156109c7576109c26109b46104d560201b60201c565b868534610b2060201b60201c565b6109e8565b6109e76109d86104d560201b60201c565b86868634610b2660201b60201c565b5b5b5050505050565b5f9392505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050818015610a665750805b15610a9d576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115610ac757610ac2610ab46104d560201b60201c565b858534610c0c60201b60201c565b610b13565b8015610af157610aec610ade6104d560201b60201c565b868534610c1260201b60201c565b610b12565b610b11610b026104d560201b60201c565b86868634610c1860201b60201c565b5b5b5050505050565b50505050565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c055760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88686866040518463ffffffff1660e01b8152600401610bd89392919061131b565b5f6040518083038186803b158015610bee575f80fd5b505afa158015610c00573d5f803e3d5ffd5b505050505b5050505050565b50505050565b50505050565b5050505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c9a57607f821691505b602082108103610cad57610cac610c56565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610d0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cd4565b610d198683610cd4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d5d610d58610d5384610d31565b610d3a565b610d31565b9050919050565b5f819050919050565b610d7683610d43565b610d8a610d8282610d64565b848454610ce0565b825550505050565b5f90565b610d9e610d92565b610da9818484610d6d565b505050565b5b81811015610dcc57610dc15f82610d96565b600181019050610daf565b5050565b601f821115610e1157610de281610cb3565b610deb84610cc5565b81016020851015610dfa578190505b610e0e610e0685610cc5565b830182610dae565b50505b505050565b5f82821c905092915050565b5f610e315f1984600802610e16565b1980831691505092915050565b5f610e498383610e22565b9150826002028217905092915050565b610e6282610c1f565b67ffffffffffffffff811115610e7b57610e7a610c29565b5b610e858254610c83565b610e90828285610dd0565b5f60209050601f831160018114610ec1575f8415610eaf578287015190505b610eb98582610e3e565b865550610f20565b601f198416610ecf86610cb3565b5f5b82811015610ef657848901518255600182019150602085019450602081019050610ed1565b86831015610f135784890151610f0f601f891682610e22565b8355505b6001600288020188555050505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f6282610f39565b9050919050565b610f7281610f58565b8114610f7c575f80fd5b50565b5f81519050610f8d81610f69565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b610fb482610f9b565b810181811067ffffffffffffffff82111715610fd357610fd2610c29565b5b80604052505050565b5f610fe5610f28565b9050610ff18282610fab565b919050565b5f67ffffffffffffffff8211156110105761100f610c29565b5b61101982610f9b565b9050602081019050919050565b8281835e5f83830152505050565b5f61104661104184610ff6565b610fdc565b90508281526020810184848401111561106257611061610f97565b5b61106d848285611026565b509392505050565b5f82601f83011261108957611088610f93565b5b8151611099848260208601611034565b91505092915050565b5f819050919050565b6110b4816110a2565b81146110be575f80fd5b50565b5f815190506110cf816110ab565b92915050565b5f805f805f60a086880312156110ee576110ed610f31565b5b5f6110fb88828901610f7f565b955050602086015167ffffffffffffffff81111561111c5761111b610f35565b5b61112888828901611075565b945050604061113988828901610f7f565b935050606061114a888289016110c1565b925050608061115b888289016110c1565b9150509295509295909350565b61117181610f58565b82525050565b5f60208201905061118a5f830184611168565b92915050565b61119981610d31565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6111c38261119f565b6111cd81856111a9565b93506111dd818560208601611026565b6111e681610f9b565b840191505092915050565b5f6080820190506112045f830187611168565b6112116020830186611168565b61121e6040830185611190565b818103606083015261123081846111b9565b905095945050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61126f8161123b565b8114611279575f80fd5b50565b5f8151905061128a81611266565b92915050565b5f602082840312156112a5576112a4610f31565b5b5f6112b28482850161127c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6112f282610d31565b91506112fd83610d31565b9250828201905080821115611315576113146112bb565b5b92915050565b5f60608201905061132e5f830186611168565b61133b6020830185611168565b6113486040830184611168565b949350505050565b615c1b8061135d5f395ff3fe608060405260043610610319575f3560e01c80636c0360eb116101aa578063ab864ad9116100f6578063da3e316511610094578063e985e9c51161006e578063e985e9c514610b2f578063f2fde38b14610b6b578063f4c4456914610b93578063fd762d9214610bbb57610319565b8063da3e316514610ab3578063e4b3568314610add578063e58306f914610b0757610319565b8063c6682862116100d0578063c6682862146109f9578063c87b56dd14610a23578063d007af5c14610a5f578063d5abeb0114610a8957610319565b8063ab864ad91461098b578063b88d4fde146109b3578063be537f43146109cf57610319565b8063903afdc011610163578063a035b1fe1161013d578063a035b1fe146108f5578063a0712d681461091f578063a22cb4651461093b578063a9fc664e1461096357610319565b8063903afdc01461086557806395d89b411461088f5780639d645a44146108b957610319565b80636c0360eb1461077f5780636c3b8699146107a957806370a08231146107bf578063715018a6146107fb57806382c30987146108115780638da5cb5b1461083b57610319565b80632e8da82911610269578063438a67e7116102225780635d4c1d46116101fc5780635d4c1d46146106c75780635e84d723146106f1578063613471621461071b5780636352211e1461074357610319565b8063438a67e714610639578063495c8bf91461067557806355f804b31461069f57610319565b80632e8da8291461055d578063305c7d4a1461059957806331c07bbf146105c35780633ccfd60b146105eb5780633ef0d36d1461060157806342842e0e1461061d57610319565b80631015805b116102d65780631b25b077116102b05780631b25b077146104bf5780631c33b328146104fb57806323b872dd146105255780632b314dc61461054157610319565b80631015805b1461042f57806317881cbf1461046b57806318160ddd1461049557610319565b8063014635461461031d57806301ffc9a71461034757806306fdde0314610383578063081812fc146103ad578063095ea7b3146103e9578063098144d414610405575b5f80fd5b348015610328575f80fd5b50610331610be3565b60405161033e9190613f98565b60405180910390f35b348015610352575f80fd5b5061036d60048036038101906103689190614017565b610bf9565b60405161037a919061405c565b60405180910390f35b34801561038e575f80fd5b50610397610c72565b6040516103a491906140e5565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce9190614138565b610d02565b6040516103e09190613f98565b60405180910390f35b61040360048036038101906103fe919061418d565b610d5b565b005b348015610410575f80fd5b50610419610d6b565b6040516104269190614226565b60405180910390f35b34801561043a575f80fd5b506104556004803603810190610450919061423f565b610d93565b604051610462919061405c565b60405180910390f35b348015610476575f80fd5b5061047f610db0565b60405161048c91906142dd565b60405180910390f35b3480156104a0575f80fd5b506104a9610dc2565b6040516104b69190614305565b60405180910390f35b3480156104ca575f80fd5b506104e560048036038101906104e0919061431e565b610e0d565b6040516104f2919061405c565b60405180910390f35b348015610506575f80fd5b5061050f610f08565b60405161051c91906143b4565b60405180910390f35b61053f600480360381019061053a91906143cd565b610f0d565b005b61055b6004803603810190610556919061447e565b6111b8565b005b348015610568575f80fd5b50610583600480360381019061057e919061423f565b611483565b604051610590919061405c565b60405180910390f35b3480156105a4575f80fd5b506105ad61161f565b6040516105ba91906144f6565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e49190614532565b611632565b005b3480156105f6575f80fd5b506105ff611666565b005b61061b6004803603810190610616919061447e565b611720565b005b610637600480360381019061063291906143cd565b6119aa565b005b348015610644575f80fd5b5061065f600480360381019061065a919061423f565b6119c9565b60405161066c9190614305565b60405180910390f35b348015610680575f80fd5b506106896119e4565b6040516106969190614614565b60405180910390f35b3480156106aa575f80fd5b506106c560048036038101906106c0919061475c565b611bc8565b005b3480156106d2575f80fd5b506106db611be3565b6040516106e891906147cc565b60405180910390f35b3480156106fc575f80fd5b50610705611be8565b6040516107129190614305565b60405180910390f35b348015610726575f80fd5b50610741600480360381019061073c9190614832565b611bee565b005b34801561074e575f80fd5b5061076960048036038101906107649190614138565b611da4565b6040516107769190613f98565b60405180910390f35b34801561078a575f80fd5b50610793611db5565b6040516107a091906140e5565b60405180910390f35b3480156107b4575f80fd5b506107bd611e41565b005b3480156107ca575f80fd5b506107e560048036038101906107e0919061423f565b611f5c565b6040516107f29190614305565b60405180910390f35b348015610806575f80fd5b5061080f611ff0565b005b34801561081c575f80fd5b50610825612003565b604051610832919061489a565b60405180910390f35b348015610846575f80fd5b5061084f612009565b60405161085c9190613f98565b60405180910390f35b348015610870575f80fd5b50610879612031565b604051610886919061489a565b60405180910390f35b34801561089a575f80fd5b506108a3612037565b6040516108b091906140e5565b60405180910390f35b3480156108c4575f80fd5b506108df60048036038101906108da919061423f565b6120c7565b6040516108ec919061405c565b60405180910390f35b348015610900575f80fd5b50610909612263565b6040516109169190614305565b60405180910390f35b61093960048036038101906109349190614138565b612269565b005b348015610946575f80fd5b50610961600480360381019061095c91906148dd565b612506565b005b34801561096e575f80fd5b506109896004803603810190610984919061423f565b61260c565b005b348015610996575f80fd5b506109b160048036038101906109ac9190614945565b6127c1565b005b6109cd60048036038101906109c89190614a21565b6127db565b005b3480156109da575f80fd5b506109e361282c565b6040516109f09190614aff565b60405180910390f35b348015610a04575f80fd5b50610a0d61297d565b604051610a1a91906140e5565b60405180910390f35b348015610a2e575f80fd5b50610a496004803603810190610a449190614138565b612a09565b604051610a5691906140e5565b60405180910390f35b348015610a6a575f80fd5b50610a73612ab0565b604051610a809190614614565b60405180910390f35b348015610a94575f80fd5b50610a9d612c94565b604051610aaa9190614305565b60405180910390f35b348015610abe575f80fd5b50610ac7612c9a565b604051610ad491906144f6565b60405180910390f35b348015610ae8575f80fd5b50610af1612cac565b604051610afe91906144f6565b60405180910390f35b348015610b12575f80fd5b50610b2d6004803603810190610b28919061418d565b612cbf565b005b348015610b3a575f80fd5b50610b556004803603810190610b509190614b18565b612d2c565b604051610b62919061405c565b60405180910390f35b348015610b76575f80fd5b50610b916004803603810190610b8c919061423f565b612dba565b005b348015610b9e575f80fd5b50610bb96004803603810190610bb49190614138565b612e3e565b005b348015610bc6575f80fd5b50610be16004803603810190610bdc9190614b56565b612e94565b005b71721c310194ccfc01e523fc93c9cccfa2a0ac81565b5f7f86455d28000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c6b5750610c6a82612fe3565b5b9050919050565b606060028054610c8190614be7565b80601f0160208091040260200160405190810160405280929190818152602001828054610cad90614be7565b8015610cf85780601f10610ccf57610100808354040283529160200191610cf8565b820191905f5260205f20905b815481529060010190602001808311610cdb57829003601f168201915b5050505050905090565b5f610d0c82613074565b610d2157610d2063cf4700e460e01b613117565b5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610d678282600161311f565b5050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6011602052805f5260405f205f915054906101000a900460ff1681565b60145f9054906101000a900460ff1681565b5f610dcb613249565b6001545f54030390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610dfd613251565b14610e0a57600854810190505b90565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efc5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88585856040518463ffffffff1660e01b8152600401610ec093929190614c17565b5f6040518083038186803b158015610ed6575f80fd5b505afa925050508015610ee7575060015b610ef3575f9050610f01565b60019050610f01565b600190505b9392505050565b600181565b5f610f1782613278565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f8c57610f8b63a114810060e01b613117565b5b5f80610f9784613387565b91509150610fad8187610fa86133aa565b6133b8565b610fd857610fc286610fbd6133aa565b612d2c565b610fd757610fd66359c896be60e01b613117565b5b5b610fe586868660016133fb565b8015610fef575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600101919050819055506110b78561109388888761342d565b7c020000000000000000000000000000000000000000000000000000000017613454565b60045f8681526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000841603611133575f6001850190505f60045f8381526020019081526020015f205403611131575f548114611130578360045f8381526020019081526020015f20819055505b5b505b5f73ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45f81036111a2576111a163ea553b3460e01b613117565b5b6111af878787600161347e565b50505050505050565b5f6111c96111c46134b0565b6134b7565b67ffffffffffffffff1690505f6111de6134b0565b6040516020016111ee9190614c91565b6040516020818303038152906040528051906020012090506001600281111561121a5761121961426a565b5b60145f9054906101000a900460ff16600281111561123b5761123a61426a565b5b1461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290614d1b565b60405180910390fd5b6112c88484808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505060125483613501565b611307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fe90614d83565b60405180910390fd5b5f8214611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134090614e11565b60405180910390fd5b600e5f9054906101000a900460ff1660ff1685836113679190614e5c565b11156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90614eff565b60405180910390fd5b600c54856113b4610dc2565b6113be9190614e5c565b11156113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f690614f67565b60405180910390fd5b84600d5461140d9190614f85565b34101561144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144690615010565b60405180910390fd5b61146b61145a6134b0565b86846114669190614e5c565b613517565b61147c6114766134b0565b866135c7565b5050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116165760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d72dde5e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b815260040161156f9190613f98565b606060405180830381865afa15801561158a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ae91906150bb565b60200151846040518363ffffffff1660e01b81526004016115d09291906150e6565b602060405180830381865afa1580156115eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160f9190615121565b905061161a565b5f90505b919050565b600e60029054906101000a900460ff1681565b61163a6135e4565b8060145f6101000a81548160ff0219169083600281111561165e5761165d61426a565b5b021790555050565b61166e6135e4565b5f611677612009565b73ffffffffffffffffffffffffffffffffffffffff164760405161169a90615179565b5f6040518083038185875af1925050503d805f81146116d4576040519150601f19603f3d011682016040523d82523d5f602084013e6116d9565b606091505b505090508061171d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611714906151d7565b60405180910390fd5b50565b5f61173161172c6134b0565b6134b7565b67ffffffffffffffff1690505f6117466134b0565b6040516020016117569190614c91565b604051602081830303815290604052805190602001209050600160028111156117825761178161426a565b5b60145f9054906101000a900460ff1660028111156117a3576117a261426a565b5b146117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90615265565b60405180910390fd5b6118308484808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505060135483613501565b61186f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186690614d83565b60405180910390fd5b600e60019054906101000a900460ff1660ff16858361188e9190614e5c565b11156118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c6906152f3565b60405180910390fd5b600c54856118db610dc2565b6118e59190614e5c565b1115611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191d90614f67565b60405180910390fd5b84600d546119349190614f85565b341015611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d90615010565b60405180910390fd5b6119926119816134b0565b868461198d9190614e5c565b613517565b6119a361199d6134b0565b866135c7565b5050505050565b6119c483838360405180602001604052805f8152506127db565b505050565b5f6119d3826134b7565b67ffffffffffffffff169050919050565b60605f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b795760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fe5df9960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b8152600401611ad19190613f98565b606060405180830381865afa158015611aec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1091906150bb565b602001516040518263ffffffff1660e01b8152600401611b3091906147cc565b5f60405180830381865afa158015611b4a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611b7291906153e5565b9050611bc5565b5f67ffffffffffffffff811115611b9357611b92614638565b5b604051908082528060200260200182016040528015611bc15781602001602082028036833780820191505090505b5090505b90565b611bd06135e4565b80600f9081611bdf91906155c0565b5050565b600181565b600c5481565b611bf661366b565b5f611bff610d6b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c66576040517f39ffc7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663da0194c030866040518363ffffffff1660e01b8152600401611ca192919061568f565b5f604051808303815f87803b158015611cb8575f80fd5b505af1158015611cca573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff16632304aa0230856040518363ffffffff1660e01b8152600401611d099291906156b6565b5f604051808303815f87803b158015611d20575f80fd5b505af1158015611d32573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff16638d74431430846040518363ffffffff1660e01b8152600401611d719291906156b6565b5f604051808303815f87803b158015611d88575f80fd5b505af1158015611d9a573d5f803e3d5ffd5b5050505050505050565b5f611dae82613278565b9050919050565b600f8054611dc290614be7565b80601f0160208091040260200160405190810160405280929190818152602001828054611dee90614be7565b8015611e395780601f10611e1057610100808354040283529160200191611e39565b820191905f5260205f20905b815481529060010190602001808311611e1c57829003601f168201915b505050505081565b611e4961366b565b611e6471721c310194ccfc01e523fc93c9cccfa2a0ac61260c565b71721c310194ccfc01e523fc93c9cccfa2a0ac73ffffffffffffffffffffffffffffffffffffffff1663da0194c03060016040518363ffffffff1660e01b8152600401611eb292919061568f565b5f604051808303815f87803b158015611ec9575f80fd5b505af1158015611edb573d5f803e3d5ffd5b5050505071721c310194ccfc01e523fc93c9cccfa2a0ac73ffffffffffffffffffffffffffffffffffffffff16632304aa023060016040518363ffffffff1660e01b8152600401611f2d9291906156b6565b5f604051808303815f87803b158015611f44575f80fd5b505af1158015611f56573d5f803e3d5ffd5b50505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa157611fa0638f4eb60460e01b613117565b5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b611ff86135e4565b6120015f61366d565b565b60135481565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606003805461204690614be7565b80601f016020809104026020016040519081016040528092919081815260200182805461207290614be7565b80156120bd5780601f10612094576101008083540402835291602001916120bd565b820191905f5260205f20905b8154815290600101906020018083116120a057829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639445f53060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b81526004016121b39190613f98565b606060405180830381865afa1580156121ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f291906150bb565b60400151846040518363ffffffff1660e01b81526004016122149291906150e6565b602060405180830381865afa15801561222f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122539190615121565b905061225e565b5f90505b919050565b600d5481565b5f61227a6122756134b0565b6134b7565b67ffffffffffffffff1690506002808111156122995761229861426a565b5b60145f9054906101000a900460ff1660028111156122ba576122b961426a565b5b146122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f19061574d565b60405180910390fd5b600e60029054906101000a900460ff1660ff1682111561234f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612346906157b5565b60405180910390fd5b60115f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090615843565b60405180910390fd5b600c54826123e5610dc2565b6123ef9190614e5c565b1115612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242790614f67565b60405180910390fd5b81600d5461243e9190614f85565b341015612480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247790615010565b60405180910390fd5b600160115f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506124f16124e06134b0565b83836124ec9190614e5c565b613517565b6125026124fc6134b0565b836135c7565b5050565b8060075f6125126133aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166125bb6133aa565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612600919061405c565b60405180910390a35050565b61261461366b565b5f808273ffffffffffffffffffffffffffffffffffffffff163b11156126b2578173ffffffffffffffffffffffffffffffffffffffff166301ffc9a75f6040518263ffffffff1660e01b815260040161266d9190615870565b602060405180830381865afa9250505080156126a757506040513d601f19601f820116820180604052508101906126a49190615121565b60015b156126b157809150505b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126ec575080155b15612723576040517f32483afb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051612775929190615889565b60405180910390a18160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6127c96135e4565b81601281905550806013819055505050565b6127e6848484610f0d565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146128265761281084848484613730565b6128255761282463d1a57ed660e01b613117565b5b5b50505050565b612834613f07565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129285760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b81526004016128e29190613f98565b606060405180830381865afa1580156128fd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292191906150bb565b905061297a565b60405180606001604052805f60068111156129465761294561426a565b5b81526020015f6effffffffffffffffffffffffffffff1681526020015f6effffffffffffffffffffffffffffff1681525090505b90565b6010805461298a90614be7565b80601f01602080910402602001604051908101604052809291908181526020018280546129b690614be7565b8015612a015780601f106129d857610100808354040283529160200191612a01565b820191905f5260205f20905b8154815290600101906020018083116129e457829003601f168201915b505050505081565b6060612a1482613074565b612a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4a90615920565b60405180910390fd5b5f612a5c61385a565b90505f815111612a7a5760405180602001604052805f815250612aa8565b80612a84846138ea565b6010604051602001612a98939291906159f8565b6040516020818303038152906040525b915050919050565b60605f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c455760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e94a6c60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b8152600401612b9d9190613f98565b606060405180830381865afa158015612bb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bdc91906150bb565b604001516040518263ffffffff1660e01b8152600401612bfc91906147cc565b5f60405180830381865afa158015612c16573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612c3e91906153e5565b9050612c91565b5f67ffffffffffffffff811115612c5f57612c5e614638565b5b604051908082528060200260200182016040528015612c8d5781602001602082028036833780820191505090505b5090505b90565b600b5481565b600e5f9054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612cc76135e4565b600b5481612cd3610dc2565b612cdd9190614e5c565b1115612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590614f67565b60405180910390fd5b612d2882826135c7565b5050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b612dc26135e4565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612e32575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612e299190613f98565b60405180910390fd5b612e3b8161366d565b50565b612e466135e4565b600b548110612e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8190615a98565b60405180910390fd5b80600b8190555050565b612e9c61366b565b612ea58461260c565b8373ffffffffffffffffffffffffffffffffffffffff1663da0194c030856040518363ffffffff1660e01b8152600401612ee092919061568f565b5f604051808303815f87803b158015612ef7575f80fd5b505af1158015612f09573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff16632304aa0230846040518363ffffffff1660e01b8152600401612f489291906156b6565b5f604051808303815f87803b158015612f5f575f80fd5b505af1158015612f71573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff16638d74431430836040518363ffffffff1660e01b8152600401612fb09291906156b6565b5f604051808303815f87803b158015612fc7575f80fd5b505af1158015612fd9573d5f803e3d5ffd5b5050505050505050565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061303d57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061306d5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f8161307e613249565b116131115761308b613251565b8211156130b3576130ac60045f8481526020019081526020015f2054613939565b9050613112565b5f54821015613110575f5b5f60045f8581526020019081526020015f2054915081036130ea57826130e390615ab6565b92506130be565b5f7c01000000000000000000000000000000000000000000000000000000008216149150505b5b5b919050565b805f5260045ffd5b5f61312983611da4565b905081801561316b57508073ffffffffffffffffffffffffffffffffffffffff166131526133aa565b73ffffffffffffffffffffffffffffffffffffffff1614155b15613197576131818161317c6133aa565b612d2c565b6131965761319563cfb3b94260e01b613117565b5b5b8360065f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b5f6001905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b5f81613282613249565b116133715760045f8381526020019081526020015f205490506132a3613251565b8211156132c8576132b381613939565b613382576132c763df2d9b4260e01b613117565b5b5f8103613349575f5482106132e8576132e763df2d9b4260e01b613117565b5b5b60045f836001900393508381526020019081526020015f205490505f810315613344575f7c0100000000000000000000000000000000000000000000000000000000821603156133825761334363df2d9b4260e01b613117565b5b6132e9565b5f7c010000000000000000000000000000000000000000000000000000000082160315613382575b61338163df2d9b4260e01b613117565b5b919050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f6133b36134b0565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b5f5b818110156134265761341b858583866134169190614e5c565b613979565b8060010190506133fd565b5050505050565b5f8060e883901c905060e8613443868684613a77565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b5f5b818110156134a95761349e858583866134999190614e5c565b613a7f565b806001019050613480565b5050505050565b5f33905090565b5f60c060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c9050919050565b5f8261350d8584613b7d565b1490509392505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f82905060c081901b77ffffffffffffffffffffffffffffffffffffffffffffffff83161791508160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050505050565b6135e0828260405180602001604052805f815250613bcb565b5050565b6135ec6134b0565b73ffffffffffffffffffffffffffffffffffffffff1661360a612009565b73ffffffffffffffffffffffffffffffffffffffff16146136695761362d6134b0565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016136609190613f98565b60405180910390fd5b565b565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a026137556133aa565b8786866040518563ffffffff1660e01b81526004016137779493929190615b2f565b6020604051808303815f875af19250505080156137b257506040513d601f19601f820116820180604052508101906137af9190615b8d565b60015b613807573d805f81146137e0576040519150601f19603f3d011682016040523d82523d5f602084013e6137e5565b606091505b505f8151036137ff576137fe63d1a57ed660e01b613117565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600f805461386990614be7565b80601f016020809104026020016040519081016040528092919081815260200182805461389590614be7565b80156138e05780601f106138b7576101008083540402835291602001916138e0565b820191905f5260205f20905b8154815290600101906020018083116138c357829003601f168201915b5050505050905090565b606060a060405101806040526020810391505f825281835b60011561392457600184039350600a81066030018453600a8104905080613902575b50828103602084039350808452505050919050565b5f7c0100000000000000000000000000000000000000000000000000000000821673ffffffffffffffffffffffffffffffffffffffff8316119050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508180156139e75750805b15613a1e576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115613a3c57613a37613a2f6134b0565b858534613c41565b613a70565b8015613a5a57613a55613a4d6134b0565b868534613c47565b613a6f565b613a6e613a656134b0565b86868634613c4d565b5b5b5050505050565b5f9392505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050818015613aed5750805b15613b24576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115613b4257613b3d613b356134b0565b858534613d33565b613b76565b8015613b6057613b5b613b536134b0565b868534613d39565b613b75565b613b74613b6b6134b0565b86868634613d3f565b5b5b5050505050565b5f808290505f5b8451811015613bc057613bb182868381518110613ba457613ba3615bb8565b5b6020026020010151613d46565b91508080600101915050613b84565b508091505092915050565b613bd58383613d70565b5f8373ffffffffffffffffffffffffffffffffffffffff163b14613c3c575f805490505f83820390505b613c115f868380600101945086613730565b613c2657613c2563d1a57ed660e01b613117565b5b818110613bff57815f5414613c39575f80fd5b50505b505050565b50505050565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d2c5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88686866040518463ffffffff1660e01b8152600401613cff93929190614c17565b5f6040518083038186803b158015613d15575f80fd5b505afa158015613d27573d5f803e3d5ffd5b505050505b5050505050565b50505050565b50505050565b5050505050565b5f818310613d5d57613d588284613ee4565b613d68565b613d678383613ee4565b5b905092915050565b5f805490505f8203613d8d57613d8c63b562e8dd60e01b613117565b5b613d995f8483856133fb565b613db783613da85f865f61342d565b613db185613ef8565b17613454565b60045f8381526020019081526020015f2081905550600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f73ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690505f8103613e6857613e67632e07630060e01b613117565b5b5f83830190505f839050613e7a613251565b600183031115613e9557613e946381647e3a60e01b613117565b5b5b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4818160010191508103613e9657815f81905550505050613edf5f84838561347e565b505050565b5f825f528160205260405f20905092915050565b5f6001821460e11b9050919050565b60405180606001604052805f6006811115613f2557613f2461426a565b5b81526020015f6effffffffffffffffffffffffffffff1681526020015f6effffffffffffffffffffffffffffff1681525090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f8282613f59565b9050919050565b613f9281613f78565b82525050565b5f602082019050613fab5f830184613f89565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613ff681613fc2565b8114614000575f80fd5b50565b5f8135905061401181613fed565b92915050565b5f6020828403121561402c5761402b613fba565b5b5f61403984828501614003565b91505092915050565b5f8115159050919050565b61405681614042565b82525050565b5f60208201905061406f5f83018461404d565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6140b782614075565b6140c1818561407f565b93506140d181856020860161408f565b6140da8161409d565b840191505092915050565b5f6020820190508181035f8301526140fd81846140ad565b905092915050565b5f819050919050565b61411781614105565b8114614121575f80fd5b50565b5f813590506141328161410e565b92915050565b5f6020828403121561414d5761414c613fba565b5b5f61415a84828501614124565b91505092915050565b61416c81613f78565b8114614176575f80fd5b50565b5f8135905061418781614163565b92915050565b5f80604083850312156141a3576141a2613fba565b5b5f6141b085828601614179565b92505060206141c185828601614124565b9150509250929050565b5f819050919050565b5f6141ee6141e96141e484613f59565b6141cb565b613f59565b9050919050565b5f6141ff826141d4565b9050919050565b5f614210826141f5565b9050919050565b61422081614206565b82525050565b5f6020820190506142395f830184614217565b92915050565b5f6020828403121561425457614253613fba565b5b5f61426184828501614179565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600381106142a8576142a761426a565b5b50565b5f8190506142b882614297565b919050565b5f6142c7826142ab565b9050919050565b6142d7816142bd565b82525050565b5f6020820190506142f05f8301846142ce565b92915050565b6142ff81614105565b82525050565b5f6020820190506143185f8301846142f6565b92915050565b5f805f6060848603121561433557614334613fba565b5b5f61434286828701614179565b935050602061435386828701614179565b925050604061436486828701614179565b9150509250925092565b6007811061437f5761437e61426a565b5b50565b5f81905061438f8261436e565b919050565b5f61439e82614382565b9050919050565b6143ae81614394565b82525050565b5f6020820190506143c75f8301846143a5565b92915050565b5f805f606084860312156143e4576143e3613fba565b5b5f6143f186828701614179565b935050602061440286828701614179565b925050604061441386828701614124565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261443e5761443d61441d565b5b8235905067ffffffffffffffff81111561445b5761445a614421565b5b60208301915083602082028301111561447757614476614425565b5b9250929050565b5f805f6040848603121561449557614494613fba565b5b5f6144a286828701614124565b935050602084013567ffffffffffffffff8111156144c3576144c2613fbe565b5b6144cf86828701614429565b92509250509250925092565b5f60ff82169050919050565b6144f0816144db565b82525050565b5f6020820190506145095f8301846144e7565b92915050565b6003811061451b575f80fd5b50565b5f8135905061452c8161450f565b92915050565b5f6020828403121561454757614546613fba565b5b5f6145548482850161451e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61458f81613f78565b82525050565b5f6145a08383614586565b60208301905092915050565b5f602082019050919050565b5f6145c28261455d565b6145cc8185614567565b93506145d783614577565b805f5b838110156146075781516145ee8882614595565b97506145f9836145ac565b9250506001810190506145da565b5085935050505092915050565b5f6020820190508181035f83015261462c81846145b8565b905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61466e8261409d565b810181811067ffffffffffffffff8211171561468d5761468c614638565b5b80604052505050565b5f61469f613fb1565b90506146ab8282614665565b919050565b5f67ffffffffffffffff8211156146ca576146c9614638565b5b6146d38261409d565b9050602081019050919050565b828183375f83830152505050565b5f6147006146fb846146b0565b614696565b90508281526020810184848401111561471c5761471b614634565b5b6147278482856146e0565b509392505050565b5f82601f8301126147435761474261441d565b5b81356147538482602086016146ee565b91505092915050565b5f6020828403121561477157614770613fba565b5b5f82013567ffffffffffffffff81111561478e5761478d613fbe565b5b61479a8482850161472f565b91505092915050565b5f6effffffffffffffffffffffffffffff82169050919050565b6147c6816147a3565b82525050565b5f6020820190506147df5f8301846147bd565b92915050565b600781106147f1575f80fd5b50565b5f81359050614802816147e5565b92915050565b614811816147a3565b811461481b575f80fd5b50565b5f8135905061482c81614808565b92915050565b5f805f6060848603121561484957614848613fba565b5b5f614856868287016147f4565b93505060206148678682870161481e565b92505060406148788682870161481e565b9150509250925092565b5f819050919050565b61489481614882565b82525050565b5f6020820190506148ad5f83018461488b565b92915050565b6148bc81614042565b81146148c6575f80fd5b50565b5f813590506148d7816148b3565b92915050565b5f80604083850312156148f3576148f2613fba565b5b5f61490085828601614179565b9250506020614911858286016148c9565b9150509250929050565b61492481614882565b811461492e575f80fd5b50565b5f8135905061493f8161491b565b92915050565b5f806040838503121561495b5761495a613fba565b5b5f61496885828601614931565b925050602061497985828601614931565b9150509250929050565b5f67ffffffffffffffff82111561499d5761499c614638565b5b6149a68261409d565b9050602081019050919050565b5f6149c56149c084614983565b614696565b9050828152602081018484840111156149e1576149e0614634565b5b6149ec8482856146e0565b509392505050565b5f82601f830112614a0857614a0761441d565b5b8135614a188482602086016149b3565b91505092915050565b5f805f8060808587031215614a3957614a38613fba565b5b5f614a4687828801614179565b9450506020614a5787828801614179565b9350506040614a6887828801614124565b925050606085013567ffffffffffffffff811115614a8957614a88613fbe565b5b614a95878288016149f4565b91505092959194509250565b614aaa81614394565b82525050565b614ab9816147a3565b82525050565b606082015f820151614ad35f850182614aa1565b506020820151614ae66020850182614ab0565b506040820151614af96040850182614ab0565b50505050565b5f606082019050614b125f830184614abf565b92915050565b5f8060408385031215614b2e57614b2d613fba565b5b5f614b3b85828601614179565b9250506020614b4c85828601614179565b9150509250929050565b5f805f8060808587031215614b6e57614b6d613fba565b5b5f614b7b87828801614179565b9450506020614b8c878288016147f4565b9350506040614b9d8782880161481e565b9250506060614bae8782880161481e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614bfe57607f821691505b602082108103614c1157614c10614bba565b5b50919050565b5f606082019050614c2a5f830186613f89565b614c376020830185613f89565b614c446040830184613f89565b949350505050565b5f8160601b9050919050565b5f614c6282614c4c565b9050919050565b5f614c7382614c58565b9050919050565b614c8b614c8682613f78565b614c69565b82525050565b5f614c9c8284614c7a565b60148201915081905092915050565b7f4d696e74207068617365206973206e6f74206c69766520666f72204f47206d695f8201527f6e74696e67000000000000000000000000000000000000000000000000000000602082015250565b5f614d0560258361407f565b9150614d1082614cab565b604082019050919050565b5f6020820190508181035f830152614d3281614cf9565b9050919050565b7f496e76616c69642070726f6f66000000000000000000000000000000000000005f82015250565b5f614d6d600d8361407f565b9150614d7882614d39565b602082019050919050565b5f6020820190508181035f830152614d9a81614d61565b9050919050565b7f4f47207061737365732063616e206f6e6c79206265206d696e74656420696e205f8201527f6f6e65207472616e73616374696f6e0000000000000000000000000000000000602082015250565b5f614dfb602f8361407f565b9150614e0682614da1565b604082019050919050565b5f6020820190508181035f830152614e2881614def565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614e6682614105565b9150614e7183614105565b9250828201905080821115614e8957614e88614e2f565b5b92915050565b7f596f75206861766520616c7265616479206d696e74656420746865206d6178695f8201527f6d756d20616d6f756e74206f66204f4720706173736573000000000000000000602082015250565b5f614ee960378361407f565b9150614ef482614e8f565b604082019050919050565b5f6020820190508181035f830152614f1681614edd565b9050919050565b7f4d617820737570706c79206578636565640000000000000000000000000000005f82015250565b5f614f5160118361407f565b9150614f5c82614f1d565b602082019050919050565b5f6020820190508181035f830152614f7e81614f45565b9050919050565b5f614f8f82614105565b9150614f9a83614105565b9250828202614fa881614105565b91508282048414831517614fbf57614fbe614e2f565b5b5092915050565b7f496e73756666696369656e742065746865722073656e740000000000000000005f82015250565b5f614ffa60178361407f565b915061500582614fc6565b602082019050919050565b5f6020820190508181035f83015261502781614fee565b9050919050565b5f80fd5b5f81519050615040816147e5565b92915050565b5f8151905061505481614808565b92915050565b5f6060828403121561506f5761506e61502e565b5b6150796060614696565b90505f61508884828501615032565b5f83015250602061509b84828501615046565b60208301525060406150af84828501615046565b60408301525092915050565b5f606082840312156150d0576150cf613fba565b5b5f6150dd8482850161505a565b91505092915050565b5f6040820190506150f95f8301856147bd565b6151066020830184613f89565b9392505050565b5f8151905061511b816148b3565b92915050565b5f6020828403121561513657615135613fba565b5b5f6151438482850161510d565b91505092915050565b5f81905092915050565b50565b5f6151645f8361514c565b915061516f82615156565b5f82019050919050565b5f61518382615159565b9150819050919050565b7f5769746864726177206661696c656400000000000000000000000000000000005f82015250565b5f6151c1600f8361407f565b91506151cc8261518d565b602082019050919050565b5f6020820190508181035f8301526151ee816151b5565b9050919050565b7f4d696e74207068617365206973206e6f74206c69766520666f7220574c206d695f8201527f6e74696e67000000000000000000000000000000000000000000000000000000602082015250565b5f61524f60258361407f565b915061525a826151f5565b604082019050919050565b5f6020820190508181035f83015261527c81615243565b9050919050565b7f596f75206861766520616c7265616479206d696e74656420746865206d6178695f8201527f6d756d20616d6f756e74206f6620574c20706173736573000000000000000000602082015250565b5f6152dd60378361407f565b91506152e882615283565b604082019050919050565b5f6020820190508181035f83015261530a816152d1565b9050919050565b5f67ffffffffffffffff82111561532b5761532a614638565b5b602082029050602081019050919050565b5f8151905061534a81614163565b92915050565b5f61536261535d84615311565b614696565b9050808382526020820190506020840283018581111561538557615384614425565b5b835b818110156153ae578061539a888261533c565b845260208401935050602081019050615387565b5050509392505050565b5f82601f8301126153cc576153cb61441d565b5b81516153dc848260208601615350565b91505092915050565b5f602082840312156153fa576153f9613fba565b5b5f82015167ffffffffffffffff81111561541757615416613fbe565b5b615423848285016153b8565b91505092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026154887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261544d565b615492868361544d565b95508019841693508086168417925050509392505050565b5f6154c46154bf6154ba84614105565b6141cb565b614105565b9050919050565b5f819050919050565b6154dd836154aa565b6154f16154e9826154cb565b848454615459565b825550505050565b5f90565b6155056154f9565b6155108184846154d4565b505050565b5b81811015615533576155285f826154fd565b600181019050615516565b5050565b601f821115615578576155498161542c565b6155528461543e565b81016020851015615561578190505b61557561556d8561543e565b830182615515565b50505b505050565b5f82821c905092915050565b5f6155985f198460080261557d565b1980831691505092915050565b5f6155b08383615589565b9150826002028217905092915050565b6155c982614075565b67ffffffffffffffff8111156155e2576155e1614638565b5b6155ec8254614be7565b6155f7828285615537565b5f60209050601f831160018114615628575f8415615616578287015190505b61562085826155a5565b865550615687565b601f1984166156368661542c565b5f5b8281101561565d57848901518255600182019150602085019450602081019050615638565b8683101561567a5784890151615676601f891682615589565b8355505b6001600288020188555050505b505050505050565b5f6040820190506156a25f830185613f89565b6156af60208301846143a5565b9392505050565b5f6040820190506156c95f830185613f89565b6156d660208301846147bd565b9392505050565b7f4d696e74207068617365206973206e6f74206c69766520666f72207075626c695f8201527f63206d696e74696e670000000000000000000000000000000000000000000000602082015250565b5f61573760298361407f565b9150615742826156dd565b604082019050919050565b5f6020820190508181035f8301526157648161572b565b9050919050565b7f4d6178207075626c6963206d696e7420657863656564000000000000000000005f82015250565b5f61579f60168361407f565b91506157aa8261576b565b602082019050919050565b5f6020820190508181035f8301526157cc81615793565b9050919050565b7f596f75206861766520616c7265616479206d696e74656420746865206d6178695f8201527f6d756d20616d6f756e74206f66207075626c6963207061737365730000000000602082015250565b5f61582d603b8361407f565b9150615838826157d3565b604082019050919050565b5f6020820190508181035f83015261585a81615821565b9050919050565b61586a81613fc2565b82525050565b5f6020820190506158835f830184615861565b92915050565b5f60408201905061589c5f830185613f89565b6158a96020830184613f89565b9392505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f61590a602f8361407f565b9150615915826158b0565b604082019050919050565b5f6020820190508181035f830152615937816158fe565b9050919050565b5f81905092915050565b5f61595282614075565b61595c818561593e565b935061596c81856020860161408f565b80840191505092915050565b5f815461598481614be7565b61598e818661593e565b9450600182165f81146159a857600181146159bd576159ef565b60ff19831686528115158202860193506159ef565b6159c68561542c565b5f5b838110156159e7578154818901526001820191506020810190506159c8565b838801955050505b50505092915050565b5f615a038286615948565b9150615a0f8285615948565b9150615a1b8284615978565b9150819050949350505050565b7f4e6577206d617820737570706c79206d757374206265206c657373207468616e5f8201527f2063757272656e74206d617820737570706c7900000000000000000000000000602082015250565b5f615a8260338361407f565b9150615a8d82615a28565b604082019050919050565b5f6020820190508181035f830152615aaf81615a76565b9050919050565b5f615ac082614105565b91505f8203615ad257615ad1614e2f565b5b600182039050919050565b5f81519050919050565b5f82825260208201905092915050565b5f615b0182615add565b615b0b8185615ae7565b9350615b1b81856020860161408f565b615b248161409d565b840191505092915050565b5f608082019050615b425f830187613f89565b615b4f6020830186613f89565b615b5c60408301856142f6565b8181036060830152615b6e8184615af7565b905095945050505050565b5f81519050615b8781613fed565b92915050565b5f60208284031215615ba257615ba1613fba565b5b5f615baf84828501615b79565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212205505e6f74d10a05e150457f4f5e2c3a472349cdd933516707730b8a5556936b464736f6c63430008190033000000000000000000000000fb0513e9c5877ed22afd053855987932d8572fad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000f53d86d3c10e914b062926f4a07e443b2a341132861483219d848ef9bda9c45305cf4c3282f346b21ec415aaef139b7e7eb44226781252146237c98bb6fe2404e337cb13a83129307c04fe9a9277f127e06970ec0000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d53544e5463375947595a506f5344376a70676a67464b6245387576485148354c5367614259736875316733382f00000000000000000000
0xa26469706673582212205505e6f74d10a05e150457f4f5e2c3a472349cdd933516707730b8a5556936b464736f6c63430008190033000000000000000000000000fb0513e9c5877ed22afd053855987932d8572fad00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000f53d86d3c10e914b062926f4a07e443b2a341132861483219d848ef9bda9c45305cf4c3282f346b21ec415aaef139b7e7eb44226781252146237c98bb6fe2404e337cb13a83129307c04fe9a9277f127e06970ec0000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d53544e5463375947595a506f5344376a70676a67464b6245387576485148354c5367614259736875316733382f00000000000000000000