{
  "_format": "hh-sol-artifact-1",
  "contractName": "AdminWallet",
  "sourceName": "contracts/utils/AdminWallet.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address payable[]",
          "name": "admins",
          "type": "address[]"
        }
      ],
      "name": "AdminsAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address[]",
          "name": "admins",
          "type": "address[]"
        }
      ],
      "name": "AdminsRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_contract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_success",
          "type": "bool"
        }
      ],
      "name": "GenericCall",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "WalletTopped",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "WALLET_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "_admins",
          "type": "address[]"
        }
      ],
      "name": "addAdmins",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "adminToppingAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "blacklist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "day",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gasPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_contract",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "genericCall",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "returnValue",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIdentity",
      "outputs": [
        {
          "internalType": "contract IIdentityV2",
          "name": "",
          "type": "address"
        }
      ],
      "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": "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 payable[]",
          "name": "_admins",
          "type": "address[]"
        },
        {
          "internalType": "contract NameService",
          "name": "_ns",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_gasPrice",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "isAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastGdBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxDailyNewWallets",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nameService",
      "outputs": [
        {
          "internalType": "contract NameService",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_admins",
          "type": "address[]"
        }
      ],
      "name": "removeAdmins",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "removeBlacklist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "removeWhitelist",
      "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": [
        {
          "internalType": "uint256",
          "name": "_toppingAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_adminToppingAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_toppingTimes",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_gasPrice",
          "type": "uint256"
        }
      ],
      "name": "setDefaults",
      "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": [
        {
          "internalType": "uint256",
          "name": "startIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endIndex",
          "type": "uint256"
        }
      ],
      "name": "topAdmins",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "startIndex",
          "type": "uint256"
        }
      ],
      "name": "topAdmins",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "topWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "toppingAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "toppingTimes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_did",
          "type": "string"
        }
      ],
      "name": "whitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_did",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "orgChain",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "dateAuthenticated",
          "type": "uint256"
        }
      ],
      "name": "whitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516127bc61004c600039600081816108d40152818161091401528181610e3001528181610e700152610ee801526127bc6000f3fe60806040526004361061018d5760003560e01c806301ffc9a714610199578063133d93a1146101ce578063248a9ca3146101fe57806324d7806c1461021e5780632beeaca41461023e5780632bf16458146102605780632f2ff15d1461028e57806336568abe146102ae5780633659cfe6146102ce57806336afc6fa146102ee5780633771dcf814610310578063377e11e0146103305780633e6326fc146103505780634f1ef2861461037157806352d1902d146103845780635b61e2c1146103995780635fc944e9146103d257806378c8cda7146103f25780637b76ac91146104125780637e2c13551461043a5780637fad46f21461045a57806391d148541461047a578063971d902c1461049a5780639c54df64146104ba578063a217fddf146104da578063bf64e66c146104ef578063c48924961461051d578063d547741f14610533578063db62683814610553578063e6ea393914610573578063eb91e65114610589578063f3da9f05146105a9578063f9f92be4146105bf578063fe173b97146105df57600080fd5b3661019457005b600080fd5b3480156101a557600080fd5b506101b96101b4366004611ebe565b6105f5565b60405190151581526020015b60405180910390f35b3480156101da57600080fd5b506101f060008051602061270083398151915281565b6040519081526020016101c5565b34801561020a57600080fd5b506101f0610219366004611ee8565b61062c565b34801561022a57600080fd5b506101b9610239366004611f16565b610641565b34801561024a57600080fd5b5061025e610259366004611fe8565b61065b565b005b34801561026c57600080fd5b5061028061027b366004612037565b610725565b6040516101c59291906120df565b34801561029a57600080fd5b5061025e6102a9366004612102565b61082f565b3480156102ba57600080fd5b5061025e6102c9366004612102565b610850565b3480156102da57600080fd5b5061025e6102e9366004611f16565b6108ca565b3480156102fa57600080fd5b50610303610992565b6040516101c59190612132565b34801561031c57600080fd5b5061025e61032b366004611f16565b610a1e565b34801561033c57600080fd5b5061025e61034b366004612169565b610d6e565b34801561035c57600080fd5b5061010054610303906001600160a01b031681565b61025e61037f366004611fe8565b610e26565b34801561039057600080fd5b506101f0610edb565b3480156103a557600080fd5b50610102546103ba906001600160401b031681565b6040516001600160401b0390911681526020016101c5565b3480156103de57600080fd5b5061025e6103ed366004612207565b610f89565b3480156103fe57600080fd5b5061025e61040d366004611f16565b6110b0565b34801561041e57600080fd5b50610102546103ba90600160401b90046001600160401b031681565b34801561044657600080fd5b5061025e610455366004612229565b611149565b34801561046657600080fd5b5061025e6104753660046122ca565b611182565b34801561048657600080fd5b506101b9610495366004612102565b61130e565b3480156104a657600080fd5b5061025e6104b5366004612333565b611339565b3480156104c657600080fd5b5061025e6104d5366004612392565b6113fa565b3480156104e657600080fd5b506101f0600081565b3480156104fb57600080fd5b506101f061050a366004611f16565b6101046020526000908152604090205481565b34801561052957600080fd5b506101f060fd5481565b34801561053f57600080fd5b5061025e61054e366004612102565b61152d565b34801561055f57600080fd5b5061025e61056e366004611ee8565b611549565b34801561057f57600080fd5b506101f060fc5481565b34801561059557600080fd5b5061025e6105a4366004611f16565b611567565b3480156105b557600080fd5b506101f060fe5481565b3480156105cb57600080fd5b5061025e6105da366004611f16565b6115bf565b3480156105eb57600080fd5b506101f060ff5481565b60006001600160e01b03198216637965db0b60e01b148061062657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260c9602052604090206001015490565b60006106266000805160206127008339815191528361130e565b61066433610641565b6106895760405162461bcd60e51b8152600401610680906123c6565b60405180910390fd5b610691610992565b6001600160a01b0316631b02709983836040518363ffffffff1660e01b81526004016106be9291906123f3565b600060405180830381600087803b1580156106d857600080fd5b505af11580156106ec573d6000803e3d6000fd5b50505050600260fd546106ff919061242d565b333111801590610713575061071333610641565b156107215761072133611617565b5050565b6000606061073233610641565b61074e5760405162461bcd60e51b8152600401610680906123c6565b846001600160a01b03168385604051610767919061244f565b60006040518083038185875af1925050503d80600081146107a4576040519150601f19603f3d011682016040523d82523d6000602084013e6107a9565b606091505b5060405191935091506001600160a01b038616907f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e0906107ee9087908790879061246b565b60405180910390a2600260fd54610805919061242d565b333111801590610819575061081933610641565b156108275761082733611617565b935093915050565b6108388261062c565b61084181611721565b61084b838361172b565b505050565b6001600160a01b03811633146108c05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610680565b61072182826117b1565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109125760405162461bcd60e51b815260040161068090612495565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610944611818565b6001600160a01b03161461096a5760405162461bcd60e51b8152600401610680906124cf565b61097381611834565b6040805160008082526020820190925261098f9183919061185b565b50565b6101005460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa1580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a199190612509565b905090565b610a2733610641565b610a435760405162461bcd60e51b8152600401610680906123c6565b6101005460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc9190612509565b90506000816001600160a01b03166370a08231846040518263ffffffff1660e01b8152600401610afc9190612132565b602060405180830381865afa158015610b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3d9190612526565b9050610b47610992565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b8152600401610b729190612132565b602060405180830381865afa158015610b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb3919061253f565b80610bd757506001600160a01b038316600090815261010460205260409020548114155b610c1a5760405162461bcd60e51b8152602060048201526014602482015273155cd95c881a185cc81b9bdd081d5cd9590811c960621b6044820152606401610680565b60fe546101016000610c2a6119c6565b81526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000205410610cc25760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b6064820152608401610680565b600460fc54610cd1919061242d565b836001600160a01b03163110610d165760405162461bcd60e51b815260206004820152600a60248201526968617342616c616e636560b01b6044820152606401610680565b6001600160a01b038316600090815261010460205260409020819055610d3b83611617565b5050600260fd54610d4c919061242d565b333111801590610d605750610d6033610641565b1561098f5761098f33611617565b610d7960003361130e565b610d955760405162461bcd60e51b815260040161068090612561565b60005b8151811015610de457610dd2600080516020612700833981519152838381518110610dc557610dc5612584565b602002602001015161152d565b80610ddc8161259a565b915050610d98565b5080604051610df391906125b3565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e6e5760405162461bcd60e51b815260040161068090612495565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ea0611818565b6001600160a01b031614610ec65760405162461bcd60e51b8152600401610680906124cf565b610ecf82611834565b6107218282600161185b565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f765760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610680565b5060008051602061274083398151915290565b60fb548210610fd05760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b6044820152606401610680565b815b60fb5481108015610fe257508181105b156110a05761101760fb8281548110610ffd57610ffd612584565b6000918252602090912001546001600160a01b0316610641565b80156110595750600260fd5461102d919061242d565b60fb828154811061104057611040612584565b6000918252602090912001546001600160a01b03163111155b1561108e5761108e60fb828154811061107457611074612584565b6000918252602090912001546001600160a01b0316611617565b806110988161259a565b915050610fd2565b50600260fd546106ff919061242d565b6110b933610641565b6110d55760405162461bcd60e51b8152600401610680906123c6565b6110dd610992565b6001600160a01b031663291d9549826040518263ffffffff1660e01b81526004016111089190612132565b600060405180830381600087803b15801561112257600080fd5b505af1158015611136573d6000803e3d6000fd5b50505050600260fd54610d4c919061242d565b61115460003361130e565b6111705760405162461bcd60e51b815260040161068090612561565b61117c848484846119d5565b50505050565b600054610100900460ff16158080156111a25750600054600160ff909116105b806111c357506111b1306119fc565b1580156111c3575060005460ff166001145b6112265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610680565b6000805460ff191660011790558015611249576000805461ff0019166101001790555b611251611a0b565b61125c600084611a78565b611267600033611a78565b61127a620927c0628954406003856119d5565b61010080546001600160a01b0319166001600160a01b0386161790558451156112a6576112a6856113fa565b336001600160a01b038416146112c1576112c160003361152d565b8015611307576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61134233610641565b61135e5760405162461bcd60e51b8152600401610680906123c6565b611366610992565b6001600160a01b031663e737031a858585856040518563ffffffff1660e01b815260040161139794939291906125f2565b600060405180830381600087803b1580156113b157600080fd5b505af11580156113c5573d6000803e3d6000fd5b50505050600260fd546113d8919061242d565b3331118015906113ec57506113ec33610641565b1561117c5761117c33611617565b61140560003361130e565b6114215760405162461bcd60e51b815260040161068090612561565b60005b81518110156114eb5761144f82828151811061144257611442612584565b6020026020010151610641565b15156000036114d95761148960008051602061270083398151915283838151811061147c5761147c612584565b602002602001015161082f565b60fb82828151811061149d5761149d612584565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b806114e38161259a565b915050611424565b50806040516114fa91906125b3565b604051908190038120907f45486b220020cc2482ad1a5e0ae4d5f0b5372cea1b48173f6273c616a504726990600090a250565b6115368261062c565b61153f81611721565b61084b83836117b1565b611558816103ed816032612629565b600260fd54610d4c919061242d565b61157033610641565b61158c5760405162461bcd60e51b8152600401610680906123c6565b611594610992565b6001600160a01b031663c6a276c2826040518263ffffffff1660e01b81526004016111089190612132565b6115c833610641565b6115e45760405162461bcd60e51b8152600401610680906123c6565b6115ec610992565b6001600160a01b031663188efc16826040518263ffffffff1660e01b81526004016111089190612132565b600161010160006116266119c6565b81526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060008282546116669190612629565b909155506000905061167782610641565b6116835760fc54611687565b60fd545b9050600061169f6001600160a01b038416318361263c565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f193505050501580156116d8573d6000803e3d6000fd5b50826001600160a01b03167ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed9858260405161171491815260200190565b60405180910390a2505050565b61098f8133611a82565b611735828261130e565b61072157600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561176d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6117bb828261130e565b1561072157600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020612740833981519152546001600160a01b031690565b61183f60003361130e565b61098f5760405162461bcd60e51b815260040161068090612561565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561188e5761084b83611adb565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118e8575060408051601f3d908101601f191682019092526118e591810190612526565b60015b61194b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610680565b60008051602061274083398151915281146119ba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610680565b5061084b838383611b75565b6000610a19620151804261242d565b60ff8190556119e4818561264f565b60fc556119f1818461264f565b60fd555060fe555050565b6001600160a01b03163b151590565b600054610100900460ff16611a765760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610680565b565b610721828261172b565b611a8c828261130e565b61072157611a9981611b9a565b611aa4836020611bac565b604051602001611ab5929190612666565b60408051601f198184030181529082905262461bcd60e51b8252610680916004016126d5565b611ae4816119fc565b611b465760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610680565b60008051602061274083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611b7e83611d4e565b600082511180611b8b5750805b1561084b5761117c8383611d8e565b60606106266001600160a01b03831660145b60606000611bbb83600261264f565b611bc6906002612629565b6001600160401b03811115611bdd57611bdd611f33565b6040519080825280601f01601f191660200182016040528015611c07576020820181803683370190505b509050600360fc1b81600081518110611c2257611c22612584565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611c5157611c51612584565b60200101906001600160f81b031916908160001a9053506000611c7584600261264f565b611c80906001612629565b90505b6001811115611cf8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611cb457611cb4612584565b1a60f81b828281518110611cca57611cca612584565b60200101906001600160f81b031916908160001a90535060049490941c93611cf1816126e8565b9050611c83565b508315611d475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610680565b9392505050565b611d5781611adb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611d99836119fc565b611df45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610680565b600080846001600160a01b031684604051611e0f919061244f565b600060405180830381855af49150503d8060008114611e4a576040519150601f19603f3d011682016040523d82523d6000602084013e611e4f565b606091505b5091509150611e77828260405180606001604052806027815260200161276060279139611e80565b95945050505050565b60608315611e8f575081611d47565b611d478383815115611ea45781518083602001fd5b8060405162461bcd60e51b815260040161068091906126d5565b600060208284031215611ed057600080fd5b81356001600160e01b031981168114611d4757600080fd5b600060208284031215611efa57600080fd5b5035919050565b6001600160a01b038116811461098f57600080fd5b600060208284031215611f2857600080fd5b8135611d4781611f01565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611f7157611f71611f33565b604052919050565b600082601f830112611f8a57600080fd5b81356001600160401b03811115611fa357611fa3611f33565b611fb6601f8201601f1916602001611f49565b818152846020838601011115611fcb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ffb57600080fd5b823561200681611f01565b915060208301356001600160401b0381111561202157600080fd5b61202d85828601611f79565b9150509250929050565b60008060006060848603121561204c57600080fd5b833561205781611f01565b925060208401356001600160401b0381111561207257600080fd5b61207e86828701611f79565b925050604084013590509250925092565b60005b838110156120aa578181015183820152602001612092565b50506000910152565b600081518084526120cb81602086016020860161208f565b601f01601f19169290920160200192915050565b82151581526040602082015260006120fa60408301846120b3565b949350505050565b6000806040838503121561211557600080fd5b82359150602083013561212781611f01565b809150509250929050565b6001600160a01b0391909116815260200190565b60006001600160401b0382111561215f5761215f611f33565b5060051b60200190565b6000602080838503121561217c57600080fd5b82356001600160401b0381111561219257600080fd5b8301601f810185136121a357600080fd5b80356121b66121b182612146565b611f49565b81815260059190911b820183019083810190878311156121d557600080fd5b928401925b828410156121fc5783356121ed81611f01565b825292840192908401906121da565b979650505050505050565b6000806040838503121561221a57600080fd5b50508035926020909101359150565b6000806000806080858703121561223f57600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f83011261226c57600080fd5b8135602061227c6121b183612146565b82815260059290921b8401810191818101908684111561229b57600080fd5b8286015b848110156122bf5780356122b281611f01565b835291830191830161229f565b509695505050505050565b600080600080608085870312156122e057600080fd5b84356001600160401b038111156122f657600080fd5b6123028782880161225b565b945050602085013561231381611f01565b9250604085013561232381611f01565b9396929550929360600135925050565b6000806000806080858703121561234957600080fd5b843561235481611f01565b935060208501356001600160401b0381111561236f57600080fd5b61237b87828801611f79565b949794965050505060408301359260600135919050565b6000602082840312156123a457600080fd5b81356001600160401b038111156123ba57600080fd5b6120fa8482850161225b565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6001600160a01b03831681526040602082018190526000906120fa908301846120b3565b634e487b7160e01b600052601160045260246000fd5b60008261244a57634e487b7160e01b600052601260045260246000fd5b500490565b6000825161246181846020870161208f565b9190910192915050565b60608152600061247e60608301866120b3565b602083019490945250901515604090910152919050565b6020808252602c9082015260008051602061272083398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061272083398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561251b57600080fd5b8151611d4781611f01565b60006020828403121561253857600080fd5b5051919050565b60006020828403121561255157600080fd5b81518015158114611d4757600080fd5b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016125ac576125ac612417565b5060010190565b815160009082906020808601845b838110156125e65781516001600160a01b0316855293820193908201906001016125c1565b50929695505050505050565b6001600160a01b0385168152608060208201819052600090612616908301866120b3565b6040830194909452506060015292915050565b8082018082111561062657610626612417565b8181038181111561062657610626612417565b808202811582820484141761062657610626612417565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161269881601785016020880161208f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516126c981602884016020880161208f565b01602801949350505050565b602081526000611d4760208301846120b3565b6000816126f7576126f7612417565b50600019019056febf18f3bdda8a65fc5ec294c2c787f805aceec15eed9fe17fdb6588866be113dc46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2f3ee1e9ea3bb6a7dbb88f80601a0d8e3013b9458cc4f88ad69b2e394d902b964736f6c63430008130033",
  "deployedBytecode": "0x60806040526004361061018d5760003560e01c806301ffc9a714610199578063133d93a1146101ce578063248a9ca3146101fe57806324d7806c1461021e5780632beeaca41461023e5780632bf16458146102605780632f2ff15d1461028e57806336568abe146102ae5780633659cfe6146102ce57806336afc6fa146102ee5780633771dcf814610310578063377e11e0146103305780633e6326fc146103505780634f1ef2861461037157806352d1902d146103845780635b61e2c1146103995780635fc944e9146103d257806378c8cda7146103f25780637b76ac91146104125780637e2c13551461043a5780637fad46f21461045a57806391d148541461047a578063971d902c1461049a5780639c54df64146104ba578063a217fddf146104da578063bf64e66c146104ef578063c48924961461051d578063d547741f14610533578063db62683814610553578063e6ea393914610573578063eb91e65114610589578063f3da9f05146105a9578063f9f92be4146105bf578063fe173b97146105df57600080fd5b3661019457005b600080fd5b3480156101a557600080fd5b506101b96101b4366004611ebe565b6105f5565b60405190151581526020015b60405180910390f35b3480156101da57600080fd5b506101f060008051602061270083398151915281565b6040519081526020016101c5565b34801561020a57600080fd5b506101f0610219366004611ee8565b61062c565b34801561022a57600080fd5b506101b9610239366004611f16565b610641565b34801561024a57600080fd5b5061025e610259366004611fe8565b61065b565b005b34801561026c57600080fd5b5061028061027b366004612037565b610725565b6040516101c59291906120df565b34801561029a57600080fd5b5061025e6102a9366004612102565b61082f565b3480156102ba57600080fd5b5061025e6102c9366004612102565b610850565b3480156102da57600080fd5b5061025e6102e9366004611f16565b6108ca565b3480156102fa57600080fd5b50610303610992565b6040516101c59190612132565b34801561031c57600080fd5b5061025e61032b366004611f16565b610a1e565b34801561033c57600080fd5b5061025e61034b366004612169565b610d6e565b34801561035c57600080fd5b5061010054610303906001600160a01b031681565b61025e61037f366004611fe8565b610e26565b34801561039057600080fd5b506101f0610edb565b3480156103a557600080fd5b50610102546103ba906001600160401b031681565b6040516001600160401b0390911681526020016101c5565b3480156103de57600080fd5b5061025e6103ed366004612207565b610f89565b3480156103fe57600080fd5b5061025e61040d366004611f16565b6110b0565b34801561041e57600080fd5b50610102546103ba90600160401b90046001600160401b031681565b34801561044657600080fd5b5061025e610455366004612229565b611149565b34801561046657600080fd5b5061025e6104753660046122ca565b611182565b34801561048657600080fd5b506101b9610495366004612102565b61130e565b3480156104a657600080fd5b5061025e6104b5366004612333565b611339565b3480156104c657600080fd5b5061025e6104d5366004612392565b6113fa565b3480156104e657600080fd5b506101f0600081565b3480156104fb57600080fd5b506101f061050a366004611f16565b6101046020526000908152604090205481565b34801561052957600080fd5b506101f060fd5481565b34801561053f57600080fd5b5061025e61054e366004612102565b61152d565b34801561055f57600080fd5b5061025e61056e366004611ee8565b611549565b34801561057f57600080fd5b506101f060fc5481565b34801561059557600080fd5b5061025e6105a4366004611f16565b611567565b3480156105b557600080fd5b506101f060fe5481565b3480156105cb57600080fd5b5061025e6105da366004611f16565b6115bf565b3480156105eb57600080fd5b506101f060ff5481565b60006001600160e01b03198216637965db0b60e01b148061062657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260c9602052604090206001015490565b60006106266000805160206127008339815191528361130e565b61066433610641565b6106895760405162461bcd60e51b8152600401610680906123c6565b60405180910390fd5b610691610992565b6001600160a01b0316631b02709983836040518363ffffffff1660e01b81526004016106be9291906123f3565b600060405180830381600087803b1580156106d857600080fd5b505af11580156106ec573d6000803e3d6000fd5b50505050600260fd546106ff919061242d565b333111801590610713575061071333610641565b156107215761072133611617565b5050565b6000606061073233610641565b61074e5760405162461bcd60e51b8152600401610680906123c6565b846001600160a01b03168385604051610767919061244f565b60006040518083038185875af1925050503d80600081146107a4576040519150601f19603f3d011682016040523d82523d6000602084013e6107a9565b606091505b5060405191935091506001600160a01b038616907f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e0906107ee9087908790879061246b565b60405180910390a2600260fd54610805919061242d565b333111801590610819575061081933610641565b156108275761082733611617565b935093915050565b6108388261062c565b61084181611721565b61084b838361172b565b505050565b6001600160a01b03811633146108c05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610680565b61072182826117b1565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109125760405162461bcd60e51b815260040161068090612495565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610944611818565b6001600160a01b03161461096a5760405162461bcd60e51b8152600401610680906124cf565b61097381611834565b6040805160008082526020820190925261098f9183919061185b565b50565b6101005460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa1580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a199190612509565b905090565b610a2733610641565b610a435760405162461bcd60e51b8152600401610680906123c6565b6101005460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acc9190612509565b90506000816001600160a01b03166370a08231846040518263ffffffff1660e01b8152600401610afc9190612132565b602060405180830381865afa158015610b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3d9190612526565b9050610b47610992565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b8152600401610b729190612132565b602060405180830381865afa158015610b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb3919061253f565b80610bd757506001600160a01b038316600090815261010460205260409020548114155b610c1a5760405162461bcd60e51b8152602060048201526014602482015273155cd95c881a185cc81b9bdd081d5cd9590811c960621b6044820152606401610680565b60fe546101016000610c2a6119c6565b81526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000205410610cc25760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b6064820152608401610680565b600460fc54610cd1919061242d565b836001600160a01b03163110610d165760405162461bcd60e51b815260206004820152600a60248201526968617342616c616e636560b01b6044820152606401610680565b6001600160a01b038316600090815261010460205260409020819055610d3b83611617565b5050600260fd54610d4c919061242d565b333111801590610d605750610d6033610641565b1561098f5761098f33611617565b610d7960003361130e565b610d955760405162461bcd60e51b815260040161068090612561565b60005b8151811015610de457610dd2600080516020612700833981519152838381518110610dc557610dc5612584565b602002602001015161152d565b80610ddc8161259a565b915050610d98565b5080604051610df391906125b3565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e6e5760405162461bcd60e51b815260040161068090612495565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ea0611818565b6001600160a01b031614610ec65760405162461bcd60e51b8152600401610680906124cf565b610ecf82611834565b6107218282600161185b565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f765760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610680565b5060008051602061274083398151915290565b60fb548210610fd05760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b6044820152606401610680565b815b60fb5481108015610fe257508181105b156110a05761101760fb8281548110610ffd57610ffd612584565b6000918252602090912001546001600160a01b0316610641565b80156110595750600260fd5461102d919061242d565b60fb828154811061104057611040612584565b6000918252602090912001546001600160a01b03163111155b1561108e5761108e60fb828154811061107457611074612584565b6000918252602090912001546001600160a01b0316611617565b806110988161259a565b915050610fd2565b50600260fd546106ff919061242d565b6110b933610641565b6110d55760405162461bcd60e51b8152600401610680906123c6565b6110dd610992565b6001600160a01b031663291d9549826040518263ffffffff1660e01b81526004016111089190612132565b600060405180830381600087803b15801561112257600080fd5b505af1158015611136573d6000803e3d6000fd5b50505050600260fd54610d4c919061242d565b61115460003361130e565b6111705760405162461bcd60e51b815260040161068090612561565b61117c848484846119d5565b50505050565b600054610100900460ff16158080156111a25750600054600160ff909116105b806111c357506111b1306119fc565b1580156111c3575060005460ff166001145b6112265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610680565b6000805460ff191660011790558015611249576000805461ff0019166101001790555b611251611a0b565b61125c600084611a78565b611267600033611a78565b61127a620927c0628954406003856119d5565b61010080546001600160a01b0319166001600160a01b0386161790558451156112a6576112a6856113fa565b336001600160a01b038416146112c1576112c160003361152d565b8015611307576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61134233610641565b61135e5760405162461bcd60e51b8152600401610680906123c6565b611366610992565b6001600160a01b031663e737031a858585856040518563ffffffff1660e01b815260040161139794939291906125f2565b600060405180830381600087803b1580156113b157600080fd5b505af11580156113c5573d6000803e3d6000fd5b50505050600260fd546113d8919061242d565b3331118015906113ec57506113ec33610641565b1561117c5761117c33611617565b61140560003361130e565b6114215760405162461bcd60e51b815260040161068090612561565b60005b81518110156114eb5761144f82828151811061144257611442612584565b6020026020010151610641565b15156000036114d95761148960008051602061270083398151915283838151811061147c5761147c612584565b602002602001015161082f565b60fb82828151811061149d5761149d612584565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b806114e38161259a565b915050611424565b50806040516114fa91906125b3565b604051908190038120907f45486b220020cc2482ad1a5e0ae4d5f0b5372cea1b48173f6273c616a504726990600090a250565b6115368261062c565b61153f81611721565b61084b83836117b1565b611558816103ed816032612629565b600260fd54610d4c919061242d565b61157033610641565b61158c5760405162461bcd60e51b8152600401610680906123c6565b611594610992565b6001600160a01b031663c6a276c2826040518263ffffffff1660e01b81526004016111089190612132565b6115c833610641565b6115e45760405162461bcd60e51b8152600401610680906123c6565b6115ec610992565b6001600160a01b031663188efc16826040518263ffffffff1660e01b81526004016111089190612132565b600161010160006116266119c6565b81526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060008282546116669190612629565b909155506000905061167782610641565b6116835760fc54611687565b60fd545b9050600061169f6001600160a01b038416318361263c565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f193505050501580156116d8573d6000803e3d6000fd5b50826001600160a01b03167ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed9858260405161171491815260200190565b60405180910390a2505050565b61098f8133611a82565b611735828261130e565b61072157600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561176d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6117bb828261130e565b1561072157600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020612740833981519152546001600160a01b031690565b61183f60003361130e565b61098f5760405162461bcd60e51b815260040161068090612561565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561188e5761084b83611adb565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118e8575060408051601f3d908101601f191682019092526118e591810190612526565b60015b61194b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610680565b60008051602061274083398151915281146119ba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610680565b5061084b838383611b75565b6000610a19620151804261242d565b60ff8190556119e4818561264f565b60fc556119f1818461264f565b60fd555060fe555050565b6001600160a01b03163b151590565b600054610100900460ff16611a765760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610680565b565b610721828261172b565b611a8c828261130e565b61072157611a9981611b9a565b611aa4836020611bac565b604051602001611ab5929190612666565b60408051601f198184030181529082905262461bcd60e51b8252610680916004016126d5565b611ae4816119fc565b611b465760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610680565b60008051602061274083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611b7e83611d4e565b600082511180611b8b5750805b1561084b5761117c8383611d8e565b60606106266001600160a01b03831660145b60606000611bbb83600261264f565b611bc6906002612629565b6001600160401b03811115611bdd57611bdd611f33565b6040519080825280601f01601f191660200182016040528015611c07576020820181803683370190505b509050600360fc1b81600081518110611c2257611c22612584565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611c5157611c51612584565b60200101906001600160f81b031916908160001a9053506000611c7584600261264f565b611c80906001612629565b90505b6001811115611cf8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611cb457611cb4612584565b1a60f81b828281518110611cca57611cca612584565b60200101906001600160f81b031916908160001a90535060049490941c93611cf1816126e8565b9050611c83565b508315611d475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610680565b9392505050565b611d5781611adb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611d99836119fc565b611df45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610680565b600080846001600160a01b031684604051611e0f919061244f565b600060405180830381855af49150503d8060008114611e4a576040519150601f19603f3d011682016040523d82523d6000602084013e611e4f565b606091505b5091509150611e77828260405180606001604052806027815260200161276060279139611e80565b95945050505050565b60608315611e8f575081611d47565b611d478383815115611ea45781518083602001fd5b8060405162461bcd60e51b815260040161068091906126d5565b600060208284031215611ed057600080fd5b81356001600160e01b031981168114611d4757600080fd5b600060208284031215611efa57600080fd5b5035919050565b6001600160a01b038116811461098f57600080fd5b600060208284031215611f2857600080fd5b8135611d4781611f01565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611f7157611f71611f33565b604052919050565b600082601f830112611f8a57600080fd5b81356001600160401b03811115611fa357611fa3611f33565b611fb6601f8201601f1916602001611f49565b818152846020838601011115611fcb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611ffb57600080fd5b823561200681611f01565b915060208301356001600160401b0381111561202157600080fd5b61202d85828601611f79565b9150509250929050565b60008060006060848603121561204c57600080fd5b833561205781611f01565b925060208401356001600160401b0381111561207257600080fd5b61207e86828701611f79565b925050604084013590509250925092565b60005b838110156120aa578181015183820152602001612092565b50506000910152565b600081518084526120cb81602086016020860161208f565b601f01601f19169290920160200192915050565b82151581526040602082015260006120fa60408301846120b3565b949350505050565b6000806040838503121561211557600080fd5b82359150602083013561212781611f01565b809150509250929050565b6001600160a01b0391909116815260200190565b60006001600160401b0382111561215f5761215f611f33565b5060051b60200190565b6000602080838503121561217c57600080fd5b82356001600160401b0381111561219257600080fd5b8301601f810185136121a357600080fd5b80356121b66121b182612146565b611f49565b81815260059190911b820183019083810190878311156121d557600080fd5b928401925b828410156121fc5783356121ed81611f01565b825292840192908401906121da565b979650505050505050565b6000806040838503121561221a57600080fd5b50508035926020909101359150565b6000806000806080858703121561223f57600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f83011261226c57600080fd5b8135602061227c6121b183612146565b82815260059290921b8401810191818101908684111561229b57600080fd5b8286015b848110156122bf5780356122b281611f01565b835291830191830161229f565b509695505050505050565b600080600080608085870312156122e057600080fd5b84356001600160401b038111156122f657600080fd5b6123028782880161225b565b945050602085013561231381611f01565b9250604085013561232381611f01565b9396929550929360600135925050565b6000806000806080858703121561234957600080fd5b843561235481611f01565b935060208501356001600160401b0381111561236f57600080fd5b61237b87828801611f79565b949794965050505060408301359260600135919050565b6000602082840312156123a457600080fd5b81356001600160401b038111156123ba57600080fd5b6120fa8482850161225b565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6001600160a01b03831681526040602082018190526000906120fa908301846120b3565b634e487b7160e01b600052601160045260246000fd5b60008261244a57634e487b7160e01b600052601260045260246000fd5b500490565b6000825161246181846020870161208f565b9190910192915050565b60608152600061247e60608301866120b3565b602083019490945250901515604090910152919050565b6020808252602c9082015260008051602061272083398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061272083398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561251b57600080fd5b8151611d4781611f01565b60006020828403121561253857600080fd5b5051919050565b60006020828403121561255157600080fd5b81518015158114611d4757600080fd5b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016125ac576125ac612417565b5060010190565b815160009082906020808601845b838110156125e65781516001600160a01b0316855293820193908201906001016125c1565b50929695505050505050565b6001600160a01b0385168152608060208201819052600090612616908301866120b3565b6040830194909452506060015292915050565b8082018082111561062657610626612417565b8181038181111561062657610626612417565b808202811582820484141761062657610626612417565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161269881601785016020880161208f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516126c981602884016020880161208f565b01602801949350505050565b602081526000611d4760208301846120b3565b6000816126f7576126f7612417565b50600019019056febf18f3bdda8a65fc5ec294c2c787f805aceec15eed9fe17fdb6588866be113dc46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2f3ee1e9ea3bb6a7dbb88f80601a0d8e3013b9458cc4f88ad69b2e394d902b964736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
