[ { "inputs": [ { "internalType": "address", "name": "baseColorsAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "MintingToggled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "chunkIndex", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "chunkData", "type": "string" } ], "name": "OverlayChunkUpdated", "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": "baseColorOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "contractOwner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "PaymentSplit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "baseColorTokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "baseColorName", "type": "string" } ], "name": "TokenMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "baseColorTokenIds", "type": "uint256[]" } ], "name": "TokensBatchMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "BASE_COLORS_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINT_PRICE", "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": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "baseColorTokenIds", "type": "uint256[]" } ], "name": "batchMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getBaseColorTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getChunkCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "chunkIndex", "type": "uint256" } ], "name": "getOverlayChunk", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "baseColorTokenId", "type": "uint256" } ], "name": "isBaseColorUsed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMintingEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isTokenIdEligible", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "baseColorTokenId", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "mintedTokenIds", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "tokenId", "type": "uint256" } ], "name": "ownerOf", "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": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "chunkIndex", "type": "uint256" }, { "internalType": "string", "name": "chunkData", "type": "string" } ], "name": "setOverlayChunk", "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": [], "name": "toggleMinting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a0604052600160085f6101000a81548160ff021916908315150217905550348015610029575f80fd5b50604051615a1f380380615a1f833981810160405281019061004b91906102b4565b336040518060400160405280600b81526020017f546573744c6f676f4e46540000000000000000000000000000000000000000008152506040518060400160405280600581526020017f544c4e4654000000000000000000000000000000000000000000000000000000815250815f90816100c69190610519565b5080600190816100d69190610519565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610149575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161014091906105f7565b60405180910390fd5b6101588161019360201b60201c565b508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050610610565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102838261025a565b9050919050565b61029381610279565b811461029d575f80fd5b50565b5f815190506102ae8161028a565b92915050565b5f602082840312156102c9576102c8610256565b5b5f6102d6848285016102a0565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061035a57607f821691505b60208210810361036d5761036c610316565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610394565b6103d98683610394565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61041d610418610413846103f1565b6103fa565b6103f1565b9050919050565b5f819050919050565b61043683610403565b61044a61044282610424565b8484546103a0565b825550505050565b5f90565b61045e610452565b61046981848461042d565b505050565b5b8181101561048c576104815f82610456565b60018101905061046f565b5050565b601f8211156104d1576104a281610373565b6104ab84610385565b810160208510156104ba578190505b6104ce6104c685610385565b83018261046e565b50505b505050565b5f82821c905092915050565b5f6104f15f19846008026104d6565b1980831691505092915050565b5f61050983836104e2565b9150826002028217905092915050565b610522826102df565b67ffffffffffffffff81111561053b5761053a6102e9565b5b6105458254610343565b610550828285610490565b5f60209050601f831160018114610581575f841561056f578287015190505b61057985826104fe565b8655506105e0565b601f19841661058f86610373565b5f5b828110156105b657848901518255600182019150602085019450602081019050610591565b868310156105d357848901516105cf601f8916826104e2565b8355505b6001600288020188555050505b505050505050565b6105f181610279565b82525050565b5f60208201905061060a5f8301846105e8565b92915050565b6080516153db6106445f395f81816110430152818161171701528181611d5e01528181611e5a01526120a201526153db5ff3fe6080604052600436106101e2575f3560e01c806381edada411610101578063ba69ee7011610094578063d9ecf48911610063578063d9ecf489146106e2578063e985e9c51461070a578063ee0cce4e14610746578063f2fde38b14610770576101e2565b8063ba69ee7014610604578063c002d23d14610640578063c78cd12a1461066a578063c87b56dd146106a6576101e2565b8063a0712d68116100d0578063a0712d681461055c578063a22cb46514610578578063b88d4fde146105a0578063b95b63f8146105c8576101e2565b806381edada4146104c25780638da5cb5b146104ec5780638ffbe96b1461051657806395d89b4114610532576101e2565b806342966c68116101795780636352211e116101485780636352211e1461041e57806370a082311461045a578063715018a6146104965780637d55094d146104ac576101e2565b806342966c681461036657806350eea1c01461038e57806355c7ba14146103ca57806356189236146103f4576101e2565b806323b872dd116101b557806323b872dd146102b057806332cb6b0c146102d85780634149b7021461030257806342842e0e1461033e576101e2565b806301ffc9a7146101e657806306fdde0314610222578063081812fc1461024c578063095ea7b314610288575b5f80fd5b3480156101f1575f80fd5b5061020c60048036038101906102079190613591565b610798565b60405161021991906135d6565b60405180910390f35b34801561022d575f80fd5b50610236610879565b604051610243919061365f565b60405180910390f35b348015610257575f80fd5b50610272600480360381019061026d91906136b2565b610908565b60405161027f919061371c565b60405180910390f35b348015610293575f80fd5b506102ae60048036038101906102a9919061375f565b610923565b005b3480156102bb575f80fd5b506102d660048036038101906102d1919061379d565b610939565b005b3480156102e3575f80fd5b506102ec610a38565b6040516102f991906137fc565b60405180910390f35b34801561030d575f80fd5b50610328600480360381019061032391906136b2565b610a3e565b60405161033591906137fc565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f919061379d565b610a9d565b005b348015610371575f80fd5b5061038c600480360381019061038791906136b2565b610abc565b005b348015610399575f80fd5b506103b460048036038101906103af91906136b2565b610bed565b6040516103c1919061365f565b60405180910390f35b3480156103d5575f80fd5b506103de610c8e565b6040516103eb91906135d6565b60405180910390f35b3480156103ff575f80fd5b50610408610ca0565b60405161041591906137fc565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f91906136b2565b610ca9565b604051610451919061371c565b60405180910390f35b348015610465575f80fd5b50610480600480360381019061047b9190613815565b610cba565b60405161048d91906137fc565b60405180910390f35b3480156104a1575f80fd5b506104aa610d70565b005b3480156104b7575f80fd5b506104c0610d83565b005b3480156104cd575f80fd5b506104d6610dfa565b6040516104e391906137fc565b60405180910390f35b3480156104f7575f80fd5b50610500610e03565b60405161050d919061371c565b60405180910390f35b610530600480360381019061052b91906138a1565b610e2b565b005b34801561053d575f80fd5b50610546611500565b604051610553919061365f565b60405180910390f35b610576600480360381019061057191906136b2565b611590565b005b348015610583575f80fd5b5061059e60048036038101906105999190613916565b611ca6565b005b3480156105ab575f80fd5b506105c660048036038101906105c19190613a7c565b611cbc565b005b3480156105d3575f80fd5b506105ee60048036038101906105e991906136b2565b611ce1565b6040516105fb91906135d6565b60405180910390f35b34801561060f575f80fd5b5061062a600480360381019061062591906136b2565b611cfe565b60405161063791906135d6565b60405180910390f35b34801561064b575f80fd5b50610654611d24565b60405161066191906137fc565b60405180910390f35b348015610675575f80fd5b50610690600480360381019061068b91906136b2565b611d2f565b60405161069d91906135d6565b60405180910390f35b3480156106b1575f80fd5b506106cc60048036038101906106c791906136b2565b611e10565b6040516106d9919061365f565b60405180910390f35b3480156106ed575f80fd5b5061070860048036038101906107039190613b51565b611f8d565b005b348015610715575f80fd5b50610730600480360381019061072b9190613bae565b612012565b60405161073d91906135d6565b60405180910390f35b348015610751575f80fd5b5061075a6120a0565b604051610767919061371c565b60405180910390f35b34801561077b575f80fd5b5061079660048036038101906107919190613815565b6120c4565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061086257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610872575061087182612148565b5b9050919050565b60605f805461088790613c19565b80601f01602080910402602001604051908101604052809291908181526020018280546108b390613c19565b80156108fe5780601f106108d5576101008083540402835291602001916108fe565b820191905f5260205f20905b8154815290600101906020018083116108e157829003601f168201915b5050505050905090565b5f610912826121b1565b5061091c82612237565b9050919050565b6109358282610930612270565b612277565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109a9575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016109a0919061371c565b60405180910390fd5b5f6109bc83836109b7612270565b612289565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a32578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610a2993929190613c49565b60405180910390fd5b50505050565b61271081565b5f600754821115610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90613cc8565b60405180910390fd5b600a5f8381526020019081526020015f20549050919050565b610ab783838360405180602001604052805f815250611cbc565b505050565b600754811115610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af890613cc8565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16610b2182610ca9565b73ffffffffffffffffffffffffffffffffffffffff1614610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90613d30565b60405180910390fd5b5f600a5f8381526020019081526020015f20549050610b9582612494565b600a5f8381526020019081526020015f205f9055600b5f8281526020019081526020015f205f6101000a81549060ff0219169055600d5f8281526020019081526020015f205f6101000a81549060ff02191690555050565b606060095f8381526020019081526020015f208054610c0b90613c19565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3790613c19565b8015610c825780601f10610c5957610100808354040283529160200191610c82565b820191905f5260205f20905b815481529060010190602001808311610c6557829003601f168201915b50505050509050919050565b60085f9054906101000a900460ff1681565b5f600754905090565b5f610cb3826121b1565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d2b575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610d22919061371c565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d78612516565b610d815f61259d565b565b610d8b612516565b60085f9054906101000a900460ff161560085f6101000a81548160ff0219169083151502179055507f6bdfe227d5db299c59aa56d5f846f40dbd73b271aaa78e18ed74fc3e00b8aa6b60085f9054906101000a900460ff16604051610df091906135d6565b60405180910390a1565b5f600c54905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085f9054906101000a900460ff16610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090613d98565b60405180910390fd5b5f8282905090508066038d7ea4c68000610e939190613de3565b341015610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90613e6e565b60405180910390fd5b61271081600754610ee69190613e8c565b1115610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e90613f09565b60405180910390fd5b5f8167ffffffffffffffff811115610f4257610f41613958565b5b604051908082528060200260200182016040528015610f705781602001602082028036833780820191505090505b5090505f5b828110156114a7575f858583818110610f9157610f90613f27565b5b905060200201359050600b5f8281526020019081526020015f205f9054906101000a900460ff1615610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90613f9e565b60405180910390fd5b61100181611d2f565b611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790614006565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000090505f8173ffffffffffffffffffffffffffffffffffffffff1663fa485ab4846040518263ffffffff1660e01b815260040161109e919061406e565b5f60405180830381865afa1580156110b8573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110e09190614138565b90505f8273ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b815260040161111c91906137fc565b602060405180830381865afa158015611137573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115b9190614193565b90505f600266038d7ea4c6800061117291906141eb565b90505f8273ffffffffffffffffffffffffffffffffffffffff168260405161119990614248565b5f6040518083038185875af1925050503d805f81146111d3576040519150601f19603f3d011682016040523d82523d5f602084013e6111d8565b606091505b505090508061121c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611213906142cc565b60405180910390fd5b5f611225610e03565b73ffffffffffffffffffffffffffffffffffffffff168360405161124890614248565b5f6040518083038185875af1925050503d805f8114611282576040519150601f19603f3d011682016040523d82523d5f602084013e611287565b606091505b50509050806112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290614334565b60405180910390fd5b60075f8154809291906112dd90614352565b91905055505f60075490506112f23382612660565b87600a5f8381526020019081526020015f20819055506001600b5f8a81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f8a81526020019081526020015f205f6101000a81548160ff021916908315150217905550600f5f8281526020019081526020015f208060018154018082558091505060019003905f5260205f20015f6040518060400160405280600a81526020017f4261736520436f6c6f7200000000000000000000000000000000000000000000815250909190915090816113cc9190614536565b5085600e5f8381526020019081526020015f206040516113eb90614659565b908152602001604051809103902090816114059190614536565b50808a8a8151811061141a57611419613f27565b5b60200260200101818152505061142e610e03565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcbe7af2462de2e2623d925f1390b422d253bd136fcbc116a7053c0820cbe4a538660405161148a91906137fc565b60405180910390a350505050505050508080600101915050610f75565b503373ffffffffffffffffffffffffffffffffffffffff167f11ba5ee0ac455035e1710631dfe31c5a60bd02fca129f9047fcc92b28cbf16138286866040516114f29392919061478c565b60405180910390a250505050565b60606001805461150f90613c19565b80601f016020809104026020016040519081016040528092919081815260200182805461153b90613c19565b80156115865780601f1061155d57610100808354040283529160200191611586565b820191905f5260205f20905b81548152906001019060200180831161156957829003601f168201915b5050505050905090565b60085f9054906101000a900460ff166115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590613d98565b60405180910390fd5b66038d7ea4c68000341015611628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161f90613e6e565b60405180910390fd5b6127106007541061166e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116659061480d565b60405180910390fd5b600b5f8281526020019081526020015f205f9054906101000a900460ff16156116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390613f9e565b60405180910390fd5b6116d581611d2f565b611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b90614006565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000090505f8173ffffffffffffffffffffffffffffffffffffffff1663ea220717846040518263ffffffff1660e01b815260040161177291906137fc565b5f60405180830381865afa15801561178c573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906117b49190614138565b90505f8151116117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f090614875565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1663fa485ab4856040518263ffffffff1660e01b8152600401611833919061406e565b5f60405180830381865afa15801561184d573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906118759190614138565b90505f8151116118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b1906148dd565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b81526004016118f491906137fc565b602060405180830381865afa15801561190f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119339190614193565b90505f600266038d7ea4c6800061194a91906141eb565b90505f8273ffffffffffffffffffffffffffffffffffffffff168260405161197190614248565b5f6040518083038185875af1925050503d805f81146119ab576040519150601f19603f3d011682016040523d82523d5f602084013e6119b0565b606091505b50509050806119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb906142cc565b60405180910390fd5b5f6119fd610e03565b73ffffffffffffffffffffffffffffffffffffffff1683604051611a2090614248565b5f6040518083038185875af1925050503d805f8114611a5a576040519150601f19603f3d011682016040523d82523d5f602084013e611a5f565b606091505b5050905080611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90614334565b60405180910390fd5b611aab610e03565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fcbe7af2462de2e2623d925f1390b422d253bd136fcbc116a7053c0820cbe4a5385604051611b0791906137fc565b60405180910390a360075f815480929190611b2190614352565b91905055505f6007549050611b363382612660565b88600a5f8381526020019081526020015f20819055506001600b5f8b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f8b81526020019081526020015f205f6101000a81548160ff021916908315150217905550600f5f8281526020019081526020015f208060018154018082558091505060019003905f5260205f20015f6040518060400160405280600a81526020017f4261736520436f6c6f720000000000000000000000000000000000000000000081525090919091509081611c109190614536565b5085600e5f8381526020019081526020015f20604051611c2f90614659565b90815260200160405180910390209081611c499190614536565b50803373ffffffffffffffffffffffffffffffffffffffff167ffd8041fd7e4d7047a13bde415402e7278ad32792f9bdf46102a274181893cc948b89604051611c939291906148fb565b60405180910390a3505050505050505050565b611cb8611cb1612270565b838361267d565b5050565b611cc7848484610939565b611cdb611cd2612270565b858585856127e6565b50505050565b600d602052805f5260405f205f915054906101000a900460ff1681565b5f600b5f8381526020019081526020015f205f9054906101000a900460ff169050919050565b66038d7ea4c6800081565b5f600d5f8381526020019081526020015f205f9054906101000a900460ff1615611d5b575f9050611e0b565b5f7f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663ea220717846040518263ffffffff1660e01b8152600401611db891906137fc565b5f60405180830381865afa925050508015611df557506040513d5f823e3d601f19601f82011682018060405250810190611df29190614138565b60015b611e02575f915050611e0b565b5f815111925050505b919050565b6060600754821115611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90613cc8565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000090505f600a5f8581526020019081526020015f205490505f8273ffffffffffffffffffffffffffffffffffffffff1663ea220717836040518263ffffffff1660e01b8152600401611eca91906137fc565b5f60405180830381865afa158015611ee4573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611f0c9190614138565b90505f611f1882612992565b90505f611f24876129c9565b9050611f62611f3288612c5a565b611f3b84612d24565b83604051602001611f4e93929190614af3565b604051602081830303815290604052612d24565b604051602001611f729190614b99565b60405160208183030381529060405295505050505050919050565b611f95612516565b818160095f8681526020019081526020015f209182611fb5929190614bc4565b50600c548310611fd357600183611fcc9190613e8c565b600c819055505b827f3fae2efb4d983f48046e9ba7f154105cc0d88e41c7549ff66381b9ecb1e3d7c78383604051612005929190614cbd565b60405180910390a2505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6120cc612516565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361213c575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612133919061371c565b60405180910390fd5b6121458161259d565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f806121bc83612d51565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222e57826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161222591906137fc565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6122848383836001612d8a565b505050565b5f8061229484612d51565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122d5576122d4818486612f49565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612360576123145f855f80612d8a565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146123df57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f6124a05f835f612289565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361251257816040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161250991906137fc565b60405180910390fd5b5050565b61251e612270565b73ffffffffffffffffffffffffffffffffffffffff1661253c610e03565b73ffffffffffffffffffffffffffffffffffffffff161461259b5761255f612270565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612592919061371c565b60405180910390fd5b565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612679828260405180602001604052805f81525061300c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126ed57816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016126e4919061371c565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516127d991906135d6565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b111561298b578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b81526004016128449493929190614d31565b6020604051808303815f875af192505050801561287f57506040513d601f19601f8201168201806040525081019061287c9190614d8f565b60015b612900573d805f81146128ad576040519150601f19603f3d011682016040523d82523d5f602084013e6128b2565b606091505b505f8151036128f857836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016128ef919061371c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461298957836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612980919061371c565b60405180910390fd5b505b5050505050565b60605f61299d61302f565b905082816040516020016129b2929190614fe8565b604051602081830303815290604052915050919050565b60605f6040518060400160405280600181526020017f5b0000000000000000000000000000000000000000000000000000000000000081525090505f600f5f8581526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015612add578382905f5260205f20018054612a5290613c19565b80601f0160208091040260200160405190810160405280929190818152602001828054612a7e90613c19565b8015612ac95780601f10612aa057610100808354040283529160200191612ac9565b820191905f5260205f20905b815481529060010190602001808311612aac57829003601f168201915b505050505081526020019060010190612a35565b5050505090505f5b8151811015612c30575f828281518110612b0257612b01613f27565b5b602002602001015190505f600e5f8881526020019081526020015f2082604051612b2c919061504d565b90815260200160405180910390208054612b4590613c19565b80601f0160208091040260200160405190810160405280929190818152602001828054612b7190613c19565b8015612bbc5780601f10612b9357610100808354040283529160200191612bbc565b820191905f5260205f20905b815481529060010190602001808311612b9f57829003601f168201915b50505050509050848282604051602001612bd893929190615141565b604051602081830303815290604052945060018451612bf79190615192565b831015612c215784604051602001612c0f919061520f565b60405160208183030381529060405294505b50508080600101915050612ae5565b5081604051602001612c42919061527a565b60405160208183030381529060405292505050919050565b60605f6001612c6884613098565b0190505f8167ffffffffffffffff811115612c8657612c85613958565b5b6040519080825280601f01601f191660200182016040528015612cb85781602001600182028036833780820191505090505b5090505f82602001820190505b600115612d19578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612d0e57612d0d6141be565b5b0494505f8503612cc5575b819350505050919050565b6060612d4a826040518060600160405280604081526020016153666040913960016131e9565b9050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080612dc257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ef4575f612dd1846121b1565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e3b57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612e4e5750612e4c8184612012565b155b15612e9057826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401612e87919061371c565b60405180910390fd5b8115612ef257838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612f54838383613378565b613007575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fc857806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612fbf91906137fc565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612ffe92919061529b565b60405180910390fd5b505050565b6130168383613438565b61302a613021612270565b5f8585856127e6565b505050565b60605f60405180602001604052805f81525090505f5b600c54811015613090578160095f8381526020019081526020015f20604051602001613072929190615342565b60405160208183030381529060405291508080600101915050613045565b508091505090565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106130f4577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816130ea576130e96141be565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613131576d04ee2d6d415b85acef81000000008381613127576131266141be565b5b0492506020810190505b662386f26fc10000831061316057662386f26fc100008381613156576131556141be565b5b0492506010810190505b6305f5e1008310613189576305f5e100838161317f5761317e6141be565b5b0492506008810190505b61271083106131ae5761271083816131a4576131a36141be565b5b0492506004810190505b606483106131d157606483816131c7576131c66141be565b5b0492506002810190505b600a83106131e0576001810190505b80915050919050565b60605f8451036132095760405180602001604052805f8152509050613371565b5f8261323a5760036002865160046132219190613de3565b61322b9190613e8c565b61323591906141eb565b613261565b60036002865161324a9190613e8c565b61325491906141eb565b60046132609190613de3565b5b90505f8167ffffffffffffffff81111561327e5761327d613958565b5b6040519080825280601f01601f1916602001820160405280156132b05781602001600182028036833780820191505090505b509050600185016020820187885189016020810180515f82525b82841015613325576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653600186019550506132ca565b80825289156133655760038c510660018114613348576002811461335b57613363565b603d6001870353603d6002870353613363565b603d60018703535b505b50505050505080925050505b9392505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561342f57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806133f057506133ef8484612012565b5b8061342e57508273ffffffffffffffffffffffffffffffffffffffff1661341683612237565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134a8575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161349f919061371c565b60405180910390fd5b5f6134b483835f612289565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613526575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161351d919061371c565b60405180910390fd5b505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6135708161353c565b811461357a575f80fd5b50565b5f8135905061358b81613567565b92915050565b5f602082840312156135a6576135a5613534565b5b5f6135b38482850161357d565b91505092915050565b5f8115159050919050565b6135d0816135bc565b82525050565b5f6020820190506135e95f8301846135c7565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613631826135ef565b61363b81856135f9565b935061364b818560208601613609565b61365481613617565b840191505092915050565b5f6020820190508181035f8301526136778184613627565b905092915050565b5f819050919050565b6136918161367f565b811461369b575f80fd5b50565b5f813590506136ac81613688565b92915050565b5f602082840312156136c7576136c6613534565b5b5f6136d48482850161369e565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613706826136dd565b9050919050565b613716816136fc565b82525050565b5f60208201905061372f5f83018461370d565b92915050565b61373e816136fc565b8114613748575f80fd5b50565b5f8135905061375981613735565b92915050565b5f806040838503121561377557613774613534565b5b5f6137828582860161374b565b92505060206137938582860161369e565b9150509250929050565b5f805f606084860312156137b4576137b3613534565b5b5f6137c18682870161374b565b93505060206137d28682870161374b565b92505060406137e38682870161369e565b9150509250925092565b6137f68161367f565b82525050565b5f60208201905061380f5f8301846137ed565b92915050565b5f6020828403121561382a57613829613534565b5b5f6138378482850161374b565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261386157613860613840565b5b8235905067ffffffffffffffff81111561387e5761387d613844565b5b60208301915083602082028301111561389a57613899613848565b5b9250929050565b5f80602083850312156138b7576138b6613534565b5b5f83013567ffffffffffffffff8111156138d4576138d3613538565b5b6138e08582860161384c565b92509250509250929050565b6138f5816135bc565b81146138ff575f80fd5b50565b5f81359050613910816138ec565b92915050565b5f806040838503121561392c5761392b613534565b5b5f6139398582860161374b565b925050602061394a85828601613902565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61398e82613617565b810181811067ffffffffffffffff821117156139ad576139ac613958565b5b80604052505050565b5f6139bf61352b565b90506139cb8282613985565b919050565b5f67ffffffffffffffff8211156139ea576139e9613958565b5b6139f382613617565b9050602081019050919050565b828183375f83830152505050565b5f613a20613a1b846139d0565b6139b6565b905082815260208101848484011115613a3c57613a3b613954565b5b613a47848285613a00565b509392505050565b5f82601f830112613a6357613a62613840565b5b8135613a73848260208601613a0e565b91505092915050565b5f805f8060808587031215613a9457613a93613534565b5b5f613aa18782880161374b565b9450506020613ab28782880161374b565b9350506040613ac38782880161369e565b925050606085013567ffffffffffffffff811115613ae457613ae3613538565b5b613af087828801613a4f565b91505092959194509250565b5f8083601f840112613b1157613b10613840565b5b8235905067ffffffffffffffff811115613b2e57613b2d613844565b5b602083019150836001820283011115613b4a57613b49613848565b5b9250929050565b5f805f60408486031215613b6857613b67613534565b5b5f613b758682870161369e565b935050602084013567ffffffffffffffff811115613b9657613b95613538565b5b613ba286828701613afc565b92509250509250925092565b5f8060408385031215613bc457613bc3613534565b5b5f613bd18582860161374b565b9250506020613be28582860161374b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613c3057607f821691505b602082108103613c4357613c42613bec565b5b50919050565b5f606082019050613c5c5f83018661370d565b613c6960208301856137ed565b613c76604083018461370d565b949350505050565b7f436f6c6f724e46543a206e6f6e6578697374656e7420746f6b656e00000000005f82015250565b5f613cb2601b836135f9565b9150613cbd82613c7e565b602082019050919050565b5f6020820190508181035f830152613cdf81613ca6565b9050919050565b7f4e6f7420746f6b656e206f776e657200000000000000000000000000000000005f82015250565b5f613d1a600f836135f9565b9150613d2582613ce6565b602082019050919050565b5f6020820190508181035f830152613d4781613d0e565b9050919050565b7f4d696e74696e672069732064697361626c6564000000000000000000000000005f82015250565b5f613d826013836135f9565b9150613d8d82613d4e565b602082019050919050565b5f6020820190508181035f830152613daf81613d76565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ded8261367f565b9150613df88361367f565b9250828202613e068161367f565b91508282048414831517613e1d57613e1c613db6565b5b5092915050565b7f496e73756666696369656e74207061796d656e740000000000000000000000005f82015250565b5f613e586014836135f9565b9150613e6382613e24565b602082019050919050565b5f6020820190508181035f830152613e8581613e4c565b9050919050565b5f613e968261367f565b9150613ea18361367f565b9250828201905080821115613eb957613eb8613db6565b5b92915050565b7f576f756c6420657863656564206d617820737570706c790000000000000000005f82015250565b5f613ef36017836135f9565b9150613efe82613ebf565b602082019050919050565b5f6020820190508181035f830152613f2081613ee7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4261736520636f6c6f7220616c726561647920757365640000000000000000005f82015250565b5f613f886017836135f9565b9150613f9382613f54565b602082019050919050565b5f6020820190508181035f830152613fb581613f7c565b9050919050565b7f546f6b656e4964206e6f7420656c696769626c6520666f72206d696e74696e675f82015250565b5f613ff06020836135f9565b9150613ffb82613fbc565b602082019050919050565b5f6020820190508181035f83015261401d81613fe4565b9050919050565b7f436f6c6f72204e616d65000000000000000000000000000000000000000000005f82015250565b5f614058600a836135f9565b915061406382614024565b602082019050919050565b5f6040820190506140815f8301846137ed565b81810360208301526140928161404c565b905092915050565b5f67ffffffffffffffff8211156140b4576140b3613958565b5b6140bd82613617565b9050602081019050919050565b5f6140dc6140d78461409a565b6139b6565b9050828152602081018484840111156140f8576140f7613954565b5b614103848285613609565b509392505050565b5f82601f83011261411f5761411e613840565b5b815161412f8482602086016140ca565b91505092915050565b5f6020828403121561414d5761414c613534565b5b5f82015167ffffffffffffffff81111561416a57614169613538565b5b6141768482850161410b565b91505092915050565b5f8151905061418d81613735565b92915050565b5f602082840312156141a8576141a7613534565b5b5f6141b58482850161417f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141f58261367f565b91506142008361367f565b9250826142105761420f6141be565b5b828204905092915050565b5f81905092915050565b50565b5f6142335f8361421b565b915061423e82614225565b5f82019050919050565b5f61425282614228565b9150819050919050565b7f5061796d656e7420746f206261736520636f6c6f72206f776e6572206661696c5f8201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142b66022836135f9565b91506142c18261425c565b604082019050919050565b5f6020820190508181035f8301526142e3816142aa565b9050919050565b7f5061796d656e7420746f20636f6e7472616374206f776e6572206661696c65645f82015250565b5f61431e6020836135f9565b9150614329826142ea565b602082019050919050565b5f6020820190508181035f83015261434b81614312565b9050919050565b5f61435c8261367f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361438e5761438d613db6565b5b600182019050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026143f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826143ba565b6143ff86836143ba565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61443a6144356144308461367f565b614417565b61367f565b9050919050565b5f819050919050565b61445383614420565b61446761445f82614441565b8484546143c6565b825550505050565b5f90565b61447b61446f565b61448681848461444a565b505050565b5b818110156144a95761449e5f82614473565b60018101905061448c565b5050565b601f8211156144ee576144bf81614399565b6144c8846143ab565b810160208510156144d7578190505b6144eb6144e3856143ab565b83018261448b565b50505b505050565b5f82821c905092915050565b5f61450e5f19846008026144f3565b1980831691505092915050565b5f61452683836144ff565b9150826002028217905092915050565b61453f826135ef565b67ffffffffffffffff81111561455857614557613958565b5b6145628254613c19565b61456d8282856144ad565b5f60209050601f83116001811461459e575f841561458c578287015190505b614596858261451b565b8655506145fd565b601f1984166145ac86614399565b5f5b828110156145d3578489015182556001820191506020850194506020810190506145ae565b868310156145f057848901516145ec601f8916826144ff565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b7f4261736520436f6c6f72000000000000000000000000000000000000000000005f82015250565b5f614643600a83614605565b915061464e8261460f565b600a82019050919050565b5f61466382614637565b9150819050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61469f8161367f565b82525050565b5f6146b08383614696565b60208301905092915050565b5f602082019050919050565b5f6146d28261466d565b6146dc8185614677565b93506146e783614687565b805f5b838110156147175781516146fe88826146a5565b9750614709836146bc565b9250506001810190506146ea565b5085935050505092915050565b5f80fd5b82818337505050565b5f61473c8385614677565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561476f5761476e614724565b5b602083029250614780838584614728565b82840190509392505050565b5f6040820190508181035f8301526147a481866146c8565b905081810360208301526147b9818486614731565b9050949350505050565b7f4d617820737570706c79207265616368656400000000000000000000000000005f82015250565b5f6147f76012836135f9565b9150614802826147c3565b602082019050919050565b5f6020820190508181035f830152614824816147eb565b9050919050565b7f4261736520636f6c6f7220646f6573206e6f74206578697374000000000000005f82015250565b5f61485f6019836135f9565b915061486a8261482b565b602082019050919050565b5f6020820190508181035f83015261488c81614853565b9050919050565b7f4261736520636f6c6f72206e616d65206e6f7420666f756e64000000000000005f82015250565b5f6148c76019836135f9565b91506148d282614893565b602082019050919050565b5f6020820190508181035f8301526148f4816148bb565b9050919050565b5f60408201905061490e5f8301856137ed565b81810360208301526149208184613627565b90509392505050565b7f7b226e616d65223a2022426173654c6f676f4e465420230000000000000000005f82015250565b5f61495d601783614605565b915061496882614929565b601782019050919050565b5f61497d826135ef565b6149878185614605565b9350614997818560208601613609565b80840191505092915050565b7f222c20226465736372697074696f6e223a2022416e204e4654207769746820615f8201527f20636f6c6f726564206261636b67726f756e6420616e64206f7665726c61792060208201527f696d616765222c2022696d616765223a2022646174613a696d6167652f73766760408201527f2b786d6c3b6261736536342c0000000000000000000000000000000000000000606082015250565b5f614a49606c83614605565b9150614a54826149a3565b606c82019050919050565b7f222c202261747472696275746573223a200000000000000000000000000000005f82015250565b5f614a93601183614605565b9150614a9e82614a5f565b601182019050919050565b7f7d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614add600183614605565b9150614ae882614aa9565b600182019050919050565b5f614afd82614951565b9150614b098286614973565b9150614b1482614a3d565b9150614b208285614973565b9150614b2b82614a87565b9150614b378284614973565b9150614b4282614ad1565b9150819050949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f614b83601d83614605565b9150614b8e82614b4f565b601d82019050919050565b5f614ba382614b77565b9150614baf8284614973565b915081905092915050565b5f82905092915050565b614bce8383614bba565b67ffffffffffffffff811115614be757614be6613958565b5b614bf18254613c19565b614bfc8282856144ad565b5f601f831160018114614c29575f8415614c17578287013590505b614c21858261451b565b865550614c88565b601f198416614c3786614399565b5f5b82811015614c5e57848901358255600182019150602085019450602081019050614c39565b86831015614c7b5784890135614c77601f8916826144ff565b8355505b6001600288020188555050505b50505050505050565b5f614c9c83856135f9565b9350614ca9838584613a00565b614cb283613617565b840190509392505050565b5f6020820190508181035f830152614cd6818486614c91565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f614d0382614cdf565b614d0d8185614ce9565b9350614d1d818560208601613609565b614d2681613617565b840191505092915050565b5f608082019050614d445f83018761370d565b614d51602083018661370d565b614d5e60408301856137ed565b8181036060830152614d708184614cf9565b905095945050505050565b5f81519050614d8981613567565b92915050565b5f60208284031215614da457614da3613534565b5b5f614db184828501614d7b565b91505092915050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f32305f8201527f30302f737667222076696577426f783d223020302031303020313030223e0000602082015250565b5f614e14603e83614605565b9150614e1f82614dba565b603e82019050919050565b7f3c726563742077696474683d2231303022206865696768743d223130302220665f8201527f696c6c3d22000000000000000000000000000000000000000000000000000000602082015250565b5f614e84602583614605565b9150614e8f82614e2a565b602582019050919050565b7f222f3e00000000000000000000000000000000000000000000000000000000005f82015250565b5f614ece600383614605565b9150614ed982614e9a565b600382019050919050565b7f3c696d61676520687265663d22646174613a696d6167652f7376672b786d6c3b5f8201527f6261736536342c00000000000000000000000000000000000000000000000000602082015250565b5f614f3e602783614605565b9150614f4982614ee4565b602782019050919050565b7f222077696474683d2231303022206865696768743d22313030222f3e000000005f82015250565b5f614f88601c83614605565b9150614f9382614f54565b601c82019050919050565b7f3c2f7376673e00000000000000000000000000000000000000000000000000005f82015250565b5f614fd2600683614605565b9150614fdd82614f9e565b600682019050919050565b5f614ff282614e08565b9150614ffd82614e78565b91506150098285614973565b915061501482614ec2565b915061501f82614f32565b915061502b8284614973565b915061503682614f7c565b915061504182614fc6565b91508190509392505050565b5f6150588284614973565b915081905092915050565b7f7b2274726169745f74797065223a2200000000000000000000000000000000005f82015250565b5f615097600f83614605565b91506150a282615063565b600f82019050919050565b7f222c2276616c7565223a220000000000000000000000000000000000000000005f82015250565b5f6150e1600b83614605565b91506150ec826150ad565b600b82019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f61512b600283614605565b9150615136826150f7565b600282019050919050565b5f61514c8286614973565b91506151578261508b565b91506151638285614973565b915061516e826150d5565b915061517a8284614973565b91506151858261511f565b9150819050949350505050565b5f61519c8261367f565b91506151a78361367f565b92508282039050818111156151bf576151be613db6565b5b92915050565b7f2c000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6151f9600183614605565b9150615204826151c5565b600182019050919050565b5f61521a8284614973565b9150615225826151ed565b915081905092915050565b7f5d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f615264600183614605565b915061526f82615230565b600182019050919050565b5f6152858284614973565b915061529082615258565b915081905092915050565b5f6040820190506152ae5f83018561370d565b6152bb60208301846137ed565b9392505050565b5f81546152ce81613c19565b6152d88186614605565b9450600182165f81146152f2576001811461530757615339565b60ff1983168652811515820286019350615339565b61531085614399565b5f5b8381101561533157815481890152600182019150602081019050615312565b838801955050505b50505092915050565b5f61534d8285614973565b915061535982846152c2565b9150819050939250505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220a02416273a0702367e78d4c1d452c4d6278382106fdd0af70f42dc0c0fa0193364736f6c634300081a00330000000000000000000000007bc1c072742d8391817eb4eb2317f98dc72c61db