{
  "_format": "hh-sol-artifact-1",
  "contractName": "BaliVilla",
  "sourceName": "contracts/BaliVilla.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxLot",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_fundraiser",
          "type": "address"
        }
      ],
      "name": "addNewVilla",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "buyVilla",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimSponsorReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "developerAccounts",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "getVilla",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "price",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxLot",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "sold",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "fundraiser",
              "type": "address"
            }
          ],
          "internalType": "struct VillaDetail",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ERC20",
          "name": "_usdt",
          "type": "address"
        },
        {
          "internalType": "contract Valhalla",
          "name": "_valhalla",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "developer1",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "developer2",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mintBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "dev1",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "dev2",
          "type": "address"
        }
      ],
      "name": "setDeveloperAccounts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "newuri",
          "type": "string"
        }
      ],
      "name": "setURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "sponsorReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "totalList",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxLot",
          "type": "uint256"
        }
      ],
      "name": "updateVilla",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "usdt",
      "outputs": [
        {
          "internalType": "contract ERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "valhalla",
      "outputs": [
        {
          "internalType": "contract Valhalla",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "villa",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxLot",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "sold",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "fundraiser",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "wdUSDT",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612a7b80620000f36000396000f3fe608060405234801561001057600080fd5b50600436106101535760003560e01c8062fdd58e1461015857806301ffc9a71461017e57806302fe5305146101a157806303d76d4c146101b65780630a2a6e37146101c95780630e89341c146101e95780631bffaa46146102095780631f7fdffa1461028057806321a1c4bc146102935780632eb2c2d61461029b5780632f48ab7d146102ae578063334ca5fb146102c15780633b477ed01461031a5780634e1273f41461032d5780634fb7dce91461034d578063715018a614610360578063731133e9146103685780638da5cb5b1461037b578063a22cb46514610383578063bb71cc4b14610396578063beeb702d146103a9578063dbffea20146103b2578063e985e9c5146103d2578063f242432a1461040e578063f2ada82514610421578063f2fde38b14610434578063f8c8765e14610447578063f920038f1461045a575b600080fd5b61016b610166366004611c3d565b61046d565b6040519081526020015b60405180910390f35b61019161018c366004611c7f565b610508565b6040519015158152602001610175565b6101b46101af366004611d42565b610558565b005b6101b46101c4366004611d92565b61056c565b60ca546101dc906001600160a01b031681565b6040516101759190611db4565b6101fc6101f7366004611dc8565b610a66565b6040516101759190611e27565b61024f610217366004611dc8565b60cc6020526000908152604090208054600182015460028301546003840154600490940154929391929091906001600160a01b031685565b6040805195865260208601949094529284019190915260608301526001600160a01b0316608082015260a001610175565b6101b461028e366004611eee565b610afa565b6101b4610b14565b6101b46102a9366004611f88565b610bf6565b60c9546101dc906001600160a01b031681565b6102d46102cf366004611dc8565b610c42565b6040516101759190815181526020808301519082015260408083015190820152606080830151908201526080918201516001600160a01b03169181019190915260a00190565b6101b4610328366004611dc8565b610cd5565b61034061033b366004612035565b610dcb565b604051610175919061213c565b6101b461035b36600461214f565b610ef4565b6101b4610f5f565b6101b4610376366004612188565b610f73565b6101dc610f87565b6101b46103913660046121ec565b610f96565b6101b46103a4366004612225565b610fa1565b61016b60cb5481565b61016b6103c0366004612253565b60cd6020526000908152604090205481565b6101916103e0366004612225565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b6101b461041c366004612270565b610fd7565b6101dc61042f366004611dc8565b61101c565b6101b4610442366004612253565b61103c565b6101b46104553660046122d8565b6110b2565b6101b4610468366004612334565b611236565b60006001600160a01b0383166104dd5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526065602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061053957506001600160e01b031982166303a24d0760e21b145b8061050257506301ffc9a760e01b6001600160e01b0319831614610502565b6105606112aa565b61056981611309565b50565b600082815260cc6020526040902080546105d35760405162461bcd60e51b815260206004820152602260248201527f77726f6e672076696c6c612069642c206e6f2076696c6c6120617661696c61626044820152616c6560f01b60648201526084016104d4565b818160030160008282546105e79190612376565b90915550506002810154600382015411156106535760405162461bcd60e51b815260206004820152602660248201527f6672616374696f6e20636f6d706c657465642c206e6f20746f6b656e20617661604482015265696c61626c6560d01b60648201526084016104d4565b8054600090610663908490612389565b90506000620186a06106778361451b612389565b61068191906123a0565b905060006106906002836123a0565b60ca54604051630fa2d9ff60e41b815291925060009182916001600160a01b03169063fa2d9ff0906106c6903390600401611db4565b61010060405180830381865afa1580156106e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070891906123c2565b509297506000955050505050505b600481101561083a576001600160a01b0383161561083a576001811461082857600061074382600561244c565b905060646107518289612389565b61075b91906123a0565b6001600160a01b038516600090815260cd602052604081208054909190610783908490612376565b90915550606490506107958289612389565b61079f91906123a0565b6107a99084612376565b60ca54604051630fa2d9ff60e41b81529194506001600160a01b03169063fa2d9ff0906107da908790600401611db4565b61010060405180830381865afa1580156107f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081c91906123c2565b50929950505050505050505b806108328161245f565b915050610716565b5060c95460ce546040516323b872dd60e01b81526001600160a01b03928316926323b872dd9261087492339290911690889060040161248e565b6020604051808303816000875af1158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b791906124b2565b5060c95460cf546040516323b872dd60e01b81526001600160a01b03928316926323b872dd926108f192339290911690889060040161248e565b6020604051808303816000875af1158015610910573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093491906124b2565b5060c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906109699033903090869060040161248e565b6020604051808303816000875af1158015610988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac91906124b2565b5060c95460048701546001600160a01b03918216916323b872dd91339116876109d5868b61244c565b6109df919061244c565b6040518463ffffffff1660e01b81526004016109fd9392919061248e565b6020604051808303816000875af1158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4091906124b2565b50610a5c33898960405180602001604052806000815250611315565b5050505050505050565b606060678054610a75906124cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa1906124cf565b8015610aee5780601f10610ac357610100808354040283529160200191610aee565b820191906000526020600020905b815481529060010190602001808311610ad157829003601f168201915b50505050509050919050565b610b026112aa565b610b0e848484846113df565b50505050565b33600090815260cd602052604090205480610b6b5760405162461bcd60e51b81526020600482015260176024820152761b9bc81c995dd85c99081d1bc818994818db185a5b5959604a1b60448201526064016104d4565b33600081815260cd60205260408082209190915560c954905163a9059cbb60e01b81526001600160a01b039091169163a9059cbb91610baf91908590600401612509565b6020604051808303816000875af1158015610bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf291906124b2565b5050565b6001600160a01b038516331480610c125750610c1285336103e0565b610c2e5760405162461bcd60e51b81526004016104d490612522565b610c3b8585858585611519565b5050505050565b610c7d6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b50600090815260cc6020908152604091829020825160a08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004909101546001600160a01b0316608082015290565b610cdd6112aa565b60c9546040516370a0823160e01b81526001600160a01b03909116906370a0823190610d0d903090600401611db4565b602060405180830381865afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190612570565b811115610d995760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420555344542062616c616e636560381b60448201526064016104d4565b60c95460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610baf9033908590600401612509565b60608151835114610e305760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016104d4565b600083516001600160401b03811115610e4b57610e4b611ca3565b604051908082528060200260200182016040528015610e74578160200160208202803683370190505b50905060005b8451811015610eec57610ebf858281518110610e9857610e98612478565b6020026020010151858381518110610eb257610eb2612478565b602002602001015161046d565b828281518110610ed157610ed1612478565b6020908102919091010152610ee58161245f565b9050610e7a565b509392505050565b610efc6112aa565b60cb8054600081815260cc60205260408120868155600281018690556004810180546001600160a01b0319166001600160a01b038716179055600381018290556001810183905583549293909291610f538361245f565b91905055505050505050565b610f676112aa565b610f7160006116a6565b565b610f7b6112aa565b610b0e84848484611315565b6097546001600160a01b031690565b610bf23383836116f8565b610fa96112aa565b60ce80546001600160a01b039384166001600160a01b03199182161790915560cf8054929093169116179055565b6001600160a01b038516331480610ff35750610ff385336103e0565b61100f5760405162461bcd60e51b81526004016104d490612522565b610c3b85858585856117d8565b60ce816002811061102c57600080fd5b01546001600160a01b0316905081565b6110446112aa565b6001600160a01b0381166110a95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d4565b610569816116a6565b600054610100900460ff16158080156110d25750600054600160ff909116105b806110f357506110e1306118f4565b1580156110f3575060005460ff166001145b6111565760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104d4565b6000805460ff191660011790558015611179576000805461ff0019166101001790555b61119a604051806060016040528060348152602001612a1260349139611903565b6111a2611933565b60c980546001600160a01b038781166001600160a01b03199283161790925560ca805487841690831617905560ce8054821686841617905560cf80549091169184169190911790558015610c3b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b61123e6112aa565b600083815260cc6020526040902060cb5484111561129e5760405162461bcd60e51b815260206004820181905260248201527f77726f6e67206d6574686f642c206e6f2076696c6c6120617661696c61626c6560448201526064016104d4565b91825560029091015550565b336112b3610f87565b6001600160a01b031614610f715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d4565b6067610bf282826125d4565b6001600160a01b03841661133b5760405162461bcd60e51b81526004016104d490612693565b33600061134785611962565b9050600061135485611962565b905060008681526065602090815260408083206001600160a01b038b16845290915281208054879290611388908490612376565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716916000805160206129f2833981519152910160405180910390a46113d6836000898989896119ad565b50505050505050565b6001600160a01b0384166114055760405162461bcd60e51b81526004016104d490612693565b81518351146114265760405162461bcd60e51b81526004016104d4906126d4565b3360005b84518110156114c35783818151811061144557611445612478565b60200260200101516065600087848151811061146357611463612478565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060008282546114ab9190612376565b909155508190506114bb8161245f565b91505061142a565b50846001600160a01b031660006001600160a01b0316826001600160a01b03166000805160206129d2833981519152878760405161150292919061271c565b60405180910390a4610c3b81600087878787611b0f565b815183511461153a5760405162461bcd60e51b81526004016104d4906126d4565b6001600160a01b0384166115605760405162461bcd60e51b81526004016104d49061274a565b3360005b845181101561164a57600085828151811061158157611581612478565b60200260200101519050600085838151811061159f5761159f612478565b60209081029190910181015160008481526065835260408082206001600160a01b038e1683529093529190912054909150818110156115f05760405162461bcd60e51b81526004016104d49061278f565b60008381526065602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061162f908490612376565b92505081905550505050806116439061245f565b9050611564565b50846001600160a01b0316866001600160a01b0316826001600160a01b03166000805160206129d2833981519152878760405161168892919061271c565b60405180910390a461169e818787878787611b0f565b505050505050565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361176b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016104d4565b6001600160a01b03838116600081815260666020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166117fe5760405162461bcd60e51b81526004016104d49061274a565b33600061180a85611962565b9050600061181785611962565b905060008681526065602090815260408083206001600160a01b038c1684529091529020548581101561185c5760405162461bcd60e51b81526004016104d49061278f565b60008781526065602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061189b908490612376565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816916000805160206129f2833981519152910160405180910390a46118e9848a8a8a8a8a6119ad565b505050505050505050565b6001600160a01b03163b151590565b600054610100900460ff1661192a5760405162461bcd60e51b81526004016104d4906127d9565b61056981611bd1565b600054610100900460ff1661195a5760405162461bcd60e51b81526004016104d4906127d9565b610f71611bf8565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061199c5761199c612478565b602090810291909101015292915050565b6119bf846001600160a01b03166118f4565b1561169e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906119f89089908990889088908890600401612824565b6020604051808303816000875af1925050508015611a33575060408051601f3d908101601f19168201909252611a3091810190612869565b60015b611adf57611a3f612886565b806308c379a003611a785750611a536128a2565b80611a5e5750611a7a565b8060405162461bcd60e51b81526004016104d49190611e27565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016104d4565b6001600160e01b0319811663f23a6e6160e01b146113d65760405162461bcd60e51b81526004016104d49061292b565b611b21846001600160a01b03166118f4565b1561169e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611b5a9089908990889088908890600401612973565b6020604051808303816000875af1925050508015611b95575060408051601f3d908101601f19168201909252611b9291810190612869565b60015b611ba157611a3f612886565b6001600160e01b0319811663bc197c8160e01b146113d65760405162461bcd60e51b81526004016104d49061292b565b600054610100900460ff166105605760405162461bcd60e51b81526004016104d4906127d9565b600054610100900460ff16611c1f5760405162461bcd60e51b81526004016104d4906127d9565b610f71336116a6565b6001600160a01b038116811461056957600080fd5b60008060408385031215611c5057600080fd5b8235611c5b81611c28565b946020939093013593505050565b6001600160e01b03198116811461056957600080fd5b600060208284031215611c9157600080fd5b8135611c9c81611c69565b9392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611cde57611cde611ca3565b6040525050565b60006001600160401b03831115611cfe57611cfe611ca3565b604051611d15601f8501601f191660200182611cb9565b809150838152848484011115611d2a57600080fd5b83836020830137600060208583010152509392505050565b600060208284031215611d5457600080fd5b81356001600160401b03811115611d6a57600080fd5b8201601f81018413611d7b57600080fd5b611d8a84823560208401611ce5565b949350505050565b60008060408385031215611da557600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b600060208284031215611dda57600080fd5b5035919050565b6000815180845260005b81811015611e0757602081850181015186830182015201611deb565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611c9c6020830184611de1565b60006001600160401b03821115611e5357611e53611ca3565b5060051b60200190565b600082601f830112611e6e57600080fd5b81356020611e7b82611e3a565b604051611e888282611cb9565b83815260059390931b8501820192828101915086841115611ea857600080fd5b8286015b84811015611ec35780358352918301918301611eac565b509695505050505050565b600082601f830112611edf57600080fd5b611c9c83833560208501611ce5565b60008060008060808587031215611f0457600080fd5b8435611f0f81611c28565b935060208501356001600160401b0380821115611f2b57600080fd5b611f3788838901611e5d565b94506040870135915080821115611f4d57600080fd5b611f5988838901611e5d565b93506060870135915080821115611f6f57600080fd5b50611f7c87828801611ece565b91505092959194509250565b600080600080600060a08688031215611fa057600080fd5b8535611fab81611c28565b94506020860135611fbb81611c28565b935060408601356001600160401b0380821115611fd757600080fd5b611fe389838a01611e5d565b94506060880135915080821115611ff957600080fd5b61200589838a01611e5d565b9350608088013591508082111561201b57600080fd5b5061202888828901611ece565b9150509295509295909350565b6000806040838503121561204857600080fd5b82356001600160401b038082111561205f57600080fd5b818501915085601f83011261207357600080fd5b8135602061208082611e3a565b60405161208d8282611cb9565b83815260059390931b85018201928281019150898411156120ad57600080fd5b948201945b838610156120d45785356120c581611c28565b825294820194908201906120b2565b965050860135925050808211156120ea57600080fd5b506120f785828601611e5d565b9150509250929050565b600081518084526020808501945080840160005b8381101561213157815187529582019590820190600101612115565b509495945050505050565b602081526000611c9c6020830184612101565b60008060006060848603121561216457600080fd5b8335925060208401359150604084013561217d81611c28565b809150509250925092565b6000806000806080858703121561219e57600080fd5b84356121a981611c28565b9350602085013592506040850135915060608501356001600160401b038111156121d257600080fd5b611f7c87828801611ece565b801515811461056957600080fd5b600080604083850312156121ff57600080fd5b823561220a81611c28565b9150602083013561221a816121de565b809150509250929050565b6000806040838503121561223857600080fd5b823561224381611c28565b9150602083013561221a81611c28565b60006020828403121561226557600080fd5b8135611c9c81611c28565b600080600080600060a0868803121561228857600080fd5b853561229381611c28565b945060208601356122a381611c28565b9350604086013592506060860135915060808601356001600160401b038111156122cc57600080fd5b61202888828901611ece565b600080600080608085870312156122ee57600080fd5b84356122f981611c28565b9350602085013561230981611c28565b9250604085013561231981611c28565b9150606085013561232981611c28565b939692955090935050565b60008060006060848603121561234957600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050257610502612360565b808202811582820484141761050257610502612360565b6000826123bd57634e487b7160e01b600052601260045260246000fd5b500490565b600080600080600080600080610100898b0312156123df57600080fd5b88516123ea816121de565b60208a01519098506123fb816121de565b60408a01519097506007811061241057600080fd5b60608a015190965061242181611c28565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b8181038181111561050257610502612360565b60006001820161247157612471612360565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156124c457600080fd5b8151611c9c816121de565b600181811c908216806124e357607f821691505b60208210810361250357634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03929092168252602082015260400190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b60006020828403121561258257600080fd5b5051919050565b601f8211156125cf57600081815260208120601f850160051c810160208610156125b05750805b601f850160051c820191505b8181101561169e578281556001016125bc565b505050565b81516001600160401b038111156125ed576125ed611ca3565b612601816125fb84546124cf565b84612589565b602080601f831160018114612636576000841561261e5750858301515b600019600386901b1c1916600185901b17855561169e565b600085815260208120601f198616915b8281101561266557888601518255948401946001909101908401612646565b50858210156126835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60408152600061272f6040830185612101565b82810360208401526127418185612101565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061285e90830184611de1565b979650505050505050565b60006020828403121561287b57600080fd5b8151611c9c81611c69565b600060033d111561289f5760046000803e5060005160e01c5b90565b600060443d10156128b05790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156128df57505050505090565b82850191508151818111156128f75750505050505090565b843d87010160208285010111156129115750505050505090565b61292060208286010187611cb9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061299f90830186612101565b82810360608401526129b18186612101565b905082810360808401526129c58185611de1565b9897505050505050505056fe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6268747470733a2f2f676c6f62616c6e6574776f726b2e66696e616e63652f6170692f657263313135352f6e66742d76696c6c612fa264697066735822122082d1c4b852dc2199f185330a226c170c77cabf1400ce28e97d1e48f09c440bb464736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101535760003560e01c8062fdd58e1461015857806301ffc9a71461017e57806302fe5305146101a157806303d76d4c146101b65780630a2a6e37146101c95780630e89341c146101e95780631bffaa46146102095780631f7fdffa1461028057806321a1c4bc146102935780632eb2c2d61461029b5780632f48ab7d146102ae578063334ca5fb146102c15780633b477ed01461031a5780634e1273f41461032d5780634fb7dce91461034d578063715018a614610360578063731133e9146103685780638da5cb5b1461037b578063a22cb46514610383578063bb71cc4b14610396578063beeb702d146103a9578063dbffea20146103b2578063e985e9c5146103d2578063f242432a1461040e578063f2ada82514610421578063f2fde38b14610434578063f8c8765e14610447578063f920038f1461045a575b600080fd5b61016b610166366004611c3d565b61046d565b6040519081526020015b60405180910390f35b61019161018c366004611c7f565b610508565b6040519015158152602001610175565b6101b46101af366004611d42565b610558565b005b6101b46101c4366004611d92565b61056c565b60ca546101dc906001600160a01b031681565b6040516101759190611db4565b6101fc6101f7366004611dc8565b610a66565b6040516101759190611e27565b61024f610217366004611dc8565b60cc6020526000908152604090208054600182015460028301546003840154600490940154929391929091906001600160a01b031685565b6040805195865260208601949094529284019190915260608301526001600160a01b0316608082015260a001610175565b6101b461028e366004611eee565b610afa565b6101b4610b14565b6101b46102a9366004611f88565b610bf6565b60c9546101dc906001600160a01b031681565b6102d46102cf366004611dc8565b610c42565b6040516101759190815181526020808301519082015260408083015190820152606080830151908201526080918201516001600160a01b03169181019190915260a00190565b6101b4610328366004611dc8565b610cd5565b61034061033b366004612035565b610dcb565b604051610175919061213c565b6101b461035b36600461214f565b610ef4565b6101b4610f5f565b6101b4610376366004612188565b610f73565b6101dc610f87565b6101b46103913660046121ec565b610f96565b6101b46103a4366004612225565b610fa1565b61016b60cb5481565b61016b6103c0366004612253565b60cd6020526000908152604090205481565b6101916103e0366004612225565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b6101b461041c366004612270565b610fd7565b6101dc61042f366004611dc8565b61101c565b6101b4610442366004612253565b61103c565b6101b46104553660046122d8565b6110b2565b6101b4610468366004612334565b611236565b60006001600160a01b0383166104dd5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526065602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061053957506001600160e01b031982166303a24d0760e21b145b8061050257506301ffc9a760e01b6001600160e01b0319831614610502565b6105606112aa565b61056981611309565b50565b600082815260cc6020526040902080546105d35760405162461bcd60e51b815260206004820152602260248201527f77726f6e672076696c6c612069642c206e6f2076696c6c6120617661696c61626044820152616c6560f01b60648201526084016104d4565b818160030160008282546105e79190612376565b90915550506002810154600382015411156106535760405162461bcd60e51b815260206004820152602660248201527f6672616374696f6e20636f6d706c657465642c206e6f20746f6b656e20617661604482015265696c61626c6560d01b60648201526084016104d4565b8054600090610663908490612389565b90506000620186a06106778361451b612389565b61068191906123a0565b905060006106906002836123a0565b60ca54604051630fa2d9ff60e41b815291925060009182916001600160a01b03169063fa2d9ff0906106c6903390600401611db4565b61010060405180830381865afa1580156106e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070891906123c2565b509297506000955050505050505b600481101561083a576001600160a01b0383161561083a576001811461082857600061074382600561244c565b905060646107518289612389565b61075b91906123a0565b6001600160a01b038516600090815260cd602052604081208054909190610783908490612376565b90915550606490506107958289612389565b61079f91906123a0565b6107a99084612376565b60ca54604051630fa2d9ff60e41b81529194506001600160a01b03169063fa2d9ff0906107da908790600401611db4565b61010060405180830381865afa1580156107f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081c91906123c2565b50929950505050505050505b806108328161245f565b915050610716565b5060c95460ce546040516323b872dd60e01b81526001600160a01b03928316926323b872dd9261087492339290911690889060040161248e565b6020604051808303816000875af1158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b791906124b2565b5060c95460cf546040516323b872dd60e01b81526001600160a01b03928316926323b872dd926108f192339290911690889060040161248e565b6020604051808303816000875af1158015610910573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093491906124b2565b5060c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906109699033903090869060040161248e565b6020604051808303816000875af1158015610988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac91906124b2565b5060c95460048701546001600160a01b03918216916323b872dd91339116876109d5868b61244c565b6109df919061244c565b6040518463ffffffff1660e01b81526004016109fd9392919061248e565b6020604051808303816000875af1158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4091906124b2565b50610a5c33898960405180602001604052806000815250611315565b5050505050505050565b606060678054610a75906124cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa1906124cf565b8015610aee5780601f10610ac357610100808354040283529160200191610aee565b820191906000526020600020905b815481529060010190602001808311610ad157829003601f168201915b50505050509050919050565b610b026112aa565b610b0e848484846113df565b50505050565b33600090815260cd602052604090205480610b6b5760405162461bcd60e51b81526020600482015260176024820152761b9bc81c995dd85c99081d1bc818994818db185a5b5959604a1b60448201526064016104d4565b33600081815260cd60205260408082209190915560c954905163a9059cbb60e01b81526001600160a01b039091169163a9059cbb91610baf91908590600401612509565b6020604051808303816000875af1158015610bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf291906124b2565b5050565b6001600160a01b038516331480610c125750610c1285336103e0565b610c2e5760405162461bcd60e51b81526004016104d490612522565b610c3b8585858585611519565b5050505050565b610c7d6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b50600090815260cc6020908152604091829020825160a08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004909101546001600160a01b0316608082015290565b610cdd6112aa565b60c9546040516370a0823160e01b81526001600160a01b03909116906370a0823190610d0d903090600401611db4565b602060405180830381865afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190612570565b811115610d995760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420555344542062616c616e636560381b60448201526064016104d4565b60c95460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610baf9033908590600401612509565b60608151835114610e305760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016104d4565b600083516001600160401b03811115610e4b57610e4b611ca3565b604051908082528060200260200182016040528015610e74578160200160208202803683370190505b50905060005b8451811015610eec57610ebf858281518110610e9857610e98612478565b6020026020010151858381518110610eb257610eb2612478565b602002602001015161046d565b828281518110610ed157610ed1612478565b6020908102919091010152610ee58161245f565b9050610e7a565b509392505050565b610efc6112aa565b60cb8054600081815260cc60205260408120868155600281018690556004810180546001600160a01b0319166001600160a01b038716179055600381018290556001810183905583549293909291610f538361245f565b91905055505050505050565b610f676112aa565b610f7160006116a6565b565b610f7b6112aa565b610b0e84848484611315565b6097546001600160a01b031690565b610bf23383836116f8565b610fa96112aa565b60ce80546001600160a01b039384166001600160a01b03199182161790915560cf8054929093169116179055565b6001600160a01b038516331480610ff35750610ff385336103e0565b61100f5760405162461bcd60e51b81526004016104d490612522565b610c3b85858585856117d8565b60ce816002811061102c57600080fd5b01546001600160a01b0316905081565b6110446112aa565b6001600160a01b0381166110a95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d4565b610569816116a6565b600054610100900460ff16158080156110d25750600054600160ff909116105b806110f357506110e1306118f4565b1580156110f3575060005460ff166001145b6111565760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104d4565b6000805460ff191660011790558015611179576000805461ff0019166101001790555b61119a604051806060016040528060348152602001612a1260349139611903565b6111a2611933565b60c980546001600160a01b038781166001600160a01b03199283161790925560ca805487841690831617905560ce8054821686841617905560cf80549091169184169190911790558015610c3b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b61123e6112aa565b600083815260cc6020526040902060cb5484111561129e5760405162461bcd60e51b815260206004820181905260248201527f77726f6e67206d6574686f642c206e6f2076696c6c6120617661696c61626c6560448201526064016104d4565b91825560029091015550565b336112b3610f87565b6001600160a01b031614610f715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d4565b6067610bf282826125d4565b6001600160a01b03841661133b5760405162461bcd60e51b81526004016104d490612693565b33600061134785611962565b9050600061135485611962565b905060008681526065602090815260408083206001600160a01b038b16845290915281208054879290611388908490612376565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716916000805160206129f2833981519152910160405180910390a46113d6836000898989896119ad565b50505050505050565b6001600160a01b0384166114055760405162461bcd60e51b81526004016104d490612693565b81518351146114265760405162461bcd60e51b81526004016104d4906126d4565b3360005b84518110156114c35783818151811061144557611445612478565b60200260200101516065600087848151811061146357611463612478565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002060008282546114ab9190612376565b909155508190506114bb8161245f565b91505061142a565b50846001600160a01b031660006001600160a01b0316826001600160a01b03166000805160206129d2833981519152878760405161150292919061271c565b60405180910390a4610c3b81600087878787611b0f565b815183511461153a5760405162461bcd60e51b81526004016104d4906126d4565b6001600160a01b0384166115605760405162461bcd60e51b81526004016104d49061274a565b3360005b845181101561164a57600085828151811061158157611581612478565b60200260200101519050600085838151811061159f5761159f612478565b60209081029190910181015160008481526065835260408082206001600160a01b038e1683529093529190912054909150818110156115f05760405162461bcd60e51b81526004016104d49061278f565b60008381526065602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061162f908490612376565b92505081905550505050806116439061245f565b9050611564565b50846001600160a01b0316866001600160a01b0316826001600160a01b03166000805160206129d2833981519152878760405161168892919061271c565b60405180910390a461169e818787878787611b0f565b505050505050565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361176b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016104d4565b6001600160a01b03838116600081815260666020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166117fe5760405162461bcd60e51b81526004016104d49061274a565b33600061180a85611962565b9050600061181785611962565b905060008681526065602090815260408083206001600160a01b038c1684529091529020548581101561185c5760405162461bcd60e51b81526004016104d49061278f565b60008781526065602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061189b908490612376565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816916000805160206129f2833981519152910160405180910390a46118e9848a8a8a8a8a6119ad565b505050505050505050565b6001600160a01b03163b151590565b600054610100900460ff1661192a5760405162461bcd60e51b81526004016104d4906127d9565b61056981611bd1565b600054610100900460ff1661195a5760405162461bcd60e51b81526004016104d4906127d9565b610f71611bf8565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061199c5761199c612478565b602090810291909101015292915050565b6119bf846001600160a01b03166118f4565b1561169e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906119f89089908990889088908890600401612824565b6020604051808303816000875af1925050508015611a33575060408051601f3d908101601f19168201909252611a3091810190612869565b60015b611adf57611a3f612886565b806308c379a003611a785750611a536128a2565b80611a5e5750611a7a565b8060405162461bcd60e51b81526004016104d49190611e27565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016104d4565b6001600160e01b0319811663f23a6e6160e01b146113d65760405162461bcd60e51b81526004016104d49061292b565b611b21846001600160a01b03166118f4565b1561169e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611b5a9089908990889088908890600401612973565b6020604051808303816000875af1925050508015611b95575060408051601f3d908101601f19168201909252611b9291810190612869565b60015b611ba157611a3f612886565b6001600160e01b0319811663bc197c8160e01b146113d65760405162461bcd60e51b81526004016104d49061292b565b600054610100900460ff166105605760405162461bcd60e51b81526004016104d4906127d9565b600054610100900460ff16611c1f5760405162461bcd60e51b81526004016104d4906127d9565b610f71336116a6565b6001600160a01b038116811461056957600080fd5b60008060408385031215611c5057600080fd5b8235611c5b81611c28565b946020939093013593505050565b6001600160e01b03198116811461056957600080fd5b600060208284031215611c9157600080fd5b8135611c9c81611c69565b9392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611cde57611cde611ca3565b6040525050565b60006001600160401b03831115611cfe57611cfe611ca3565b604051611d15601f8501601f191660200182611cb9565b809150838152848484011115611d2a57600080fd5b83836020830137600060208583010152509392505050565b600060208284031215611d5457600080fd5b81356001600160401b03811115611d6a57600080fd5b8201601f81018413611d7b57600080fd5b611d8a84823560208401611ce5565b949350505050565b60008060408385031215611da557600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b600060208284031215611dda57600080fd5b5035919050565b6000815180845260005b81811015611e0757602081850181015186830182015201611deb565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611c9c6020830184611de1565b60006001600160401b03821115611e5357611e53611ca3565b5060051b60200190565b600082601f830112611e6e57600080fd5b81356020611e7b82611e3a565b604051611e888282611cb9565b83815260059390931b8501820192828101915086841115611ea857600080fd5b8286015b84811015611ec35780358352918301918301611eac565b509695505050505050565b600082601f830112611edf57600080fd5b611c9c83833560208501611ce5565b60008060008060808587031215611f0457600080fd5b8435611f0f81611c28565b935060208501356001600160401b0380821115611f2b57600080fd5b611f3788838901611e5d565b94506040870135915080821115611f4d57600080fd5b611f5988838901611e5d565b93506060870135915080821115611f6f57600080fd5b50611f7c87828801611ece565b91505092959194509250565b600080600080600060a08688031215611fa057600080fd5b8535611fab81611c28565b94506020860135611fbb81611c28565b935060408601356001600160401b0380821115611fd757600080fd5b611fe389838a01611e5d565b94506060880135915080821115611ff957600080fd5b61200589838a01611e5d565b9350608088013591508082111561201b57600080fd5b5061202888828901611ece565b9150509295509295909350565b6000806040838503121561204857600080fd5b82356001600160401b038082111561205f57600080fd5b818501915085601f83011261207357600080fd5b8135602061208082611e3a565b60405161208d8282611cb9565b83815260059390931b85018201928281019150898411156120ad57600080fd5b948201945b838610156120d45785356120c581611c28565b825294820194908201906120b2565b965050860135925050808211156120ea57600080fd5b506120f785828601611e5d565b9150509250929050565b600081518084526020808501945080840160005b8381101561213157815187529582019590820190600101612115565b509495945050505050565b602081526000611c9c6020830184612101565b60008060006060848603121561216457600080fd5b8335925060208401359150604084013561217d81611c28565b809150509250925092565b6000806000806080858703121561219e57600080fd5b84356121a981611c28565b9350602085013592506040850135915060608501356001600160401b038111156121d257600080fd5b611f7c87828801611ece565b801515811461056957600080fd5b600080604083850312156121ff57600080fd5b823561220a81611c28565b9150602083013561221a816121de565b809150509250929050565b6000806040838503121561223857600080fd5b823561224381611c28565b9150602083013561221a81611c28565b60006020828403121561226557600080fd5b8135611c9c81611c28565b600080600080600060a0868803121561228857600080fd5b853561229381611c28565b945060208601356122a381611c28565b9350604086013592506060860135915060808601356001600160401b038111156122cc57600080fd5b61202888828901611ece565b600080600080608085870312156122ee57600080fd5b84356122f981611c28565b9350602085013561230981611c28565b9250604085013561231981611c28565b9150606085013561232981611c28565b939692955090935050565b60008060006060848603121561234957600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050257610502612360565b808202811582820484141761050257610502612360565b6000826123bd57634e487b7160e01b600052601260045260246000fd5b500490565b600080600080600080600080610100898b0312156123df57600080fd5b88516123ea816121de565b60208a01519098506123fb816121de565b60408a01519097506007811061241057600080fd5b60608a015190965061242181611c28565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b8181038181111561050257610502612360565b60006001820161247157612471612360565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156124c457600080fd5b8151611c9c816121de565b600181811c908216806124e357607f821691505b60208210810361250357634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03929092168252602082015260400190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b60006020828403121561258257600080fd5b5051919050565b601f8211156125cf57600081815260208120601f850160051c810160208610156125b05750805b601f850160051c820191505b8181101561169e578281556001016125bc565b505050565b81516001600160401b038111156125ed576125ed611ca3565b612601816125fb84546124cf565b84612589565b602080601f831160018114612636576000841561261e5750858301515b600019600386901b1c1916600185901b17855561169e565b600085815260208120601f198616915b8281101561266557888601518255948401946001909101908401612646565b50858210156126835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60408152600061272f6040830185612101565b82810360208401526127418185612101565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061285e90830184611de1565b979650505050505050565b60006020828403121561287b57600080fd5b8151611c9c81611c69565b600060033d111561289f5760046000803e5060005160e01c5b90565b600060443d10156128b05790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156128df57505050505090565b82850191508151818111156128f75750505050505090565b843d87010160208285010111156129115750505050505090565b61292060208286010187611cb9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061299f90830186612101565b82810360608401526129b18186612101565b905082810360808401526129c58185611de1565b9897505050505050505056fe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6268747470733a2f2f676c6f62616c6e6574776f726b2e66696e616e63652f6170692f657263313135352f6e66742d76696c6c612fa264697066735822122082d1c4b852dc2199f185330a226c170c77cabf1400ce28e97d1e48f09c440bb464736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
