[ { "inputs": [ { "internalType": "string", "name": "uri_", "type": "string" }, { "internalType": "address", "name": "ccipRouterAddress", "type": "address" }, { "internalType": "address", "name": "linkTokenAddress", "type": "address" }, { "internalType": "uint64", "name": "currentChainSelector", "type": "uint64" }, { "internalType": "address", "name": "functionsRouterAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "uint64", "name": "chainSelector", "type": "uint64" } ], "name": "ChainNotEnabled", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "msgSender", "type": "address" } ], "name": "ERC1155Core_CallerIsNotIssuerOrItself", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [], "name": "EmptyArgs", "type": "error" }, { "inputs": [], "name": "EmptySource", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "FailedToWithdrawEth", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "router", "type": "address" } ], "name": "InvalidRouter", "type": "error" }, { "inputs": [], "name": "NoInlineSecrets", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "currentBalance", "type": "uint256" }, { "internalType": "uint256", "name": "calculatedFees", "type": "uint256" } ], "name": "NotEnoughBalanceForFees", "type": "error" }, { "inputs": [], "name": "NothingToWithdraw", "type": "error" }, { "inputs": [], "name": "OnlyAutomationForwarderOrOwnerCanCall", "type": "error" }, { "inputs": [], "name": "OnlyRouterCanFulfill", "type": "error" }, { "inputs": [ { "internalType": "uint64", "name": "chainSelector", "type": "uint64" } ], "name": "OperationNotAllowedOnCurrentChain", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "SenderNotEnabled", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "chainSelector", "type": "uint64" } ], "name": "ChainDisabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "chainSelector", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "xNftAddress", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "ccipExtraArgs", "type": "bytes" } ], "name": "ChainEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "destinationChainSelector", "type": "uint64" } ], "name": "CrossChainReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "destinationChainSelector", "type": "uint64" } ], "name": "CrossChainSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "OwnershipTransferRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" } ], "name": "RequestFulfilled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" } ], "name": "RequestSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "issuer", "type": "address" } ], "name": "SetIssuer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "messageId", "type": "bytes32" }, { "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "internalType": "bytes", "name": "sender", "type": "bytes" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct Client.EVMTokenAmount[]", "name": "destTokenAmounts", "type": "tuple[]" } ], "internalType": "struct Client.Any2EVMMessage", "name": "message", "type": "tuple" } ], "name": "ccipReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint64", "name": "destinationChainSelector", "type": "uint64" }, { "internalType": "enum CrossChainBurnAndMintERC1155.PayFeesIn", "name": "payFeesIn", "type": "uint8" } ], "name": "crossChainTransferFrom", "outputs": [ { "internalType": "bytes32", "name": "messageId", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "chainSelector", "type": "uint64" } ], "name": "disableChain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "chainSelector", "type": "uint64" }, { "internalType": "address", "name": "xNftAddress", "type": "address" }, { "internalType": "bytes", "name": "ccipExtraArgs", "type": "bytes" } ], "name": "enableChain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNftMetadata", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getPriceDetails", "outputs": [ { "components": [ { "internalType": "uint80", "name": "listPrice", "type": "uint80" }, { "internalType": "uint80", "name": "originalListPrice", "type": "uint80" }, { "internalType": "uint80", "name": "taxAssessedValue", "type": "uint80" } ], "internalType": "struct RealEstatePriceDetails.PriceDetails", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPrices", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "requestId", "type": "bytes32" }, { "internalType": "bytes", "name": "response", "type": "bytes" }, { "internalType": "bytes", "name": "err", "type": "bytes" } ], "name": "handleOracleFulfillment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_id", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }, { "internalType": "string", "name": "_tokenUri", "type": "string" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }, { "internalType": "string[]", "name": "_tokenUris", "type": "string[]" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "destChainSelector", "type": "uint64" } ], "name": "s_chains", "outputs": [ { "internalType": "address", "name": "xNftAddress", "type": "address" }, { "internalType": "bytes", "name": "ccipExtraArgsBytes", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "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": "address", "name": "automationForwarderAddress", "type": "address" } ], "name": "setAutomationForwarder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_issuer", "type": "address" } ], "name": "setIssuer", "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": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenId", "type": "string" }, { "internalType": "uint64", "name": "subscriptionId", "type": "uint64" }, { "internalType": "uint32", "name": "gasLimit", "type": "uint32" }, { "internalType": "bytes32", "name": "donID", "type": "bytes32" } ], "name": "updatePriceDetails", "outputs": [ { "internalType": "bytes32", "name": "requestId", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_beneficiary", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_beneficiary", "type": "address" }, { "internalType": "address", "name": "_token", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61056060405261043b61010081815290620047b861012039600590620000269082620002cc565b50604051806102e001604052806102b1815260200162004bf36102b19139600690620000539082620002cc565b503480156200006157600080fd5b5060405162004ea438038062004ea48339810160408190526200008491620003cd565b8085858585833380600088846200009b8162000167565b506001600160a01b039081166080528216620000fe5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600780546001600160a01b0319166001600160a01b03848116919091179091558116156200013157620001318162000179565b50506001600b5550506001600160a01b0392831660a052911660c0526001600160401b031660e05250620004ed95505050505050565b6002620001758282620002cc565b5050565b336001600160a01b03821603620001d35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620000f5565b600880546001600160a01b0319166001600160a01b03838116918217909255600754604051919216907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127890600090a350565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025057607f821691505b6020821081036200027157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002c7576000816000526020600020601f850160051c81016020861015620002a25750805b601f850160051c820191505b81811015620002c357828155600101620002ae565b5050505b505050565b81516001600160401b03811115620002e857620002e862000225565b6200030081620002f984546200023b565b8462000277565b602080601f8311600181146200033857600084156200031f5750858301515b600019600386901b1c1916600185901b178555620002c3565b600085815260208120601f198616915b82811015620003695788860151825594840194600190910190840162000348565b5085821015620003885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516001600160a01b0381168114620003b057600080fd5b919050565b80516001600160401b0381168114620003b057600080fd5b600080600080600060a08688031215620003e657600080fd5b85516001600160401b0380821115620003fe57600080fd5b818801915088601f8301126200041357600080fd5b81518181111562000428576200042862000225565b604051601f8201601f19908116603f0116810190838211818310171562000453576200045362000225565b81604052828152602093508b848487010111156200047057600080fd5b600091505b8282101562000494578482018401518183018501529083019062000475565b6000848483010152809950505050620004af81890162000398565b95505050620004c16040870162000398565b9250620004d160608701620003b5565b9150620004e16080870162000398565b90509295509295909350565b60805160a05160c05160e051614244620005746000396000818161060501528181610e1c01528181610f9101526115cb01526000818161091d01528181610ac201528181610b510152610c2e015260008181610a0501528181610bff01528181610cb301528181610d750152611439015260008181610581015261212d01526142446000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c806379ba50971161010f578063c1341c4f116100a2578063f0ed2e8011610071578063f0ed2e801461044d578063f242432a146104f0578063f2fde38b14610503578063f5298aca1461051657600080fd5b8063c1341c4f1461040c578063d40d17bc1461041f578063e6b46ff514610432578063e985e9c51461043a57600080fd5b8063a843a0ab116100de578063a843a0ab146103be578063b942f8cb146103d1578063bd85b039146103e4578063bd9a548b1461040457600080fd5b806379ba50971461037557806385572ffb1461037d5780638da5cb5b14610390578063a22cb465146103ab57600080fd5b80633aeac4e11161018757806351cff8d91161015657806351cff8d91461031b57806355cc4e571461032e5780635dc5ebdb146103415780636b20c4541461036257600080fd5b80633aeac4e1146102b357806341eade46146102c65780634e1273f4146102d95780634f558e79146102f957600080fd5b80630e89341c116101c35780630e89341c1461026557806318160ddd14610285578063240b3b491461028d5780632eb2c2d6146102a057600080fd5b8062fdd58e146101f457806301ffc9a71461021a5780630ca761751461023d5780630ce639c414610252575b600080fd5b6102076102023660046130f4565b610529565b6040519081526020015b60405180910390f35b61022d610228366004613136565b610551565b6040519015158152602001610211565b61025061024b366004613216565b610576565b005b61025061026036600461329e565b6105fa565b6102786102733660046132f3565b610709565b604051610211919061335c565b600454610207565b61020761029b36600461336f565b6107c7565b6102506102ae36600461349a565b610e70565b6102506102c1366004613547565b610ed7565b6102506102d4366004613580565b610f86565b6102ec6102e736600461359b565b611062565b6040516102119190613698565b61022d6103073660046132f3565b600090815260036020526040902054151590565b6102506103293660046136ab565b61112e565b61025061033c3660046136ab565b6111e5565b61035461034f366004613580565b611237565b6040516102119291906136c8565b6102506103703660046136f4565b6112e6565b610250611380565b61025061038b36600461375f565b61142e565b6007546040516001600160a01b039091168152602001610211565b6102506103b93660046137a7565b61161c565b6102076103cc3660046137d5565b61162b565b6102506103df366004613845565b61178e565b6102076103f23660046132f3565b60009081526003602052604090205490565b61027861183c565b61025061041a366004613978565b6118ca565b61025061042d3660046136ab565b611929565b610278611953565b61022d610448366004613547565b611960565b6104bb61045b3660046132f3565b604080516060808201835260008083526020808401829052928401819052938452600e825292829020825193840183525469ffffffffffffffffffff8082168552600160501b8204811692850192909252600160a01b9004169082015290565b60408051825169ffffffffffffffffffff90811682526020808501518216908301529282015190921690820152606001610211565b6102506104fe3660046139d1565b61198e565b6102506105113660046136ab565b6119ed565b610250610524366004613a39565b6119fe565b6000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982166385572ffb60e01b148061054b575061054b82611a6f565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105bf5760405163c6829f8360e01b815260040160405180910390fd5b6105ca838383611abf565b60405183907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a2505050565b610602611b81565b827f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316816001600160401b031603610665576040516340d8e3a160e01b81526001600160401b03821660048201526024015b60405180910390fd5b6040805180820182526001600160a01b03858116825260208083018681526001600160401b0389166000908152600c909252939020825181546001600160a01b0319169216919091178155915190919060018201906106c49082613af0565b509050507f59cc0b49d3359ac35e3872e99199469b6a1025c9a945cd9b6a411bffe337272d8484846040516106fb93929190613baf565b60405180910390a150505050565b6000818152600a602052604081208054606092919061072790613a6e565b80601f016020809104026020016040519081016040528092919081815260200182805461075390613a6e565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b5050505050905060008151116107be576107b983611bd6565b6107c0565b805b9392505050565b60006107d1611c6a565b6001600160401b0383166000908152600c602052604090205483906001600160a01b031661081d57604051630e19fdf760e11b81526001600160401b038216600482015260240161065c565b600061082888610709565b90506108358a89896119fe565b6040805160a0810182526001600160401b0387166000908152600c602052918220546001600160a01b031660c08201528060e0810160405160208183030381529060405281526020018c8c8c8c8c8860405160200161089996959493929190613beb565b60408051601f19818403018152919052815260200160006040519080825280602002602001820160405280156108f557816020015b60408051808201909152600080825260208201528152602001906001900390816108ce5790505b508152602001600187600181111561090f5761090f613c44565b1461091b57600061093d565b7f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b03168152602001600c6000896001600160401b03166001600160401b03168152602001908152602001600020600101805461097e90613a6e565b80601f01602080910402602001604051908101604052809291908181526020018280546109aa90613a6e565b80156109f75780601f106109cc576101008083540402835291602001916109f7565b820191906000526020600020905b8154815290600101906020018083116109da57829003601f168201915b5050505050815250905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320487ded88846040518363ffffffff1660e01b8152600401610a51929190613c5a565b602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190613d36565b90506001866001811115610aa857610aa8613c44565b03610d34576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b359190613d36565b811115610be8576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc49190613d36565b6040516328fdcaa160e01b815260048101919091526024810182905260440161065c565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9b9190613d4f565b506040516396f4e9f960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396f4e9f990610cea908a908690600401613c5a565b6020604051808303816000875af1158015610d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2d9190613d36565b9450610df4565b47811115610d5e576040516328fdcaa160e01b81524760048201526024810182905260440161065c565b6040516396f4e9f960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396f4e9f9908390610dae908b908790600401613c5a565b60206040518083038185885af1158015610dcc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df19190613d36565b94505b7f300e6c20d2e9d8db9b2df40ebce943d9dae3fa3a8eaec841a3d1cb9a1e8b6ad78c8c8c8c8c7f00000000000000000000000000000000000000000000000000000000000000008d604051610e4f9796959493929190613d6c565b60405180910390a150505050610e656001600b55565b979650505050505050565b336001600160a01b0386168114801590610e915750610e8f8682611960565b155b15610ec25760405163711bec9160e11b81526001600160a01b0380831660048301528716602482015260440161065c565b610ecf8686868686611c94565b505050505050565b610edf611b81565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a9190613d36565b905080600003610f6d57604051630686827b60e51b815260040160405180910390fd5b610f816001600160a01b0383168483611cfb565b505050565b610f8e611b81565b807f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316816001600160401b031603610fec576040516340d8e3a160e01b81526001600160401b038216600482015260240161065c565b6001600160401b0382166000908152600c6020526040812080546001600160a01b0319168155906110206001830182613057565b50506040516001600160401b03831681527f67e02000179a6045f4db8fb1b09f01e170b0347e0b698fc5112ce4d798ef19f69060200160405180910390a15050565b606081518351146110935781518351604051635b05999160e01b81526004810192909252602482015260440161065c565b600083516001600160401b038111156110ae576110ae613153565b6040519080825280602002602001820160405280156110d7578160200160208202803683370190505b50905060005b84518110156111265760208082028601015161110190602080840287010151610529565b82828151811061111357611113613dca565b60209081029190910101526001016110dd565b509392505050565b611136611b81565b47600081900361115957604051630686827b60e51b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146111a6576040519150601f19603f3d011682016040523d82523d6000602084013e6111ab565b606091505b5050905080610f8157604051639d11f56360e01b81523360048201526001600160a01b03841660248201526044810183905260640161065c565b6111ed611b81565b600980546001600160a01b0319166001600160a01b0383169081179091556040517fd56ed7b1c1110348b1fbf418469f6fc4acc32d9b675e9e1e448cc19169a64ca090600090a250565b600c60205260009081526040902080546001820180546001600160a01b03909216929161126390613a6e565b80601f016020809104026020016040519081016040528092919081815260200182805461128f90613a6e565b80156112dc5780601f106112b1576101008083540402835291602001916112dc565b820191906000526020600020905b8154815290600101906020018083116112bf57829003601f168201915b5050505050905082565b33301480159061130157506009546001600160a01b03163314155b1561132157604051637725137960e11b815233600482015260240161065c565b6001600160a01b0383163314801590611341575061133f8333611960565b155b1561137557335b60405163711bec9160e11b81526001600160a01b039182166004820152908416602482015260440161065c565b610f81838383611d4d565b6008546001600160a01b031633146113d35760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b604482015260640161065c565b600780546001600160a01b0319808216339081179093556008805490911690556040516001600160a01b03909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611479576040516335fdcccd60e21b815233600482015260240161065c565b611481611c6a565b6114916040820160208301613580565b6001600160401b0381166000908152600c60205260409020546001600160a01b03166114db57604051630e19fdf760e11b81526001600160401b038216600482015260240161065c565b6114eb6040830160208401613580565b6114f86040840184613de0565b81019061150591906136ab565b6001600160401b0382166000908152600c60205260409020546001600160a01b038281169116146115545760405163baf46cd160e01b81526001600160a01b038216600482015260240161065c565b60006115666040860160208701613580565b90506000808080808061157c60608c018c613de0565b8101906115899190613e2d565b9550955095509550955095506115a285858585856118ca565b7f8a69e2b5fbcc69a1f5d6326fb26db5bc43cd18d09d2e79a48a50b77da16432f986868686868c7f00000000000000000000000000000000000000000000000000000000000000006040516115fd9796959493929190613d6c565b60405180910390a1505050505050505050506116196001600b55565b50565b611627338383611d93565b5050565b600d546000906001600160a01b0316331480159061165457506007546001600160a01b03163314155b15611672576040516302dc7d2f60e21b815260040160405180910390fd5b6116b36040805160e0810190915280600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b611723306001600160a01b031663bd9a548b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261171c9190810190613ec7565b8290611e29565b604080516001808252818301909252600091816020015b606081526020019060019003908161173a579050509050868160008151811061176557611765613dca565b602090810291909101015261177a8282611e36565b610e6561178683611e60565b878787612128565b3330148015906117a957506009546001600160a01b03163314155b156117c957604051637725137960e11b815233600482015260240161065c565b6117d5858585856121fa565b60005b8451811015610ecf578181815181106117f3576117f3613dca565b6020026020010151600a600087848151811061181157611811613dca565b6020026020010151815260200190815260200160002090816118339190613af0565b506001016117d8565b6006805461184990613a6e565b80601f016020809104026020016040519081016040528092919081815260200182805461187590613a6e565b80156118c25780601f10611897576101008083540402835291602001916118c2565b820191906000526020600020905b8154815290600101906020018083116118a557829003601f168201915b505050505081565b3330148015906118e557506009546001600160a01b03163314155b1561190557604051637725137960e11b815233600482015260240161065c565b61191185858585612238565b6000848152600a60205260409020610ecf8282613af0565b611931611b81565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005805461184990613a6e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b336001600160a01b03861681148015906119af57506119ad8682611960565b155b156119e05760405163711bec9160e11b81526001600160a01b0380831660048301528716602482015260440161065c565b610ecf8686868686612295565b6119f5611b81565b61161981612323565b333014801590611a1957506009546001600160a01b03163314155b15611a3957604051637725137960e11b815233600482015260240161065c565b6001600160a01b0383163314801590611a595750611a578333611960565b155b15611a645733611348565b610f818383836123cd565b60006001600160e01b03198216636cdb3d1360e11b1480611aa057506001600160e01b031982166303a24d0760e21b145b8061054b57506301ffc9a760e01b6001600160e01b031983161461054b565b805115611ae0578060405162461bcd60e51b815260040161065c919061335c565b60008060008085806020019051810190611afa9190613f34565b6040805160608101825269ffffffffffffffffffff948516815292841660208085019182529285168483019081526000968752600e909352942091518254945191518416600160a01b0269ffffffffffffffffffff60a01b19928516600160501b026001600160a01b03199096169190941617939093179290921617905550505050505050565b6007546001600160a01b03163314611bd45760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b604482015260640161065c565b565b606060028054611be590613a6e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1190613a6e565b8015611c5e5780601f10611c3357610100808354040283529160200191611c5e565b820191906000526020600020905b815481529060010190602001808311611c4157829003601f168201915b50505050509050919050565b6002600b5403611c8d57604051633ee5aeb560e01b815260040160405180910390fd5b6002600b55565b6001600160a01b038416611cbe57604051632bfa23e760e11b81526000600482015260240161065c565b6001600160a01b038516611ce757604051626a0d4560e21b81526000600482015260240161065c565b611cf48585858585612431565b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f81908490612484565b6001600160a01b038316611d7657604051626a0d4560e21b81526000600482015260240161065c565b610f81836000848460405180602001604052806000815250612431565b6001600160a01b038216611dbc5760405162ced3e160e81b81526000600482015260240161065c565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61162782600080846124e7565b8051600003611e585760405163fe936cb760e01b815260040160405180910390fd5b60a090910152565b60606000611e6f610100612565565b9050611ea86040518060400160405280600c81526020016b31b7b232a637b1b0ba34b7b760a11b8152508261258690919063ffffffff16565b8251611ec6906002811115611ebf57611ebf613c44565b829061259f565b6040805180820190915260088152676c616e677561676560c01b6020820152611ef0908290612586565b6040830151611f07908015611ebf57611ebf613c44565b604080518082019091526006815265736f7572636560d01b6020820152611f2f908290612586565b6060830151611f3f908290612586565b60a08301515115611fcb576040805180820190915260048152636172677360e01b6020820152611f70908290612586565b611f79816125d8565b60005b8360a0015151811015611fc157611fb98460a001518281518110611fa257611fa2613dca565b60200260200101518361258690919063ffffffff16565b600101611f7c565b50611fcb816125fc565b6080830151511561208f57600083602001516002811115611fee57611fee613c44565b0361200c5760405163a80d31f760e01b815260040160405180910390fd5b60408051808201909152600f81526e39b2b1b932ba39a637b1b0ba34b7b760891b602082015261203d908290612586565b61205683602001516002811115611ebf57611ebf613c44565b6040805180820190915260078152667365637265747360c81b602082015261207f908290612586565b608083015161208f90829061261a565b60c083015151156121205760408051808201909152600981526862797465734172677360b81b60208201526120c5908290612586565b6120ce816125d8565b60005b8360c00151518110156121165761210e8460c0015182815181106120f7576120f7613dca565b60200260200101518361261a90919063ffffffff16565b6001016120d1565b50612120816125fc565b515192915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663461d27628688600188886040518663ffffffff1660e01b8152600401612180959493929190613f6a565b6020604051808303816000875af115801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c39190613d36565b60405190915081907f1131472297a800fee664d1d89cfa8f7676ff07189ecc53f80bbb5f4969099db890600090a295945050505050565b6001600160a01b03841661222457604051632bfa23e760e11b81526000600482015260240161065c565b612232600085858585612431565b50505050565b6001600160a01b03841661226257604051632bfa23e760e11b81526000600482015260240161065c565b60408051600180825260208201869052818301908152606082018590526080820190925290610ecf600087848487612431565b6001600160a01b0384166122bf57604051632bfa23e760e11b81526000600482015260240161065c565b6001600160a01b0385166122e857604051626a0d4560e21b81526000600482015260240161065c565b6040805160018082526020820186905281830190815260608201859052608082019092529061231a8787848487612431565b50505050505050565b336001600160a01b0382160361237b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161065c565b600880546001600160a01b0319166001600160a01b03838116918217909255600754604051919216907fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127890600090a350565b6001600160a01b0383166123f657604051626a0d4560e21b81526000600482015260240161065c565b604080516001808252602082018590528183019081526060820184905260a08201909252600060808201818152919291611cf4918791859085905b61243d85858585612627565b6001600160a01b03841615611cf45782513390600103612476576020848101519084015161246f83898985858961276d565b5050610ecf565b610ecf818787878787612891565b60006124996001600160a01b0384168361297a565b905080516000141580156124be5750808060200190518101906124bc9190613d4f565b155b15610f8157604051635274afe760e01b81526001600160a01b038416600482015260240161065c565b8051600003612509576040516322ce3edd60e01b815260040160405180910390fd5b8383600281111561251c5761251c613c44565b9081600281111561252f5761252f613c44565b9052506040840182801561254557612545613c44565b9081801561255557612555613c44565b9052506060909301929092525050565b61256d613091565b80516125799083612988565b5060006020820152919050565b61259382600383516129ff565b8151610f819082612b18565b81516125ac9060c2612b39565b5061162782826040516020016125c491815260200190565b60405160208183030381529060405261261a565b6125e3816004612ba2565b6001816020018181516125f69190613fc9565b90525050565b612607816007612ba2565b6001816020018181516125f69190613fdc565b61259382600283516129ff565b61263384848484612bb9565b6001600160a01b0384166126dd576000805b83518110156126c357600083828151811061266257612662613dca565b60200260200101519050806003600087858151811061268357612683613dca565b6020026020010151815260200190815260200160002060008282546126a89190613fc9565b909155506126b890508184613fc9565b925050600101612645565b5080600460008282546126d69190613fc9565b9091555050505b6001600160a01b038316612232576000805b835181101561275c57600083828151811061270c5761270c613dca565b60200260200101519050806003600087858151811061272d5761272d613dca565b6020908102919091018101518252810191909152604001600020805491909103905591909101906001016126ef565b506004805491909103905550505050565b6001600160a01b0384163b15610ecf5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906127b19089908990889088908890600401613fef565b6020604051808303816000875af19250505080156127ec575060408051601f3d908101601f191682019092526127e991810190614029565b60015b612855573d80801561281a576040519150601f19603f3d011682016040523d82523d6000602084013e61281f565b606091505b50805160000361284d57604051632bfa23e760e11b81526001600160a01b038616600482015260240161065c565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b1461231a57604051632bfa23e760e11b81526001600160a01b038616600482015260240161065c565b6001600160a01b0384163b15610ecf5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906128d59089908990889088908890600401614046565b6020604051808303816000875af1925050508015612910575060408051601f3d908101601f1916820190925261290d91810190614029565b60015b61293e573d80801561281a576040519150601f19603f3d011682016040523d82523d6000602084013e61281f565b6001600160e01b0319811663bc197c8160e01b1461231a57604051632bfa23e760e11b81526001600160a01b038616600482015260240161065c565b60606107c083836000612dcd565b6040805180820190915260608152600060208201526129a86020836140a4565b156129d0576129b86020836140a4565b6129c3906020613fdc565b6129cd9083613fc9565b91505b6020808401839052604051808552600081529081840101818110156129f457600080fd5b604052509192915050565b6017816001600160401b031611612a255782516122329060e0600585901b168317612b39565b60ff816001600160401b031611612a65578251612a4d906018611fe0600586901b1617612b39565b508251612232906001600160401b0383166001612e6a565b61ffff816001600160401b031611612aa6578251612a8e906019611fe0600586901b1617612b39565b508251612232906001600160401b0383166002612e6a565b63ffffffff816001600160401b031611612ae9578251612ad190601a611fe0600586901b1617612b39565b508251612232906001600160401b0383166004612e6a565b8251612b0090601b611fe0600586901b1617612b39565b508251612232906001600160401b0383166008612e6a565b6040805180820190915260608152600060208201526107c083838451612eef565b6040805180820190915260608152600060208201528251516000612b5e826001613fc9565b905084602001518210612b7f57612b7f85612b7a8360026140c6565b612fc0565b8451602083820101858153508051821115612b98578181525b5093949350505050565b8151610f8190601f611fe0600585901b1617612b39565b8051825114612be85781518151604051635b05999160e01b81526004810192909252602482015260440161065c565b3360005b8351811015612cee576020818102858101820151908501909101516001600160a01b03881615612c9f576000828152602081815260408083206001600160a01b038c16845290915290205481811015612c78576040516303dee4c560e01b81526001600160a01b038a16600482015260248101829052604481018390526064810184905260840161065c565b6000838152602081815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b03871615612ce4576000828152602081815260408083206001600160a01b038b16845290915281208054839290612cde908490613fc9565b90915550505b5050600101612bec565b508251600103612d6f5760208301516000906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612d60929190918252602082015260400190565b60405180910390a45050611cf4565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612dbe9291906140dd565b60405180910390a45050505050565b606081471015612df25760405163cd78605960e01b815230600482015260240161065c565b600080856001600160a01b03168486604051612e0e9190614102565b60006040518083038185875af1925050503d8060008114612e4b576040519150601f19603f3d011682016040523d82523d6000602084013e612e50565b606091505b5091509150612e60868383612fd7565b9695505050505050565b6040805180820190915260608152600060208201528351516000612e8e8285613fc9565b90508560200151811115612eab57612eab86612b7a8360026140c6565b60006001612ebb86610100614202565b612ec59190613fdc565b90508651828101878319825116178152508051831115612ee3578281525b50959695505050505050565b6040805180820190915260608152600060208201528251821115612f1257600080fd5b8351516000612f218483613fc9565b90508560200151811115612f3e57612f3e86612b7a8360026140c6565b855180518382016020019160009180851115612f58578482525b505050602086015b60208610612f985780518252612f77602083613fc9565b9150612f84602082613fc9565b9050612f91602087613fdc565b9550612f60565b51815160001960208890036101000a0190811690199190911617905250849150509392505050565b8151612fcc8383612988565b506122328382612b18565b606082612fe7576107b98261302e565b8151158015612ffe57506001600160a01b0384163b155b1561302757604051639996b31560e01b81526001600160a01b038516600482015260240161065c565b50806107c0565b80511561303e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461306390613a6e565b6000825580601f10613073575050565b601f01602090049060005260206000209081019061161991906130c6565b60405180604001604052806130b9604051806040016040528060608152602001600081525090565b8152602001600081525090565b5b808211156130db57600081556001016130c7565b5090565b6001600160a01b038116811461161957600080fd5b6000806040838503121561310757600080fd5b8235613112816130df565b946020939093013593505050565b6001600160e01b03198116811461161957600080fd5b60006020828403121561314857600080fd5b81356107c081613120565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561319157613191613153565b604052919050565b60006001600160401b038211156131b2576131b2613153565b50601f01601f191660200190565b600082601f8301126131d157600080fd5b81356131e46131df82613199565b613169565b8181528460208386010111156131f957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561322b57600080fd5b8335925060208401356001600160401b038082111561324957600080fd5b613255878388016131c0565b9350604086013591508082111561326b57600080fd5b50613278868287016131c0565b9150509250925092565b80356001600160401b038116811461329957600080fd5b919050565b6000806000606084860312156132b357600080fd5b6132bc84613282565b925060208401356132cc816130df565b915060408401356001600160401b038111156132e757600080fd5b613278868287016131c0565b60006020828403121561330557600080fd5b5035919050565b60005b8381101561332757818101518382015260200161330f565b50506000910152565b6000815180845261334881602086016020860161330c565b601f01601f19169290920160200192915050565b6020815260006107c06020830184613330565b600080600080600080600060e0888a03121561338a57600080fd5b8735613395816130df565b965060208801356133a5816130df565b9550604088013594506060880135935060808801356001600160401b038111156133ce57600080fd5b6133da8a828b016131c0565b9350506133e960a08901613282565b915060c0880135600281106133fd57600080fd5b8091505092959891949750929550565b60006001600160401b0382111561342657613426613153565b5060051b60200190565b600082601f83011261344157600080fd5b813560206134516131df8361340d565b8083825260208201915060208460051b87010193508684111561347357600080fd5b602086015b8481101561348f5780358352918301918301613478565b509695505050505050565b600080600080600060a086880312156134b257600080fd5b85356134bd816130df565b945060208601356134cd816130df565b935060408601356001600160401b03808211156134e957600080fd5b6134f589838a01613430565b9450606088013591508082111561350b57600080fd5b61351789838a01613430565b9350608088013591508082111561352d57600080fd5b5061353a888289016131c0565b9150509295509295909350565b6000806040838503121561355a57600080fd5b8235613565816130df565b91506020830135613575816130df565b809150509250929050565b60006020828403121561359257600080fd5b6107c082613282565b600080604083850312156135ae57600080fd5b82356001600160401b03808211156135c557600080fd5b818501915085601f8301126135d957600080fd5b813560206135e96131df8361340d565b82815260059290921b8401810191818101908984111561360857600080fd5b948201945b8386101561362f578535613620816130df565b8252948201949082019061360d565b9650508601359250508082111561364557600080fd5b5061365285828601613430565b9150509250929050565b60008151808452602080850194506020840160005b8381101561368d57815187529582019590820190600101613671565b509495945050505050565b6020815260006107c0602083018461365c565b6000602082840312156136bd57600080fd5b81356107c0816130df565b6001600160a01b03831681526040602082018190526000906136ec90830184613330565b949350505050565b60008060006060848603121561370957600080fd5b8335613714816130df565b925060208401356001600160401b038082111561373057600080fd5b61373c87838801613430565b9350604086013591508082111561375257600080fd5b5061327886828701613430565b60006020828403121561377157600080fd5b81356001600160401b0381111561378757600080fd5b820160a081850312156107c057600080fd5b801515811461161957600080fd5b600080604083850312156137ba57600080fd5b82356137c5816130df565b9150602083013561357581613799565b600080600080608085870312156137eb57600080fd5b84356001600160401b0381111561380157600080fd5b61380d878288016131c0565b94505061381c60208601613282565b9250604085013563ffffffff8116811461383557600080fd5b9396929550929360600135925050565b600080600080600060a0868803121561385d57600080fd5b8535613868816130df565b94506020868101356001600160401b038082111561388557600080fd5b6138918a838b01613430565b965060408901359150808211156138a757600080fd5b6138b38a838b01613430565b955060608901359150808211156138c957600080fd5b6138d58a838b016131c0565b945060808901359150808211156138eb57600080fd5b818901915089601f8301126138ff57600080fd5b813561390d6131df8261340d565b81815260059190911b8301840190848101908c83111561392c57600080fd5b8585015b83811015613964578035858111156139485760008081fd5b6139568f89838a01016131c0565b845250918601918601613930565b508096505050505050509295509295909350565b600080600080600060a0868803121561399057600080fd5b853561399b816130df565b9450602086013593506040860135925060608601356001600160401b03808211156139c557600080fd5b61351789838a016131c0565b600080600080600060a086880312156139e957600080fd5b85356139f4816130df565b94506020860135613a04816130df565b9350604086013592506060860135915060808601356001600160401b03811115613a2d57600080fd5b61353a888289016131c0565b600080600060608486031215613a4e57600080fd5b8335613a59816130df565b95602085013595506040909401359392505050565b600181811c90821680613a8257607f821691505b602082108103613aa257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f81576000816000526020600020601f850160051c81016020861015613ad15750805b601f850160051c820191505b81811015610ecf57828155600101613add565b81516001600160401b03811115613b0957613b09613153565b613b1d81613b178454613a6e565b84613aa8565b602080601f831160018114613b525760008415613b3a5750858301515b600019600386901b1c1916600185901b178555610ecf565b600085815260208120601f198616915b82811015613b8157888601518255948401946001909101908401613b62565b5085821015613b9f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b03841681526001600160a01b0383166020820152606060408201819052600090613be290830184613330565b95945050505050565b6001600160a01b03878116825286166020820152604081018590526060810184905260c060808201819052600090613c2590830185613330565b82810360a0840152613c378185613330565b9998505050505050505050565b634e487b7160e01b600052602160045260246000fd5b600060406001600160401b03851683526020604081850152845160a06040860152613c8860e0860182613330565b905081860151603f1980878403016060880152613ca58383613330565b6040890151888203830160808a01528051808352908601945060009350908501905b80841015613cf957845180516001600160a01b0316835286015186830152938501936001939093019290860190613cc7565b5060608901516001600160a01b031660a08901526080890151888203830160c08a01529550613d288187613330565b9a9950505050505050505050565b600060208284031215613d4857600080fd5b5051919050565b600060208284031215613d6157600080fd5b81516107c081613799565b6001600160a01b03888116825287166020820152604081018690526060810185905260e060808201819052600090613da690830186613330565b6001600160401b0394851660a08401529290931660c0909101529695505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112613df757600080fd5b8301803591506001600160401b03821115613e1157600080fd5b602001915036819003821315613e2657600080fd5b9250929050565b60008060008060008060c08789031215613e4657600080fd5b8635613e51816130df565b95506020870135613e61816130df565b9450604087013593506060870135925060808701356001600160401b0380821115613e8b57600080fd5b613e978a838b016131c0565b935060a0890135915080821115613ead57600080fd5b50613eba89828a016131c0565b9150509295509295509295565b600060208284031215613ed957600080fd5b81516001600160401b03811115613eef57600080fd5b8201601f81018413613f0057600080fd5b8051613f0e6131df82613199565b818152856020838501011115613f2357600080fd5b613be282602083016020860161330c565b60008060008060808587031215613f4a57600080fd5b505082516020840151604085015160609095015191969095509092509050565b6001600160401b038616815260a060208201526000613f8c60a0830187613330565b61ffff9590951660408301525063ffffffff92909216606083015260809091015292915050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561054b5761054b613fb3565b8181038181111561054b5761054b613fb3565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090610e6590830184613330565b60006020828403121561403b57600080fd5b81516107c081613120565b6001600160a01b0386811682528516602082015260a0604082018190526000906140729083018661365c565b8281036060840152614084818661365c565b905082810360808401526140988185613330565b98975050505050505050565b6000826140c157634e487b7160e01b600052601260045260246000fd5b500690565b808202811582820484141761054b5761054b613fb3565b6040815260006140f0604083018561365c565b8281036020840152613be2818561365c565b6000825161411481846020870161330c565b9190910192915050565b600181815b8085111561415957816000190482111561413f5761413f613fb3565b8085161561414c57918102915b93841c9390800290614123565b509250929050565b6000826141705750600161054b565b8161417d5750600061054b565b8160018114614193576002811461419d576141b9565b600191505061054b565b60ff8411156141ae576141ae613fb3565b50506001821b61054b565b5060208310610133831016604e8410600b84101617156141dc575081810a61054b565b6141e6838361411e565b80600019048211156141fa576141fa613fb3565b029392505050565b60006107c0838361416156fea2646970667358221220a937fed24d9ab8490751f6763bb30ae35d9d01e21cd7886bdc5b9ee7df7074e264736f6c63430008180033636f6e7374207b20657468657273207d203d20617761697420696d706f727428276e706d3a65746865727340362e31302e3027293b636f6e73742048617368203d20617761697420696d706f727428276e706d3a697066732d6f6e6c792d6861736840342e302e3027293b636f6e737420617069526573706f6e7365203d2061776169742046756e6374696f6e732e6d616b654874747052657175657374287b2020202075726c3a206068747470733a2f2f6170692e627269646765646174616f75747075742e636f6d2f6170692f76322f4f446174612f746573742f50726f70657274792827505f35646261316662393461613430353562396632393639366627293f6163636573735f746f6b656e3d3662616361353437373432633666393661366666373162313338343234663231602c7d293b636f6e7374207265616c45737461746541646472657373203d20617069526573706f6e73652e646174612e556e706172736564416464726573733b636f6e737420796561724275696c74203d204e756d62657228617069526573706f6e73652e646174612e596561724275696c74293b636f6e7374206c6f7453697a6553717561726546656574203d204e756d62657228617069526573706f6e73652e646174612e4c6f7453697a6553717561726546656574293b636f6e7374206c6976696e6741726561203d204e756d62657228617069526573706f6e73652e646174612e4c6976696e6741726561293b636f6e737420626564726f6f6d73546f74616c203d204e756d62657228617069526573706f6e73652e646174612e426564726f6f6d73546f74616c293b636f6e7374206d65746164617461203d207b6e616d653a20605265616c2045737461746520546f6b656e602c617474726962757465733a205b7b2074726169745f747970653a20607265616c45737461746541646472657373602c2076616c75653a207265616c45737461746541646472657373207d2c7b2074726169745f747970653a2060796561724275696c74602c2076616c75653a20796561724275696c74207d2c7b2074726169745f747970653a20606c6f7453697a6553717561726546656574602c2076616c75653a206c6f7453697a6553717561726546656574207d2c7b2074726169745f747970653a20606c6976696e6741726561602c2076616c75653a206c6976696e6741726561207d2c7b2074726169745f747970653a2060626564726f6f6d73546f74616c602c2076616c75653a20626564726f6f6d73546f74616c207d5d7d3b636f6e7374206d65746164617461537472696e67203d204a534f4e2e737472696e67696679286d65746164617461293b636f6e73742069706673436964203d20617761697420486173682e6f66286d65746164617461537472696e67293b72657475726e2046756e6374696f6e732e656e636f6465537472696e672860697066733a2f2f247b697066734369647d60293b636f6e7374207b20657468657273207d203d20617761697420696d706f727428276e706d3a65746865727340362e31302e3027293b636f6e737420616269436f646572203d206574686572732e416269436f6465722e64656661756c74416269436f64657228293b636f6e737420746f6b656e4964203d20617267735b305d3b636f6e737420617069526573706f6e7365203d2061776169742046756e6374696f6e732e6d616b654874747052657175657374287b2020202075726c3a206068747470733a2f2f6170692e627269646765646174616f75747075742e636f6d2f6170692f76322f4f446174612f746573742f50726f70657274792827505f35646261316662393461613430353562396632393639366627293f6163636573735f746f6b656e3d3662616361353437373432633666393661366666373162313338343234663231602c7d293b636f6e7374206c6973745072696365203d204e756d62657228617069526573706f6e73652e646174612e4c6973745072696365293b636f6e7374206f726967696e616c4c6973745072696365203d204e756d62657228617069526573706f6e73652e646174612e4f726967696e616c4c6973745072696365293b636f6e737420746178417373657373656456616c7565203d204e756d62657228617069526573706f6e73652e646174612e546178417373657373656456616c7565293b636f6e737420656e636f646564203d20616269436f6465722e656e636f6465285b6075696e74323536602c206075696e74323536602c206075696e74323536602c206075696e74323536605d2c205b746f6b656e49642c206c69737450726963652c206f726967696e616c4c69737450726963652c20746178417373657373656456616c75655d293b72657475726e206574686572732e676574427974657328656e636f646564293b00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000d3b06cebf099ce7da4accf578aaebfdbd6e88a93000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a324100000000000000000000000000000000000000000000000008f90b8876dee6538000000000000000000000000f9b8fc078197181c841c296c876945aaa425b2780000000000000000000000000000000000000000000000000000000000000000