[ { "inputs": [], "name": "ConfiscationDisabled", "type": "error" }, { "inputs": [], "name": "DividendAmountIsZero", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "claimer", "type": "address" }, { "internalType": "uint256", "name": "amountAvailable", "type": "uint256" }, { "internalType": "uint256", "name": "amountToClaim", "type": "uint256" } ], "name": "ExceedAmountAvailable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "InvalidPaymentToken", "type": "error" }, { "inputs": [], "name": "LengthsMismatch", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "claimer", "type": "address" } ], "name": "NotAvailableToClaim", "type": "error" }, { "inputs": [], "name": "NotContractAddress", "type": "error" }, { "inputs": [], "name": "NotZeroAddress", "type": "error" }, { "inputs": [], "name": "SupplyCapExceeded", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "UserIsNotAdmin", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "UserIsNotWhitelisted", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "issuer", "type": "address" } ], "name": "ChangeIssuer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newMinter", "type": "address" } ], "name": "ChangeMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint224", "name": "newSupplyCap", "type": "uint224" } ], "name": "ChangeSupplyCap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "newURL", "type": "string" } ], "name": "ChangeURL", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "indexed": false, "internalType": "bool[]", "name": "statuses", "type": "bool[]" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "ChangeWhitelist", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "CheckpointBalanceChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "claimer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountClaimed", "type": "uint256" } ], "name": "DividendClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalAmount", "type": "uint256" } ], "name": "NewDividendDistribution", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "OldPaymentToken", "type": "address" }, { "indexed": true, "internalType": "address", "name": "NewPaymentToken", "type": "address" } ], "name": "NewPaymentToken", "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [], "name": "STOTokenConfiscationDisabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "confiscation", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "confiscateOnBlacklist", "type": "bool" } ], "name": "STOTokenConfiscationStatusChanged", "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": "amount", "type": "uint256[]" } ], "name": "STOTokensConfiscated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "oldValue", "type": "bool" }, { "indexed": true, "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "TrackingChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_totalAmount", "type": "uint256" } ], "name": "addDistDividend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newMinter", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_status", "type": "bool" }, { "internalType": "bool", "name": "_confiscateOnBlacklist", "type": "bool" } ], "name": "changeConfiscation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newIssuer", "type": "address" } ], "name": "changeIssuer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newPaymentToken", "type": "address" } ], "name": "changePaymentToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint224", "name": "newSupplyCap", "type": "uint224" } ], "name": "changeSupplyCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newURL", "type": "string" } ], "name": "changeUrl", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "users", "type": "address[]" }, { "internalType": "bool[]", "name": "statuses", "type": "bool[]" } ], "name": "changeWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint32", "name": "fromBlock", "type": "uint32" }, { "internalType": "uint224", "name": "balance", "type": "uint224" } ], "internalType": "struct STOTokenCheckpointsUpgradeable.Checkpoint", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "upTo", "type": "uint256" }, { "internalType": "address", "name": "onBehalfOf", "type": "address" } ], "name": "claimDividends", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "from", "type": "address[]" }, { "internalType": "uint256[]", "name": "amount", "type": "uint256[]" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "confiscate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "confiscateOnBlacklist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "confiscation", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "confiscationFeatureDisabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableConfiscationFeature", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "dividendDistributions", "outputs": [ { "internalType": "uint256", "name": "totalAmount", "type": "uint256" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" }, { "internalType": "address", "name": "paymentTokenUsed", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_claimer", "type": "address" } ], "name": "getIndexToClaim", "outputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_claimer", "type": "address" }, { "internalType": "uint256", "name": "upTo", "type": "uint256" } ], "name": "getMaxAmountToClaim", "outputs": [ { "internalType": "address[]", "name": "paymentTokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256", "name": "latestBlock", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "holders", "outputs": [ { "internalType": "bool", "name": "isHolder", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "url", "type": "string" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint224", "name": "supplyCap", "type": "uint224" }, { "internalType": "address", "name": "paymentToken", "type": "address" }, { "internalType": "address", "name": "paymentTokenOracle", "type": "address" }, { "internalType": "bool", "name": "paymentTokenOracleUnused", "type": "bool" }, { "internalType": "uint256[]", "name": "preMints", "type": "uint256[]" }, { "internalType": "address[]", "name": "initialHolders", "type": "address[]" } ], "internalType": "struct ISTOFactoryUpgradeable.TokenizationConfig", "name": "config", "type": "tuple" }, { "internalType": "address", "name": "newIssuer", "type": "address" }, { "internalType": "address", "name": "admin", "type": "address" }, { "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "issuer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "lastClaimedBlock", "outputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addresess", "type": "address[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfDistributions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paymentToken", "outputs": [ { "internalType": "contract IERC20MetadataUpgradeable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "oldMinter", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyCap", "outputs": [ { "internalType": "uint224", "name": "", "type": "uint224" } ], "stateMutability": "view", "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": "totalHolders", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "trackings", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "url", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "whitelist_OLD_SLOT", "outputs": [ { "internalType": "bool", "name": "whitelistStatus", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
6080806040523460bd576000549060ff8260081c16606b575060ff808216036031575b604051614ae590816100c38239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386022565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146125e05750806306fdde03146125bc578063095ea7b3146125965780630df869991461256f57806318160ddd1461255157806318a5bbdc146125115780631d143848146124e75780631e3350041461244457806323b872dd1461240c578063248a9ca3146123de5780632f2ff15d146123a25780633013ce29146123785780633092afd514612348578063313ce5671461232c57806336568abe1461229a57806339509351146122485780633aa8275d146121f457806340c10f19146121c457806342966c68146121a75780634558d717146121205780634fcf318e146120e057806353d74fdf146120c157806354fd4d50146120a05780635600f04f1461207c5780635f823d2814611f365780636933d6e314611f175780636fcfff4514611ecf5780636fddbf1d14611bad57806370a0823114611b8f578063715018a614611b3257806379cc679014611b025780637c88e3d914611a965780637e8931591461194f5780638da5cb5b146119265780638e539e8c146118fd5780638f3caa6f146118be5780638f770ad0146118945780639010d07c1461184c57806391d14854146117fe57806392a305f3146117d357806395d89b411461179f57806397835d86146115ba578063983b2d561461155a578063a217fddf1461153e578063a3396e981461151a578063a457c2d714611473578063a6f122121461128d578063a9059cbb1461125c578063b0b0e7ea14610974578063b4341d731461091a578063beae4f1f146108f6578063c19e82d5146108bb578063ca15c8731461088e578063d362e8a714610666578063d547741f1461061e578063dd62ed3e146105cd578063e12f4ab314610580578063e87d87f3146104e9578063f1127ed814610450578063f2fde38b14610388578063f8b2cb4f146102f55763f9cbb667146102c957600080fd5b346102f05760003660031901126102f057602060ff6101635460081c166040519015158152f35b600080fd5b346102f05760203660031901126102f0576001600160a01b0361031661269c565b16600081815260986020526040812054918261034657505050602060005b6040516001600160e01b039091168152f35b8152609860205260408120906000198301928311610374575060209161036b9161312d565b5054811c610334565b634e487b7160e01b81526011600452602490fd5b346102f05760203660031901126102f0576103a161269c565b6103a9613f24565b6001600160a01b031680156103fc5760cb80546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346102f05760403660031901126102f05761046961269c565b6024359063ffffffff821682036102f0576040916104b091600060208551610490816128d9565b82815201526001600160a01b03166000908152609860205283902061312d565b508151906104bd826128d9565b5463ffffffff8116808352602091821c928201928352835190815291516001600160e01b031690820152f35b346102f05760203660031901126102f0576004356001600160e01b038116908190036102f0576105176132db565b806035541180610577575b610566576020817f976bec5625d4f143a2cd89492819ae72f40d1ca1a5ce3837b61be3b31e734f989263ffffffff60e01b61019654161761019655604051908152a1005b637ac7b99d60e11b60005260046000fd5b50801515610522565b346102f05760203660031901126102f05760043560005261013360205260606040600020805490600181015490600260018060a01b03910154169060405192835260208301526040820152f35b346102f05760403660031901126102f0576105e661269c565b6105ee6126b2565b6001600160a01b039182166000908152603460209081526040808320949093168252928352819020549051908152f35b346102f05760403660031901126102f05761066460043561063d6126b2565b9061065f61065a826000526101f960205260016040600020015490565b6133b5565b6138ff565b005b346102f05761067436612997565b909261068161065a612d2e565b818314801590610886575b610875579160005b8181106107565750604051928160608501606086525260808401909160005b81811061072a57505060209150838103828501528281520192906000905b808210610706573360408501527f2d46293323c6a27453b90142da1626d487b3516873fb2f637e8a40ae231c7aed84860385a1005b9091938435908115158092036102f0576020816001938293520195019201906106d1565b909160019060209081906001600160a01b03610745886126de565b1681520194019101929190926106b3565b610764818487969496612cf4565b359081151582036102f057600191156107a45761079b610782612cb5565b610795610790848988612cf4565b612d1a565b9061384f565b01929092610694565b60ff61025d541661082b575b6107cf6107bb612cb5565b6107c9610790848988612cf4565b906138ff565b818060a01b036107e3610790838887612cf4565b1660005261019b60205260ff604060002054161561079b57818060a01b0361080f610790838887612cf4565b1660005261019b602052604060002060ff19815416905561079b565b61087061083c610790838887612cf4565b61086861084d610790858a89612cf4565b6001600160a01b031660009081526033602052604090205490565b90339061348f565b6107b0565b63586cb9e160e01b60005260046000fd5b50821561068c565b346102f05760203660031901126102f05760043560005261022b6020526020604060002054604051908152f35b346102f05760203660031901126102f0576001600160a01b036108dc61269c565b166000526101326020526020604060002054604051908152f35b346102f05760003660031901126102f057602060ff61025d54166040519015158152f35b346102f05760403660031901126102f05761095c61096a61094561093c61269c565b60243590612f9c565b9192906040519485946060865260608601906129fe565b908482036020860152612a3b565b9060408301520390f35b346102f05760803660031901126102f0576004356001600160401b0381116102f0578060040161012060031983360301126102f0576109b16126b2565b6109b96126c8565b906064359160ff83168093036102f05760005460ff8160081c161580611250575b156111f45761ffff19168317610100176000556001600160a01b03821691821580156111d8575b610d38576084860191610a1383612d1a565b3b156111c7576000805261022b6020527fdf4b760b8cb967255f65442eb0ae816ec5456ba937ff881140aa2b4c0aaa8a9754611182576001600160a01b0381166000908152600080516020614a708339815191526020526040902054610b849392610b5f929091610b21919060ff1615611126575b6000805261022b602052610ac56001600160a01b0382167fdf4b760b8cb967255f65442eb0ae816ec5456ba937ff881140aa2b4c0aaa8a9761466f565b50610ad781610ad2612c7c565b61384f565b610ae383610ad2612c7c565b610aef83610ad2612bf1565b610b01610afa612bf1565b339061384f565b610b0d83610ad2612d2e565b610b1981610ad2612ba3565b610ad2612e44565b610b2d81610ad2612c33565b610b4b610b38612c33565b610198546001600160a01b03169061384f565b610b5781610ad2612cb5565b610ad2612d76565b610b6c6024870186612e8c565b610b7c6044899493940188612e8c565b949092612d1a565b610163805460ff1916600117905561013180546001600160a01b0319166001600160a01b0392909216919091179055604051610bca81610bc381612854565b03826128f4565b5115801561110e575b610e72575b50505050610bf660ff60005460081c16610bf18161493e565b61493e565b600160fd55610c058380612e8c565b906001600160401b038211610e5c57610c2982610c24610195546126f2565b612ebe565b600090601f8311600114610dd757610c5a929160009183610dcc575b50508160011b916000199060031b1c19161790565b610195555b60648401356001600160e01b038116908190036102f05763ffffffff60e09493941b6101965416176101965560018060a01b03196101975416176101975560009060e461010485019401915b610cb58583612f12565b9050811015610d495780610cde610790610ccf8886612f12565b6001600160a01b039491612cf4565b1615610d385780610d16610d01610790600194610cfb8a88612f12565b90612cf4565b610d0f83610cfb8888612f12565b3590613f7c565b610d32610d21612cb5565b61079561079084610cfb8b89612f12565b01610cab565b6366385fa360e01b60005260046000fd5b8360005b61012f54811015610d94576101315460008281526101336020526040902060020180546001600160a01b0319166001600160a01b0392909216919091179055600101610d4d565b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860208361ff001960005416600055604051908152a1005b013590508780610c45565b61019582527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677091601f198416815b818110610e445750908460019594939210610e2a575b505050811b0161019555610c5f565b0135600019600384901b60f8161c19169055868080610e1b565b91936020600181928787013581550195019201610e05565b634e487b7160e01b600052604160045260246000fd5b610e8992610e81913691612930565b923691612930565b90610e9f60ff60005460081c16610bf18161493e565b8051906001600160401b038211610e5c57610ebb6036546126f2565b601f81116110a9575b50602090601f831160011461104057610ef59291600091836110355750508160011b916000199060031b1c19161790565b6036555b8051906001600160401b038211610e5c57610f156037546126f2565b601f8111610fd0575b50602090601f8311600114610f6757610f4f929160009183610f5c5750508160011b916000199060031b1c19161790565b6037555b84808080610bd8565b015190508780610c45565b90601f198316916037600052816000209260005b818110610fb85750908460019594939210610f9f575b505050811b01603755610f53565b015160001960f88460031b161c19169055868080610f91565b92936020600181928786015181550195019301610f7b565b60376000527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae601f840160051c8101916020851061102b575b601f0160051c01905b81811061101f5750610f1e565b60008155600101611012565b9091508190611009565b015190508880610c45565b90601f198316916036600052816000209260005b8181106110915750908460019594939210611078575b505050811b01603655610ef9565b015160001960f88460031b161c1916905587808061106a565b92936020600181928786015181550195019301611054565b60366000527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b8601f840160051c81019160208510611104575b601f0160051c01905b8181106110f85750610ec4565b600081556001016110eb565b90915081906110e2565b5060405161111f81610bc38161272c565b5115610bd3565b6001600160a01b0381166000818152600080516020614a7083398151915260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4610a88565b5050336000908152600080516020614a70833981519152602052604090205460ff16156111b257610b8490610b5f565b635486d5fd60e11b6000523360045260246000fd5b63d9716e4360e01b60005260046000fd5b506001600160a01b036111ed60848801612d1a565b1615610a01565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b508360ff8216106109da565b346102f05760403660031901126102f05761128261127861269c565b602435903361348f565b602060405160018152f35b346102f05760603660031901126102f0576004356001600160401b0381116102f057366023820112156102f0578060040135906112c9826129e7565b916112d760405193846128f4565b8083526024602084019160051b830101913683116102f057602401905b82821061145b57602435846001600160401b0382116102f057366023830112156102f057816004013591611327836129e7565b9261133560405194856128f4565b8084526024602085019160051b830101913683116102f057602401905b82821061144b575050506113646126c8565b61136f61065a612e44565b8151835103610875576101635460ff8160081c1690811561143f575b5061142e5760005b82518110156113ce576001906113c86001600160a01b036113b48387612f79565b5116846113c18489612f79565b519161348f565b01611393565b7f76bcf7bb6511eddd9b8ffb295ccec16e6b482d7068cbc15876b6b1ccadc3b51861140c8461142985886040519485946060865260608601906129fe565b6001600160a01b0390921660208501528382036040850152612a3b565b0390a1005b63c2421c4760e01b60005260046000fd5b60ff915016158461138b565b8135815260209182019101611352565b60208091611468846126de565b8152019101906112f4565b346102f05760403660031901126102f05761148c61269c565b60243590336000526034602052604060002060018060a01b038216600052602052604060002054918083106114c75761128292039033613145565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346102f05760003660031901126102f057602060ff61016354166040519015158152f35b346102f05760003660031901126102f057602060405160008152f35b346102f05760203660031901126102f05761157361269c565b61157e61065a612bf1565b61158a81610ad2612c33565b6001600160a01b03167fc87aeafc6e4ae6202adf4f08a76769119ae93cc129c0e0cbac08a118bc18e1ce600080a2005b346102f05760203660031901126102f0576004356115d961065a612d76565b801561178e57610131546040516370a0823160e01b81523360048201526001600160a01b0390911690602081602481855afa801561178257839160009161174d575b5010611732575061012f5460005261013360205280604060002055600019430143811161171c5761012f80546000908152610133602052604080822060010193909355610131548254825292902060020180546001600160a01b0319166001600160a01b0393909316929092179091555461169590612f8d565b61012f55610131546040516323b872dd60e01b6020820152336024820152306044820152606480820184905281526116e0916001600160a01b03166116db6084836128f4565b614822565b610131546040519182526001600160a01b0316907f8a06c85de7acf0de092973f42ca530ecb0eefd399cbad0cc893b568c0a05d4f090602090a2005b634e487b7160e01b600052601160045260246000fd5b633b50867d60e01b6000523360045260245260445260646000fd5b9150506020813d60201161177a575b81611769602093836128f4565b810103126102f0578290518461161b565b3d915061175c565b6040513d6000823e3d90fd5b631f07a0a960e21b60005260046000fd5b346102f05760003660031901126102f0576117cf6040516117c381610bc381612854565b60405191829182612670565b0390f35b346102f05760203660031901126102f05760206117f66117f161269c565b612dd8565b604051908152f35b346102f05760403660031901126102f0576118176126b2565b6004356000526101f960205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346102f05760403660031901126102f05760043560005261022b602052602061187b602435604060002061312d565b905460405160039290921b1c6001600160a01b03168152f35b346102f05760003660031901126102f057610196546040516001600160e01b039091168152602090f35b346102f05760203660031901126102f0576001600160a01b036118df61269c565b166000526097602052602060ff604060002054166040519015158152f35b346102f05760203660031901126102f05760206117f6600435611921438210612a6f565b61324d565b346102f05760003660031901126102f05760cb546040516001600160a01b039091168152602090f35b346102f05760203660031901126102f057611a4661196b61269c565b6119736132db565b61199161197e612c7c565b610197546001600160a01b0316906138ff565b61199c61197e612c33565b6119a761197e612cb5565b610197546001600160a01b0316600081815261019b602052604090205460ff16611a7a575b506119d861197e612bf1565b6119e361197e612d2e565b6119ee61197e612d76565b61019780546001600160a01b0319166001600160a01b038316179055611a1681610ad2612c7c565b611a2281610ad2612c33565b611a2e81610ad2612cb5565b611a3a81610ad2612bf1565b610b5781610ad2612d2e565b610197546001600160a01b03167f337c8e182b05a6e930d5809b72d6d60ae347b5bb503e4a47d04b3deb3bac1d75600080a2005b60005261019b602052604060002060ff198154169055826119cc565b346102f057611aa436612997565b90611ab361065a949394612c33565b83158015611af8575b6108755760005b848110611acc57005b80611af2611ae06107906001948989612cf4565b611aeb838787612cf4565b35906139a8565b01611ac3565b5081841415611abc565b346102f05760403660031901126102f057610664611b1e61269c565b60243590611b2d8233836133f6565b6139e7565b346102f05760003660031901126102f057611b4b613f24565b60cb80546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102f05760203660031901126102f05760206117f661084d61269c565b346102f05760403660031901126102f057611bc66126b2565b611bfb33611bd2612cb5565b6000526101f960205260406000209060018060a01b031660005260205260ff6040600020541690565b1580611eb5575b611ea0576001600160a01b038116903382141580611e8d575b80611e73575b611e5e57600260fd5414611e1957600260fd5581600052609760205260ff60406000205416158015611e03575b611dee57611c5f9060043590612f9c565b836000949293945261013260205260406000205560005b8351811015611de757611c898184612f79565b516001600160a01b03611c9c8387612f79565b5116906040516370a0823160e01b8152306004820152602081602481865afa90811561178257600091611db6575b508111611d3a5790837ff672323216d71b2d59f826d5cc49657006c38667b59ae06ec262b9f71bed64fb602060019594611d2d60405163a9059cbb60e01b8482015285602482015282604482015260448152611d276064826128f4565b86614822565b604051908152a301611c76565b6040516370a0823160e01b815230600482015284602082602481875afa91821561178257600092611d80575b5062dd2d0560e61b60005260045260245260445260646000fd5b90916020823d8211611dae575b81611d9a602093836128f4565b81010312611dab5750519083611d66565b80fd5b3d9150611d8d565b906020823d8211611ddf575b81611dcf602093836128f4565b81010312611dab57505187611cca565b3d9150611dc2565b600160fd55005b50637156dc6b60e11b60005260045260246000fd5b5081600052603360205260406000205415611c4e565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5063aafefe9b60e01b60005260045260246000fd5b508160005261019b60205260ff6040600020541615611c21565b50611e9a81611bd2612cb5565b15611c1b565b63aafefe9b60e01b6000523360045260246000fd5b503360005261019b60205260ff6040600020541615611c02565b346102f05760203660031901126102f0576001600160a01b03611ef061269c565b1660005260986020526020611f09604060002054613ebc565b63ffffffff60405191168152f35b346102f05760003660031901126102f057602061012f54604051908152f35b346102f05760203660031901126102f0576004356001600160401b0381116102f057366023820112156102f057611f77903690602481600401359101612930565b611f8261065a612c7c565b80516001600160401b038111610e5c57611fa281610c24610195546126f2565b602091601f821160011461201657611fd1926000918361200b5750508160011b916000199060031b1c19161790565b610195555b7fd970a4ffb1b6337a5bd970ca6d2146d1077f10c620204499a8eb8af39554d5d46040516020815280611429602082016127cd565b015190508380610c45565b601f19821692610195600052806000209160005b8581106120645750836001951061204b575b505050811b0161019555611fd6565b015160001960f88460031b161c1916905582808061203c565b9192602060018192868501518155019401920161202a565b346102f05760003660031901126102f0576117cf6040516117c381610bc3816127cd565b346102f05760003660031901126102f057602060ff60005416604051908152f35b346102f05760003660031901126102f057602061019954604051908152f35b346102f05760203660031901126102f0576001600160a01b0361210161269c565b1660005261019b602052602060ff604060002054166040519015158152f35b346102f05760203660031901126102f05761213961269c565b6121416132db565b610131546001600160a01b038281169290839083167f7aff98b9a7e6d02506e4404647309158da3b3b7c9bc4ebfac315a16a66e82aaf600080a33b15612192576001600160a01b0319161761013155005b50634e34486d60e01b60005260045260246000fd5b346102f05760203660031901126102f057610664600435336139e7565b346102f05760403660031901126102f0576106646121e061269c565b6121eb61065a612c33565b602435906139a8565b346102f05760003660031901126102f05761221061065a612ba3565b61010061ffff19610163541617610163557fe8c7bd4e40ee63a006f41f5c6597bd530e22998761af384aaf55433da8e32275600080a1005b346102f05760403660031901126102f05761128261226461269c565b336000526034602052604060002060018060a01b03821660005260205261229360406000206024359054612c6f565b9033613145565b346102f05760403660031901126102f0576122b36126b2565b336001600160a01b038216036122cf57610664906004356138ff565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b346102f05760003660031901126102f057602060405160128152f35b346102f05760203660031901126102f05761236161269c565b61236c61065a612bf1565b61158a8161065f612c33565b346102f05760003660031901126102f057610131546040516001600160a01b039091168152602090f35b346102f05760403660031901126102f0576106646004356123c16126b2565b90610ad261065a826000526101f960205260016040600020015490565b346102f05760203660031901126102f05760206117f66004356000526101f960205260016040600020015490565b346102f05760603660031901126102f05761128261242861269c565b6124306126b2565b6044359161243f8333836133f6565b61348f565b346102f05760403660031901126102f0576004358015158091036102f057602435908115158092036102f05761247b61065a612ba3565b6101635460ff8160081c1661142e577fc42e66a9b9fcbe3a7d9b88027fe3d989db64197bf3e2963d0362149c693ee2c5928260ff60609416809360ff1916176101635560ff801961025d5416921680921761025d556040519215158352602083015215156040820152a1005b346102f05760003660031901126102f057610197546040516001600160a01b039091168152602090f35b346102f05760203660031901126102f0576001600160a01b0361253261269c565b1660005261019a602052602060ff604060002054166040519015158152f35b346102f05760003660031901126102f0576020603554604051908152f35b346102f05760403660031901126102f05760206117f661258d61269c565b60243590612acc565b346102f05760403660031901126102f0576112826125b261269c565b6024359033613145565b346102f05760003660031901126102f0576117cf6040516117c381610bc38161272c565b346102f05760203660031901126102f0576004359063ffffffff60e01b82168092036102f057602091635a05180f60e01b8114908115612622575b5015158152f35b637965db0b60e01b81149150811561263c575b508361261b565b6301ffc9a760e01b14905083612635565b60005b8381106126605750506000910152565b8181015183820152602001612650565b60409160208252612690815180928160208601526020868601910161264d565b601f01601f1916010190565b600435906001600160a01b03821682036102f057565b602435906001600160a01b03821682036102f057565b604435906001600160a01b03821682036102f057565b35906001600160a01b03821682036102f057565b90600182811c92168015612722575b602083101461270c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612701565b6036546000929161273c826126f2565b80825291600181169081156127b15750600114612757575050565b603660009081529293509091907f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b85b838310612797575060209250010190565b600181602092949394548385870101520191019190612786565b9050602093945060ff929192191683830152151560051b010190565b61019554600092916127de826126f2565b80825291600181169081156127b157506001146127f9575050565b61019560009081529293509091907f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967705b83831061283a575060209250010190565b600181602092949394548385870101520191019190612829565b60375460009291612864826126f2565b80825291600181169081156127b1575060011461287f575050565b603760009081529293509091907f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae5b8383106128bf575060209250010190565b6001816020929493945483858701015201910191906128ae565b604081019081106001600160401b03821117610e5c57604052565b90601f801991011681019081106001600160401b03821117610e5c57604052565b6001600160401b038111610e5c57601f01601f191660200190565b92919261293c82612915565b9161294a60405193846128f4565b8294818452818301116102f0578281602093846000960137010152565b9181601f840112156102f0578235916001600160401b0383116102f0576020808501948460051b0101116102f057565b60406003198201126102f0576004356001600160401b0381116102f057816129c191600401612967565b92909291602435906001600160401b0382116102f0576129e391600401612967565b9091565b6001600160401b038111610e5c5760051b60200190565b906020808351928381520192019060005b818110612a1c5750505090565b82516001600160a01b0316845260209384019390920191600101612a0f565b906020808351928381520192019060005b818110612a595750505090565b8251845260209384019390920191600101612a4c565b15612a7657565b60405162461bcd60e51b815260206004820152602860248201527f53544f546f6b656e436865636b706f696e74733a20626c6f636b206e6f742079604482015267195d081b5a5b995960c21b6064820152608490fd5b919091612ada438410612a6f565b6001600160a01b031660009081526098602052604081208054919384905b838210612b4b57505081612b16575050905b6001600160e01b031690565b6000198201918211612b3757612b2d92935061312d565b505460201c612b0a565b634e487b7160e01b84526011600452602484fd5b9092612b5e81851860011c828616612c6f565b908263ffffffff612b6f848761312d565b5054161115612b815750925b90612af8565b93506001810180911115612b7b57634e487b7160e01b86526011600452602486fd5b604051602081019060208252601b60408201527f544f4b454e5f434f4e464953434154455f41444d494e5f524f4c450000000000606082015260608152612beb6080826128f4565b51902090565b6040516020810190602082526017604082015276544f4b454e5f4d494e5445525f41444d494e5f524f4c4560481b606082015260608152612beb6080826128f4565b6040516020810190602082526011604082015270544f4b454e5f4d494e5445525f524f4c4560781b606082015260608152612beb6080826128f4565b9190820180921161171c57565b604051602081019060208252600e60408201526d544f4b454e5f55524c5f524f4c4560901b606082015260608152612beb6080826128f4565b6040516020810190602082526014604082015273544f4b454e5f57484954454c4953545f524f4c4560601b606082015260608152612beb6080826128f4565b9190811015612d045760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036102f05790565b604051602081019060208252601a60408201527f544f4b454e5f57484954454c4953545f41444d494e5f524f4c45000000000000606082015260608152612beb6080826128f4565b604051602081019060208252601f60408201527f544f4b454e5f4449564944454e445f4449535452494255544f525f524f4c4500606082015260608152612beb6080826128f4565b9190820391821161171c57565b801561171c576000190190565b6001600160a01b03166000908152610132602052604090205461012f54600019810190811161171c575b806000526101336020528160016040600020015410612e34578015612e2f57612e2a90612dcb565b612e02565b905090565b90506001810180911161171c5790565b604051602081019060208252601e60408201527f544f4b454e5f434f4e464953434154455f4558454355544f525f524f4c450000606082015260608152612beb6080826128f4565b903590601e19813603018212156102f057018035906001600160401b0382116102f0576020019181360383136102f057565b601f8111612eca575050565b6101956000526020600020906020601f840160051c83019310612f08575b601f0160051c01905b818110612efc575050565b60008155600101612ef1565b9091508190612ee8565b903590601e19813603018212156102f057018035906001600160401b0382116102f057602001918160051b360383136102f057565b90612f51826129e7565b612f5e60405191826128f4565b8281528092612f6f601f19916129e7565b0190602036910137565b8051821015612d045760209160051b010190565b600019811461171c5760010190565b91612fa683612dd8565b9161012f548084146130e65781156130de57811161309d57925b612fd2612fcd8486612dbe565b612f47565b90612fe0612fcd8587612dbe565b9460009485925b82821061300257505050506001830180931161171c57929190565b908092939650600052610133602052600161309481604060002001549761305f61304961302f8b87612acc565b61303a438d10612a6f565b6130438c61324d565b906141e3565b86600052610133602052604060002054906142d6565b613069828c612f79565b5284600052610133602052828060a01b036002604060002001541661308e8289612f79565b52612f8d565b93920190612fe7565b60405162461bcd60e51b8152602060048201526019602482015278557020746f20696e646578206f7574206f6620626f756e647360381b6044820152606490fd5b905092612fc0565b50506040516020935091506130fb83836128f4565b6000825260003681376040519261311281856128f4565b60008452506000368137600143019182431161171c57929190565b8054821015612d045760005260206000200190600090565b6001600160a01b03169081156131fc576001600160a01b03169182156131ac5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260348252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b609954906000905b828210613280575050806132695750600090565b600019810190811161171c57612b2d90609961312d565b909161329381841860011c828516612c6f565b908263ffffffff6132a584609961312d565b50541611156132b75750915b90613255565b925060018101809111156132b157634e487b7160e01b600052601160045260246000fd5b336000908152600080516020614a70833981519152602052604090205460ff161561330257565b6133b161330e336144a1565b613399601161331d60006145cd565b92603760405194859276020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b6020850152613359815180926020868801910161264d565b83017001034b99036b4b9b9b4b733903937b6329607d1b8382015261338882518093602060488501910161264d565b01010301601f1981018352826128f4565b60405162461bcd60e51b815291829160048301612670565b0390fd5b60008181526101f96020908152604080832033845290915290205460ff16156133db5750565b6133b190613399601161331d6133f0336144a1565b936145cd565b6001600160a01b03808216600090815260346020908152604080832093861683529290522054929091906001840161342f575b50505050565b80841061344a57613441930391613145565b38808080613429565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b038116801580159493906137fc576001600160a01b0316938415801593906137ab578190816137a3575b8161376f575b5080613749575b611e5e5784600052609760205260ff6040600020541615613703575b8160005260336020526040600020548481106136af5784908360005260336020520360406000205584600052603360205260406000208481540190558482600080516020614a908339815191526020604051888152a381600052603360205280604060002054816136a6575b508061369d575b61366d575b8315158080613653575b8061364c575b61361a575b858314159081613612575b5061358e575b5050505050565b6135da575b506135a1575b808080613587565b60406135c8600080516020614a308339815191529284600052609860205282600020614448565b82519182526020820152a23880613599565b806000526098602052600080516020614a3083398151915260406136018582600020614351565b82519182526020820152a238613593565b905038613581565b610199546001810180911161171c57610199558560005261019a6020526040600020600160ff19825416179055613576565b5083613571565b508560005261019a60205260ff604060002054161561356b565b61019954600019810190811161171c57610199558160005261019a602052604060002060ff198154169055613561565b5083151561355c565b90501538613555565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b84600052610132602052436040600020558460005260976020526040600020600160ff198254161790556001600086600080516020614a508339815191528280a46134e9565b506000858152600080516020614a70833981519152602052604090205460ff16156134cd565b61377c9150611bd2612cb5565b1580613789575b386134c6565b508160005261019b60205260ff6040600020541615613783565b8491506134c0565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b906138a191806000526101f9602052604060002060018060a01b03831660005260205260ff60406000205416156138a4575b600090815261022b602052604090206001600160a01b039091169061466f565b50565b60008181526101f9602090815260408083206001600160a01b03861680855292528220805460ff19166001179055339183907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4613881565b906138a191806000526101f9602052604060002060018060a01b03831660005260205260ff60406000205416613950575b600090815261022b602052604090206001600160a01b03909116906146e0565b60008181526101f9602090815260408083206001600160a01b03861680855292528220805460ff19169055339183907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4613930565b610196549091906001600160e01b031680151590816139d2575b50610566576139d091613f7c565b565b90506139e082603554612c6f565b11386139c2565b6001600160a01b03811690811580159190613e6d57819081613e64575b81613e30575b5080613dee575b611e5e576000805260976020527f683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c75460ff1615613d79575b816000526033602052604060002054838110613d29578390836000526033602052036040600020558260355403603555600082600080516020614a908339815191526020604051878152a38160005260336020528060406000205481613d20575b5080613d17575b613ce7575b808315158080613cb1575b80613ca9575b613c74575b81613c6c575b50613c29575b50506099549081159060008215613c025790613afd915b6001600160e01b0316612dbe565b901580613bdb575b15613b4557613b13906147b3565b600019820191821161171c57613b2d6139d092609961312d565b509063ffffffff82549181199060201b169116179055565b90613b58613b5243613ebc565b926147b3565b9063ffffffff60405193613b6b856128d9565b1683526001600160e01b039091166020830190815290600160401b811015610e5c57806001613b9f9201609955609961312d565b919091613bc5579151915160201b63ffffffff191663ffffffff92909216919091179055565b634e487b7160e01b600052600060045260246000fd5b50600019820182811161171c57613bf863ffffffff91609961312d565b5054164314613b05565b600019840190848211610374575090613c1f613afd92609961312d565b505460201c613aef565b613c34575b80613ad8565b806000526098602052600080516020614a308339815191526040613c5b8482600020614351565b82519182526020820152a238613c2e565b905038613ad2565b61019954600181019250821061171c578291610199556000805261019a6020526040600020600160ff19825416179055613acc565b506000613ac7565b506000805261019a6020527fdf87daca02df9cb008fcda558ae984ab92a5826e62dcff2b5180361f9f18ebf25460ff1615613ac1565b61019954600019810190811161171c57610199558160005261019a602052604060002060ff198154169055613ab6565b50821515613ab1565b90501538613aaa565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b6000808052437f9d9698811d02305f607c0c8c53527c944bd267f42bcbf37ec1f71dd7f89e9df05560976020527f683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c7805460ff191660019081179091559080600080516020614a508339815191528180a4613a49565b5060008052600080516020614a708339815191526020527f33220155a2ee2e63c00aea42de1892ea62285124e258b72aac5d79c2327c63ff5460ff1615613a11565b613e3d9150611bd2612cb5565b1580613e4a575b38613a0a565b508160005261019b60205260ff6040600020541615613e44565b60009150613a04565b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b63ffffffff8111613ed05763ffffffff1690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608490fd5b60cb546001600160a01b03163303613f3857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6035546001600160e01b0390613f93908490612c6f565b11614182576001600160a01b0316801561413d5780600052609760205260ff60406000205416156140f7575b613fcb82603554612c6f565b6035558060005260336020526040600020828154019055806000600080516020614a908339815191526020604051868152a360008052603360205281151580806140dd575b806140d5575b6140a3575b61406b575b5060995490811590600082156140445790613afd915b6001600160e01b0316612c6f565b600019840190848211610374575090614061613afd92609961312d565b505460201c614036565b806000526098602052600080516020614a3083398151915260406140928482600020614448565b82519182526020820152a238614020565b610199546001810180911161171c57610199558160005261019a6020526040600020600160ff1982541617905561401b565b506001614016565b508160005261019a60205260ff6040600020541615614010565b80600052610132602052436040600020558060005260976020526040600020600160ff198254161790556001600082600080516020614a508339815191528280a4613fbf565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b60405162461bcd60e51b815260206004820152603360248201527f53544f546f6b656e436865636b706f696e74733a20746f74616c20737570706c60448201527279207269736b73206f766572666c6f77696e6760681b6064820152608490fd5b600019670de0b6b3a7640000820991670de0b6b3a76400008202918280851094039380850394146142b3578382111561427657670de0b6b3a764000082910960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b60405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606490fd5b50915081156142c0570490565b634e487b7160e01b600052601260045260246000fd5b600019828209828202918280831092039180830392146143405781670de0b6b3a76400001115614276577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a764000091500490565b90918154801592836000146144255761437660005b6001600160e01b03169586612dbe565b809415806143ff575b156143a75761438d906147b3565b90600019830192831161171c576139d092613b2d9161312d565b91906143bb6143b543613ebc565b936147b3565b9163ffffffff604051946143ce866128d9565b1684526001600160e01b039092166020840190815291600160401b811015610e5c57613b9f9160018201815561312d565b50600019830183811161171c5761441b63ffffffff918461312d565b505416431461437f565b600019820182811161171c5761443e614376918361312d565b505460201c614366565b909181548015928360001461446d5761437660005b6001600160e01b03169586612c6f565b600019820182811161171c57614486614376918361312d565b505460201c61445d565b908151811015612d04570160200190565b6000906144ae602a612915565b916144bc60405193846128f4565b602a83526144ca602a612915565b6020840190601f19013682378351156145b957603090538251600110156145a5576078602184015350602960005b6001821161454d5750506145095790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f811660108110156145915761458b91906f181899199a1a9b1b9c1cb0b131b232b360811b901a6145818587614490565b5360041c92612dcb565b906144f8565b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b82526032600452602482fd5b6000906145da6042612915565b916145e860405193846128f4565b604283526145f66042612915565b6020840190601f19013682378351156145b957603090538251600110156145a5576078602184015350604160005b600182116146355750506145095790565b9091600f811660108110156145915761466991906f181899199a1a9b1b9c1cb0b131b232b360811b901a6145818587614490565b90614624565b60018101908260005281602052604060002054156000146146d8578054600160401b811015610e5c576146c36146ac82600187940185558461312d565b819391549060031b91821b91600019901b19161790565b90555491600052602052604060002055600190565b505050600090565b90600182019181600052826020526040600020548015156000146147aa57600019810181811161171c57825460001981019190821161171c57808203614773575b5050508054801561475d57600019019061473b828261312d565b8154906000199060031b1b191690555560005260205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b6147936147836146ac938661312d565b90549060031b1c9283928661312d565b905560005283602052604060002055388080614721565b50505050600090565b6001600160e01b0381116147cd576001600160e01b031690565b60405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608490fd5b6040805190926148a6926001600160a01b031690600090819061484587866128f4565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af13d15614936573d9161488a83612915565b92614897875194856128f4565b83523d6000602085013e61499e565b8051908115918215614913575b5050156148bd5750565b5162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b81925090602091810103126102f0576020015180151581036102f05738806148b3565b60609161499e565b1561494557565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b91929015614a0057508151156149b2575090565b3b156149bb5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015614a135750805190602001fd5b60405162461bcd60e51b81529081906133b1906004830161267056feb6200912058cac20a854ee5344806d3610b304e26d8a0c8fa30af0e08f52797d36e13815f7c3135c86da00dd05eb7524b2deca0d1f600ae017c90206a2a9261fe617317f8ecd5b4136a7cf1f678f332ddf2328508b9c14352675639ffa5ea669ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c8398f10d311eaa5c66c5b54e3c0b5b098c254bb82a6427ae3f8db85f643e1b764736f6c634300081a0033