{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenAuction",
  "sourceName": "contracts/mocks/VechainNodes/TokenAuction.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_auctionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_candidate",
          "type": "address"
        }
      ],
      "name": "AddAuctionWhiteList",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_auctionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "AuctionCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_auctionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_startingPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_endingPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "_duration",
          "type": "uint64"
        }
      ],
      "name": "AuctionCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_auctionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_seller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_winner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_finalPrice",
          "type": "uint256"
        }
      ],
      "name": "AuctionSuccessful",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_person",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_op",
          "type": "bool"
        }
      ],
      "name": "BlackListUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "CancelUpgrade",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "_fromLevel",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "_toLevel",
          "type": "uint8"
        }
      ],
      "name": "LevelChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_applier",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "_level",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "_applyTime",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "_applyBlockno",
          "type": "uint64"
        }
      ],
      "name": "NewUpgradeApply",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_op",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_enabled",
          "type": "bool"
        }
      ],
      "name": "OperatorUpdated",
      "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": [],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_saleAuction",
          "type": "address"
        }
      ],
      "name": "ProtocolUpgrade",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_auctionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_candidate",
          "type": "address"
        }
      ],
      "name": "RemoveAuctionWhiteList",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpause",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "InterfaceId_ERC165",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_address",
          "type": "address"
        }
      ],
      "name": "addAuctionWhiteList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "addOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_badGuy",
          "type": "address"
        }
      ],
      "name": "addToBlackList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        },
        {
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "_lvl",
          "type": "uint8"
        },
        {
          "internalType": "bool",
          "name": "_onUpgrade",
          "type": "bool"
        },
        {
          "internalType": "uint64",
          "name": "_applyUpgradeTime",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "_applyUpgradeBlockno",
          "type": "uint64"
        }
      ],
      "name": "addToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "_toLvl",
          "type": "uint8"
        }
      ],
      "name": "applyUpgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "auctionCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "bid",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "blackList",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "canTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "cancelAuction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "cancelUpgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint128",
          "name": "_price",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "_duration",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "_toAddress",
          "type": "address"
        }
      ],
      "name": "createDirectionalSaleAuction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint128",
          "name": "_startingPrice",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "_endingPrice",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "_duration",
          "type": "uint64"
        }
      ],
      "name": "createSaleAuction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "_toLvl",
          "type": "uint8"
        }
      ],
      "name": "downgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "getMetadata",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "_level",
          "type": "uint8"
        }
      ],
      "name": "getTokenParams",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "idToOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        }
      ],
      "name": "isNormalToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        }
      ],
      "name": "isToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        }
      ],
      "name": "isX",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "leadTime",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "normalTokenCount",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "operators",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "ownerToId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_address",
          "type": "address"
        }
      ],
      "name": "removeAuctionWhiteList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_innocent",
          "type": "address"
        }
      ],
      "name": "removeFromBlackList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "removeOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "saleAuction",
      "outputs": [
        {
          "internalType": "contract ClockAuction",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "sendBonusTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_leadtime",
          "type": "uint64"
        }
      ],
      "name": "setLeadTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_address",
          "type": "address"
        }
      ],
      "name": "setSaleAuctionAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_newBaseURI",
          "type": "string"
        }
      ],
      "name": "setTokenMetadataBaseURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_cooldown",
          "type": "uint64"
        }
      ],
      "name": "setTransferCooldown",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "transferCooldown",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "internalType": "enum ThunderFactory.strengthLevel",
          "name": "_toLvl",
          "type": "uint8"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "xTokenCount",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6000805460ff60a01b19169055600380546102a360a71b600160a01b600160e01b0319909116179055600480546001600160401b03191661384017905560c0604052601660809081527f5665436861696e54686f72204e6f646520546f6b656e0000000000000000000060a052600c906200007b908262000a09565b5060408051808201909152600381526215939560ea1b6020820152600d90620000a5908262000a09565b50604080516020810190915260008152600e90620000c4908262000a09565b50348015620000d257600080fd5b50600080546001600160a01b031916331781556040805160a08101825282815260208101838152918101838152606082018481526080830185905260068054600181018255955282517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9095018054945192511515600160801b0260ff60801b196001600160401b0394851668010000000000000000026001600160801b031990971694909716939093179490941794851682178455519193839160ff60881b191661ffff60801b1990911617600160881b836007811115620001b957620001b962000ad5565b021790555060808201518160000160126101000a8154816001600160401b0302191690836001600160401b031602179055505050604051806080016040528069d3c21bcecceda10000008152602001600a6001600160401b0316815260200160006001600160401b0316815260200160646001600160401b031681525060056000600160ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a0422ca8b0a00a425000000815260200160146001600160401b0316815260200160006001600160401b0316815260200160966001600160401b031681525060056000600260ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a0c685fa11e01ec6f0000008152602001601e6001600160401b0316815260200160006001600160401b0316815260200160c86001600160401b031681525060056000600360ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b031602179055509050506040518060800160405280697f0e10af47c1c7000000815260200160006001600160401b0316815260200160196001600160401b0316815260200160006001600160401b031681525060056000600460ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a0152d02c7e14af680000008152602001601e6001600160401b0316815260200160646001600160401b0316815260200160646001600160401b031681525060056000600560ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a04a1d89bb94865ec0000008152602001603c6001600160401b0316815260200160966001600160401b0316815260200160966001600160401b031681525060056000600660ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a0ce76db1cd49ae360000008152602001605a6001600160401b0316815260200160c86001600160401b0316815260200160c86001600160401b031681525060056000600760ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b03160217905550905050620008b66301ffc9a760e01b620008e060201b60201c565b620008c8630148d34b60e51b620008e0565b620008da635b5e139f60e01b620008e0565b62000aeb565b6001600160e01b031980821690036200093f5760405162461bcd60e51b815260206004820152601360248201527f696e76616c696420696e74657266616365696400000000000000000000000000604482015260640160405180910390fd5b6001600160e01b0319166000908152600b60205260409020805460ff19166001179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200098f57607f821691505b602082108103620009b057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a0457600081815260208120601f850160051c81016020861015620009df5750805b601f850160051c820191505b8181101562000a0057828155600101620009eb565b5050505b505050565b81516001600160401b0381111562000a255762000a2562000964565b62000a3d8162000a3684546200097a565b84620009b6565b602080601f83116001811462000a75576000841562000a5c5750858301515b600019600386901b1c1916600185901b17855562000a00565b600085815260208120601f198616915b8281101562000aa65788860151825594840194600190910190840162000a85565b508582101562000ac55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b61425f8062000afb6000396000f3fe60806040526004361061025a5760003560e01c8063019211971461025f57806301ffc9a7146102815780630324529c146102d057806306fdde03146102f057806307fa65f914610312578063081812fc14610332578063095ea7b31461035f57806313e7c9d81461037f57806318160ddd146103af57806319f37361146103d257806319fa8f50146103f25780631e20363a1461042657806323b872dd14610446578063287e8495146104665780632ad71573146104b55780632c12cc9f146104cb5780632ed9b4fd146104eb5780633f4ba83a1461050b578063417c73a714610520578063454a2ab3146105405780634838d165146105535780634a49ac4c146105835780634d4f6ea9146105a35780635c975abb146105c357806360836166146105e45780636352211e1461060457806368f16293146106245780636fbde40d1461066357806370a082311461068357806379512513146106a35780637aaed899146106c35780638456cb59146106e35780638c8d04a7146106f85780638da5cb5b1461071857806395d89b411461073857806396b5a7551461074d5780639870d7fe1461076d578063a574cea41461078d578063a9059cbb146107c0578063ac8a584a146107e0578063b03e02c214610800578063ba2a954d14610820578063ba6f2e6514610840578063bae3e19e14610860578063bfc206ed14610880578063c87b56dd146108b6578063cd5967db146108d6578063d4156148146108f6578063e6cbe3511461091d578063e729e3a41461093d578063f2fde38b1461096a578063f7e6e60c1461098a578063f9574c69146109aa575b600080fd5b34801561026b57600080fd5b5061027f61027a36600461373e565b6109ca565b005b34801561028d57600080fd5b506102bb61029c36600461376e565b6001600160e01b0319166000908152600b602052604090205460ff1690565b60405190151581526020015b60405180910390f35b3480156102dc57600080fd5b5061027f6102eb366004613798565b610b6a565b3480156102fc57600080fd5b50610305610c61565b6040516102c791906137c4565b34801561031e57600080fd5b506102bb61032d366004613812565b610cef565b34801561033e57600080fd5b5061035261034d36600461382f565b610d12565b6040516102c79190613848565b34801561036b57600080fd5b5061027f61037a366004613798565b610d2d565b34801561038b57600080fd5b506102bb61039a366004613812565b60016020526000908152604090205460ff1681565b3480156103bb57600080fd5b506103c4610dfc565b6040519081526020016102c7565b3480156103de57600080fd5b506102bb6103ed366004613812565b610e2c565b3480156103fe57600080fd5b5061040d6301ffc9a760e01b81565b6040516001600160e01b031990911681526020016102c7565b34801561043257600080fd5b5061027f610441366004613872565b610e88565b34801561045257600080fd5b5061027f610461366004613922565b610ec2565b34801561047257600080fd5b50610486610481366004613977565b61101c565b604080519485526001600160401b039384166020860152918316918401919091521660608201526080016102c7565b3480156104c157600080fd5b506103c4600f5481565b3480156104d757600080fd5b5061027f6104e63660046139a7565b6110a4565b3480156104f757600080fd5b5061027f6105063660046139db565b6110f5565b34801561051757600080fd5b506102bb61130f565b34801561052c57600080fd5b5061027f61053b366004613812565b6113c5565b61027f61054e36600461382f565b61146a565b34801561055f57600080fd5b506102bb61056e366004613812565b60026020526000908152604090205460ff1681565b34801561058f57600080fd5b5061027f61059e366004613812565b6115d7565b3480156105af57600080fd5b506102bb6105be36600461382f565b611669565b3480156105cf57600080fd5b506000546102bb90600160a01b900460ff1681565b3480156105f057600080fd5b5061027f6105ff366004613a2c565b61173e565b34801561061057600080fd5b5061035261061f36600461382f565b6118a4565b34801561063057600080fd5b5060035461064b90600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016102c7565b34801561066f57600080fd5b5061027f61067e366004613812565b6118bf565b34801561068f57600080fd5b506103c461069e366004613812565b61195a565b3480156106af57600080fd5b5061027f6106be366004613977565b61197c565b3480156106cf57600080fd5b5061027f6106de366004613a66565b611c53565b3480156106ef57600080fd5b506102bb611e1f565b34801561070457600080fd5b5060045461064b906001600160401b031681565b34801561072457600080fd5b50600054610352906001600160a01b031681565b34801561074457600080fd5b50610305611eb4565b34801561075957600080fd5b5061027f61076836600461382f565b611ec1565b34801561077957600080fd5b5061027f610788366004613812565b611f27565b34801561079957600080fd5b506107ad6107a836600461382f565b611fbf565b6040516102c79796959493929190613b0d565b3480156107cc57600080fd5b5061027f6107db366004613798565b61213e565b3480156107ec57600080fd5b5061027f6107fb366004613812565b612269565b34801561080c57600080fd5b5061027f61081b366004613a2c565b6122fb565b34801561082c57600080fd5b5061027f61083b36600461382f565b6124e8565b34801561084c57600080fd5b5061027f61085b3660046139a7565b61268a565b34801561086c57600080fd5b5061027f61087b366004613b5f565b6126e5565b34801561088c57600080fd5b5061035261089b36600461382f565b6008602052600090815260409020546001600160a01b031681565b3480156108c257600080fd5b506103056108d136600461382f565b612874565b3480156108e257600080fd5b5061027f6108f136600461373e565b612912565b34801561090257600080fd5b5060075461064b90600160401b90046001600160401b031681565b34801561092957600080fd5b50600354610352906001600160a01b031681565b34801561094957600080fd5b506103c4610958366004613812565b60096020526000908152604090205481565b34801561097657600080fd5b5061027f610985366004613812565b612a97565b34801561099657600080fd5b5060075461064b906001600160401b031681565b3480156109b657600080fd5b506102bb6109c5366004613812565b612b42565b600054600160a01b900460ff16156109fd5760405162461bcd60e51b81526004016109f490613ba3565b60405180910390fd5b33610a07836118a4565b6001600160a01b031614610a2d5760405162461bcd60e51b81526004016109f490613bd0565b610a3633610e2c565b610a525760405162461bcd60e51b81526004016109f490613bfb565b600354604051630192119760e01b81526001600160a01b0390911690630192119790610a849085908590600401613c23565b600060405180830381600087803b158015610a9e57600080fd5b505af1158015610ab2573d6000803e3d6000fd5b50506003546040516378bd793560e01b815260048101869052600093506001600160a01b0390911691506378bd79359060240160c060405180830381865afa158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190613c3a565b50505050509050816001600160a01b031683827f9bd63f96cf38bbd738ef415c10d8ce738b56b75bbe3b31f6bf2059d35f3a8f3a60405160405180910390a4505050565b3360009081526001602052604090205460ff16610b995760405162461bcd60e51b81526004016109f490613bd0565b6001600160a01b038216610bbf5760405162461bcd60e51b81526004016109f490613ca4565b60008111610c005760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b60448201526064016109f4565b60405163a9059cbb60e01b815265456e657267799063a9059cbb90610c2b9085908590600401613ccd565b600060405180830381600087803b158015610c4557600080fd5b505af1158015610c59573d6000803e3d6000fd5b505050505050565b600c8054610c6e90613ce6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9a90613ce6565b8015610ce75780601f10610cbc57610100808354040283529160200191610ce7565b820191906000526020600020905b815481529060010190602001808311610cca57829003601f168201915b505050505081565b6000610cfa82610e2c565b8015610d0c5750610d0a82612b42565b155b92915050565b6000908152600a60205260409020546001600160a01b031690565b600054600160a01b900460ff1615610d575760405162461bcd60e51b81526004016109f490613ba3565b6000610d62826118a4565b9050806001600160a01b0316836001600160a01b031603610dc55760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f7420617070726f766520796f7572206f776e20746f6b656e00000060448201526064016109f4565b336001600160a01b03821614610ded5760405162461bcd60e51b81526004016109f490613bd0565b610df78284612ba0565b505050565b600754600090610e1e906001600160401b03600160401b820481169116613d36565b6001600160401b0316905090565b6001600160a01b038116600090815260096020526040812054600680548392908110610e5a57610e5a613d5d565b600091825260209091200154600160881b900460ff166007811115610e8157610e81613ad5565b1192915050565b6000546001600160a01b03163314610eb25760405162461bcd60e51b81526004016109f490613d73565b600e610ebe8282613ddd565b5050565b600054600160a01b900460ff1615610eec5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038216610f125760405162461bcd60e51b81526004016109f490613ca4565b826001600160a01b0316610f25826118a4565b6001600160a01b031614610f4b5760405162461bcd60e51b81526004016109f490613bd0565b610f553382612c18565b610f715760405162461bcd60e51b81526004016109f490613bd0565b610f7a81611669565b610f965760405162461bcd60e51b81526004016109f490613e9c565b6003546040516337e246ad60e01b8152600481018390526001600160a01b03909116906337e246ad90602401602060405180830381865afa158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110039190613ed0565b156110115761101181612c67565b610df7838383612d44565b60008060008060006005600087600781111561103a5761103a613ad5565b60ff1681526020808201929092526040908101600020815160808101835281548082526001909201546001600160401b03808216958301869052600160401b82048116948301859052600160801b9091041660609091018190529099929850909650945092505050565b3360009081526001602052604090205460ff166110d35760405162461bcd60e51b81526004016109f490613bd0565b600480546001600160401b0319166001600160401b0392909216919091179055565b600054600160a01b900460ff161561111f5760405162461bcd60e51b81526004016109f490613ba3565b33611129856118a4565b6001600160a01b03161461114f5760405162461bcd60e51b81526004016109f490613bd0565b61115833610e2c565b6111745760405162461bcd60e51b81526004016109f490613bfb565b6006848154811061118757611187613d5d565b600091825260209091200154600160801b900460ff16156111ba5760405162461bcd60e51b81526004016109f490613eed565b6003546111d19085906001600160a01b0316612ba0565b600f546111df906001612d58565b600f81905560035460405163e4f9dd2d60e01b81526001600160a01b039091169163e4f9dd2d9161121f9190889088908190899042903390600401613f1d565b600060405180830381600087803b15801561123957600080fd5b505af115801561124d573d6000803e3d6000fd5b5050505083600f5460008051602061416a83398151915285868660405161127693929190613f6b565b60405180910390a360035460405163cd5967db60e01b81526001600160a01b039091169063cd5967db906112b09087908590600401613c23565b600060405180830381600087803b1580156112ca57600080fd5b505af11580156112de573d6000803e3d6000fd5b5050600f546040516001600160a01b038516935087925060008051602061418a83398151915290600090a450505050565b600080546001600160a01b0316331461133a5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1661138b5760405162461bcd60e51b81526020600482015260156024820152741b9959591cc81c1c9bdd1bd8dbdb081c185d5cd959605a1b60448201526064016109f4565b6000805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a150600190565b6000546001600160a01b031633146113ef5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff16156114195760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206141ea8339815191529161145f91849190613f97565b60405180910390a150565b600054600160a01b900460ff16156114945760405162461bcd60e51b81526004016109f490613ba3565b6003546040516378bd793560e01b81526004810183905260009182916001600160a01b03909116906378bd79359060240160c060405180830381865afa1580156114e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115069190613c3a565b50506003546040516359d667a560e01b81529496509294506000936001600160a01b03909316926359d667a592503491506115479033908990600401613ccd565b60206040518083038185885af1158015611565573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061158a9190613fb2565b9050816001600160a01b031684847fc2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f33856040516115c9929190613ccd565b60405180910390a450505050565b6000546001600160a01b031633146116015760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff161561162b5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206141ea8339815191529161145f91849190613f97565b600061167482612dac565b80156116a657506006828154811061168e5761168e613d5d565b600091825260209091200154600160801b900460ff16155b80156116d757506000828152600860209081526040808320546001600160a01b03168352600290915290205460ff16155b8015610d0c5750600360149054906101000a90046001600160401b03166006838154811061170757611707613d5d565b60009182526020909120015461172d9190600160901b90046001600160401b0316613d36565b6001600160401b0316421192915050565b3360009081526001602052604090205460ff1661176d5760405162461bcd60e51b81526004016109f490613bd0565b80600781111561177f5761177f613ad5565b6006838154811061179257611792613d5d565b600091825260209091200154600160881b900460ff1660078111156117b9576117b9613ad5565b106117d65760405162461bcd60e51b81526004016109f490613fcb565b6003546040516337e246ad60e01b8152600481018490526001600160a01b03909116906337e246ad90602401602060405180830381865afa15801561181f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118439190613ed0565b156118605760405162461bcd60e51b81526004016109f490613ff2565b60006006838154811061187557611875613d5d565b60009182526020909120018054911515600160801b0260ff60801b19909216919091179055610ebe8282612dc9565b6000908152600860205260409020546001600160a01b031690565b6000546001600160a01b031633146118e95760405162461bcd60e51b81526004016109f490613d73565b6001600160a01b03811661190f5760405162461bcd60e51b81526004016109f490613ca4565b600380546001600160a01b0319166001600160a01b0383161790556040517fb69d08e828d243d599db935e2be5ce7ed7b0d2f9c9f712ff469a10a27924deb89061145f908390613848565b600061196582610e2c565b611970576000611973565b60015b60ff1692915050565b600054600160a01b900460ff16156119a65760405162461bcd60e51b81526004016109f490613ba3565b33600090815260096020526040812054908190036119cd576119ca336000806130c5565b90505b6000600682815481106119e2576119e2613d5d565b60009182526020909120018054909150600160801b900460ff1615611a3b5760405162461bcd60e51b815260206004820152600f60248201526e7374696c6c20757067726164696e6760881b60448201526064016109f4565b6003546040516337e246ad60e01b8152600481018490526001600160a01b03909116906337e246ad90602401602060405180830381865afa158015611a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa89190613ed0565b15611ac55760405162461bcd60e51b81526004016109f490613ff2565b826007811115611ad757611ad7613ad5565b815460ff91821691600160881b909104166007811115611af957611af9613ad5565b611b04906001614020565b60ff16148015611b2657506004836007811115611b2357611b23613ad5565b14155b8015611b4457506007836007811115611b4157611b41613ad5565b11155b611b815760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a590817dd1bd31d9b60921b60448201526064016109f4565b60056000846007811115611b9757611b97613ad5565b60ff16815260208101919091526040016000205433311015611bf25760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016109f4565b80546001600160401b0342908116600160401b02600160401b600160881b031990921691909117600160801b178255604051339184916000805160206141ca83398151915291611c46918891904390614039565b60405180910390a3505050565b3360009081526001602052604090205460ff16611c825760405162461bcd60e51b81526004016109f490613bd0565b611c8b8561326d565b15611cd35760405162461bcd60e51b81526020600482015260186024820152773cb7ba9030b63932b0b23c903437b6321030903a37b5b2b760411b60448201526064016109f4565b6000611ce08686866130c5565b9050846007811115611cf457611cf4613ad5565b600111158015611d1657506003856007811115611d1357611d13613ad5565b11155b15611d5e57600780546001600160401b0316906000611d3483614069565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050611ddd565b846007811115611d7057611d70613ad5565b600411158015611d9257506007856007811115611d8f57611d8f613ad5565b11155b15611ddd5760078054600160401b90046001600160401b0316906008611db783614069565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b8315610c5957856001600160a01b0316816000805160206141ca833981519152878686604051611e0f93929190614039565b60405180910390a3505050505050565b600080546001600160a01b03163314611e4a5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1615611e745760405162461bcd60e51b81526004016109f490613ba3565b6000805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a150600190565b600d8054610c6e90613ce6565b600054600160a01b900460ff1615611eeb5760405162461bcd60e51b81526004016109f490613ba3565b33611ef5826118a4565b6001600160a01b031614611f1b5760405162461bcd60e51b81526004016109f490613bd0565b611f2481612c67565b50565b6000546001600160a01b03163314611f515760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1615611f7b5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038116600090815260016020819052604091829020805460ff191682179055905160008051602061420a8339815191529161145f91849190613f97565b6000806000806000806000611fd388612dac565b1561213357600060068981548110611fed57611fed613d5d565b60009182526020918290206040805160a0810182529190920180546001600160401b038082168452600160401b8204169483019490945260ff600160801b85048116151593830193909352909290916060840191600160881b900416600781111561205a5761205a613ad5565b600781111561206b5761206b613ad5565b81529054600160901b90046001600160401b031660209182015260008b815260089091526040908190205460608301518383015160035493516337e246ad60e01b8152600481018f90529495506001600160a01b03928316949193909216906337e246ad90602401602060405180830381865afa1580156120f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121149190613ed0565b8460800151856000015186602001519750975097509750975097509750505b919395979092949650565b600054600160a01b900460ff16156121685760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b03821661218e5760405162461bcd60e51b81526004016109f490613ca4565b33612198826118a4565b6001600160a01b0316146121be5760405162461bcd60e51b81526004016109f490613bd0565b6121c781611669565b6121e35760405162461bcd60e51b81526004016109f490613e9c565b6003546040516337e246ad60e01b8152600481018390526001600160a01b03909116906337e246ad90602401602060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122509190613ed0565b1561225e5761225e81612c67565b610ebe338383612d44565b6000546001600160a01b031633146122935760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff16156122bd5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038116600090815260016020526040808220805460ff191690555160008051602061420a8339815191529161145f91849190613f97565b3360009081526001602052604090205460ff1661232a5760405162461bcd60e51b81526004016109f490613bd0565b80600781111561233c5761233c613ad5565b6006838154811061234f5761234f613d5d565b600091825260209091200154600160881b900460ff16600781111561237657612376613ad5565b116123935760405162461bcd60e51b81526004016109f490613fcb565b600454600680546001600160401b0390921691849081106123b6576123b6613d5d565b6000918252602090912001546123dc9190600160901b90046001600160401b0316613d36565b6001600160401b0316421161242c5760405162461bcd60e51b815260206004820152601660248201527531b0b73737ba103237bbb733b930b232903a37b5b2b760511b60448201526064016109f4565b6003546040516337e246ad60e01b8152600481018490526001600160a01b03909116906337e246ad90602401602060405180830381865afa158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613ed0565b156124a7576124a782612c67565b600682815481106124ba576124ba613d5d565b600091825260209091200154600160801b900460ff16156124de576124de826124e8565b610ebe8282612dc9565b6124f181612dac565b61252f5760405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd08195e1a5cdd608a1b60448201526064016109f4565b60006006828154811061254457612544613d5d565b600091825260208083208584526008909152604090922054910180549092506001600160a01b0390911690600160801b900460ff166125b85760405162461bcd60e51b815260206004820152601060248201526f6e6f74206f6e20757067726164696e6760801b60448201526064016109f4565b6001600160a01b0381163314806125de57503360009081526001602052604090205460ff165b6125fa5760405162461bcd60e51b81526004016109f490613bd0565b60008254600160881b900460ff16600781111561261957612619613ad5565b0361262c576126278361328a565b61264f565b8154600160401b600160881b031916600160401b426001600160401b0316021782555b6040516001600160a01b0382169084907fddc99f00cc50e9442de66784f25bd218c8c63f4c4103b817692da0a63fb80a9690600090a3505050565b3360009081526001602052604090205460ff166126b95760405162461bcd60e51b81526004016109f490613bd0565b600380546001600160401b03909216600160a01b02600160a01b600160e01b0319909216919091179055565b600054600160a01b900460ff161561270f5760405162461bcd60e51b81526004016109f490613ba3565b33612719856118a4565b6001600160a01b03161461273f5760405162461bcd60e51b81526004016109f490613bd0565b61274833610e2c565b6127645760405162461bcd60e51b81526004016109f490613bfb565b6006848154811061277757612777613d5d565b600091825260209091200154600160801b900460ff16156127aa5760405162461bcd60e51b81526004016109f490613eed565b6003546127c19085906001600160a01b0316612ba0565b600f546127cf906001612d58565b600f81905560035460405163e4f9dd2d60e01b81526001600160a01b039091169163e4f9dd2d9161280f9190889088908890889042903390600401613f1d565b600060405180830381600087803b15801561282957600080fd5b505af115801561283d573d6000803e3d6000fd5b5050505083600f5460008051602061416a83398151915285858560405161286693929190613f6b565b60405180910390a350505050565b6060610d0c600e805461288690613ce6565b80601f01602080910402602001604051908101604052809291908181526020018280546128b290613ce6565b80156128ff5780601f106128d4576101008083540402835291602001916128ff565b820191906000526020600020905b8154815290600101906020018083116128e257829003601f168201915b505050505061290d84613316565b61342f565b600054600160a01b900460ff161561293c5760405162461bcd60e51b81526004016109f490613ba3565b33612946836118a4565b6001600160a01b03161461296c5760405162461bcd60e51b81526004016109f490613bd0565b61297533610e2c565b6129915760405162461bcd60e51b81526004016109f490613bfb565b60035460405163cd5967db60e01b81526001600160a01b039091169063cd5967db906129c39085908590600401613c23565b600060405180830381600087803b1580156129dd57600080fd5b505af11580156129f1573d6000803e3d6000fd5b50506003546040516378bd793560e01b815260048101869052600093506001600160a01b0390911691506378bd79359060240160c060405180830381865afa158015612a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a659190613c3a565b50505050509050816001600160a01b0316838260008051602061418a83398151915260405160405180910390a4505050565b6000546001600160a01b03163314612ac15760405162461bcd60e51b81526004016109f490613d73565b6001600160a01b038116612ae75760405162461bcd60e51b81526004016109f490613ca4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526009602052604081205460068054600492908110612b7157612b71613d5d565b600091825260209091200154600160881b900460ff166007811115612b9857612b98613ad5565b101592915050565b6000828152600a6020526040812080546001600160a01b0319166001600160a01b038416179055612bd0836118a4565b905082826001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600080612c24836118a4565b9050806001600160a01b0316846001600160a01b03161480612c5f5750836001600160a01b0316612c5484610d12565b6001600160a01b0316145b949350505050565b612c7081613581565b6003546040516378bd793560e01b8152600481018390526000916001600160a01b0316906378bd79359060240160c060405180830381865afa158015612cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cde9190613c3a565b5050505050905081817fdb9cc99dc874f9afbae71151f737e51547d3d412b52922793437d86607050c3c60405160405180910390a36003546040516396b5a75560e01b8152600481018490526001600160a01b03909116906396b5a75590602401610c2b565b612d4d81613581565b610df783838361359f565b6000612d648284614097565b905082811015610d0c5760405162461bcd60e51b815260206004820152601360248201527214d8599953585d1a081859190819985a5b1959606a1b60448201526064016109f4565b6000908152600860205260409020546001600160a01b0316151590565b600082815260086020526040812054600680546001600160a01b03909216929185908110612df957612df9613d5d565b600091825260208220018054909250600160881b900460ff1690846007811115612e2557612e25613ad5565b03612e3857612e338561328a565b612e84565b81548490839060ff60881b1916600160881b836007811115612e5c57612e5c613ad5565b02179055508154600160401b600160801b031916600160401b426001600160401b0316021782555b806007811115612e9657612e96613ad5565b600111158015612eb857506003816007811115612eb557612eb5613ad5565b11155b15612f0057600780546001600160401b0316906000612ed6836140aa565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050612f7f565b806007811115612f1257612f12613ad5565b600411158015612f3457506007816007811115612f3157612f31613ad5565b11155b15612f7f5760078054600160401b90046001600160401b0316906008612f59836140aa565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b836007811115612f9157612f91613ad5565b600111158015612fb357506003846007811115612fb057612fb0613ad5565b11155b15612ffb57600780546001600160401b0316906000612fd183614069565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505061307a565b83600781111561300d5761300d613ad5565b60041115801561302f5750600784600781111561302c5761302c613ad5565b11155b1561307a5760078054600160401b90046001600160401b031690600861305483614069565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b826001600160a01b0316857fb6fd4b2356bc13ccc82da8b790e9bf9bdcfd4743d32dd10aa48189ec53f6bc0083876040516130b69291906140cd565b60405180910390a35050505050565b6000806040518060a00160405280426001600160401b03168152602001426001600160401b03168152602001841515815260200185600781111561310b5761310b613ad5565b81526001600160401b034281166020928301526006805460018101825560009190915283517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910180549385015160408601511515600160801b0260ff60801b19918516600160401b026001600160801b0319909616939094169290921793909317908116821783556060840151939450849391839160ff60881b1990911661ffff60801b1990911617600160881b8360078111156131cd576131cd613ad5565b02179055506080919091015181546001600160401b03909116600160901b02600160901b600160d01b0319909116179055600654600090613210906001906140e8565b6001600160a01b0387166000818152600960209081526040808320859055848352600890915280822080546001600160a01b031916841790555192935083926000805160206141aa833981519152908290a49150505b9392505050565b6001600160a01b0316600090815260096020526040902054151590565b600081815260086020908152604080832080546001600160a01b031981169091556001600160a01b0316808452600990925282209190915560068054839081106132d6576132d6613d5d565b6000918252602082200180546001600160d01b03191690556040518391906001600160a01b038416906000805160206141aa833981519152908390a45050565b60608160000361333d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156133675780613351816140fb565b91506133609050600a8361412a565b9150613341565b8391506000816001600160401b038111156133845761338461385c565b6040519080825280601f01601f1916602001820160405280156133ae576020820181803683370190505b50905060006133be6001846140e8565b90505b8315613426576133d2600a8561413e565b6133dd906030614097565b60f81b82826133eb81614152565b9350815181106133fd576133fd613d5d565b60200101906001600160f81b031916908160001a90535061341f600a8561412a565b93506133c1565b50949350505050565b80518251606091849184916000916134479190614097565b6001600160401b0381111561345e5761345e61385c565b6040519080825280601f01601f191660200182016040528015613488576020820181803683370190505b509050806000805b8551811015613500578581815181106134ab576134ab613d5d565b01602001516001600160f81b03191683836134c5816140fb565b9450815181106134d7576134d7613d5d565b60200101906001600160f81b031916908160001a905350806134f8816140fb565b915050613490565b5060005b84518110156135745784818151811061351f5761351f613d5d565b01602001516001600160f81b0319168383613539816140fb565b94508151811061354b5761354b613d5d565b60200101906001600160f81b031916908160001a9053508061356c816140fb565b915050613504565b5090979650505050505050565b6000908152600a6020526040902080546001600160a01b0319169055565b6135a88261326d565b156135f05760405162461bcd60e51b81526020600482015260186024820152772fba379030b63932b0b23c903437b6321030903a37b5b2b760411b60448201526064016109f4565b813b156136385760405162461bcd60e51b815260206004820152601660248201527517dd1bc81b5d5cdd1b89dd08184818dbdb9d1c9858dd60521b60448201526064016109f4565b426006828154811061364c5761364c613d5d565b9060005260206000200160000160086101000a8154816001600160401b0302191690836001600160401b03160217905550426006828154811061369157613691613d5d565b6000918252602080832090910180546001600160401b0394909416600160901b02600160901b600160d01b0319909416939093179092556001600160a01b03808616808352600980855260408085208590558685526008865280852080549489166001600160a01b03199095168517905583855294528383208590559251849391926000805160206141aa83398151915291a4505050565b6001600160a01b0381168114611f2457600080fd5b6000806040838503121561375157600080fd5b82359150602083013561376381613729565b809150509250929050565b60006020828403121561378057600080fd5b81356001600160e01b03198116811461326657600080fd5b600080604083850312156137ab57600080fd5b82356137b681613729565b946020939093013593505050565b600060208083528351808285015260005b818110156137f1578581018301518582016040015282016137d5565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561382457600080fd5b813561326681613729565b60006020828403121561384157600080fd5b5035919050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561388457600080fd5b81356001600160401b038082111561389b57600080fd5b818401915084601f8301126138af57600080fd5b8135818111156138c1576138c161385c565b604051601f8201601f19908116603f011681019083821181831017156138e9576138e961385c565b8160405282815287602084870101111561390257600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060006060848603121561393757600080fd5b833561394281613729565b9250602084013561395281613729565b929592945050506040919091013590565b80356008811061397257600080fd5b919050565b60006020828403121561398957600080fd5b61326682613963565b6001600160401b0381168114611f2457600080fd5b6000602082840312156139b957600080fd5b813561326681613992565b80356001600160801b038116811461397257600080fd5b600080600080608085870312156139f157600080fd5b84359350613a01602086016139c4565b92506040850135613a1181613992565b91506060850135613a2181613729565b939692955090935050565b60008060408385031215613a3f57600080fd5b82359150613a4f60208401613963565b90509250929050565b8015158114611f2457600080fd5b600080600080600060a08688031215613a7e57600080fd5b8535613a8981613729565b9450613a9760208701613963565b93506040860135613aa781613a58565b92506060860135613ab781613992565b91506080860135613ac781613992565b809150509295509295909350565b634e487b7160e01b600052602160045260246000fd5b60088110613b0957634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b038816815260e08101613b2a6020830189613aeb565b951515604082015293151560608501526001600160401b03928316608085015290821660a08401521660c09091015292915050565b60008060008060808587031215613b7557600080fd5b84359350613b85602086016139c4565b9250613b93604086016139c4565b91506060850135613a2181613992565b6020808252601390820152721c1c9bdd1bd8dbdb081a185cc81c185d5cd959606a1b604082015260600190565b6020808252601190820152701c195c9b5a5cdcda5bdb8819195b9a5959607a1b604082015260600190565b6020808252600e908201526d34b9903737ba1030903a37b5b2b760911b604082015260600190565b9182526001600160a01b0316602082015260400190565b60008060008060008060c08789031215613c5357600080fd5b865195506020870151613c6581613729565b8095505060408701519350606087015192506080870151613c8581613992565b60a0880151909250613c9681613992565b809150509295509295509295565b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b6001600160a01b03929092168252602082015260400190565b600181811c90821680613cfa57607f821691505b602082108103613d1a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115613d5657613d56613d20565b5092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b601f821115610df757600081815260208120601f850160051c81016020861015613dbe5750805b601f850160051c820191505b81811015610c5957828155600101613dca565b81516001600160401b03811115613df657613df661385c565b613e0a81613e048454613ce6565b84613d97565b602080601f831160018114613e3f5760008415613e275750858301515b600019600386901b1c1916600185901b178555610c59565b600085815260208120601f198616915b82811015613e6e57888601518255948401946001909101908401613e4f565b5085821015613e8c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252601a908201527931b0b73737ba103a3930b739b332b9103a3434b9903a37b5b2b760311b604082015260600190565b600060208284031215613ee257600080fd5b815161326681613a58565b60208082526016908201527518d85b98d95b081d5c19dc98591a5b99c8199a5c9cdd60521b604082015260600190565b96875260208701959095526001600160801b0393841660408701529190921660608501526001600160401b0391821660808501521660a08301526001600160a01b031660c082015260e00190565b6001600160801b0393841681529190921660208201526001600160401b03909116604082015260600190565b6001600160a01b039290921682521515602082015260400190565b600060208284031215613fc457600080fd5b5051919050565b6020808252600d908201526c1a5b9d985b1a59081b195d995b609a1b604082015260600190565b60208082526014908201527318d85b98d95b08185d58dd1a5bdb88199a5c9cdd60621b604082015260600190565b60ff8181168382160190811115610d0c57610d0c613d20565b606081016140478286613aeb565b6001600160401b03938416602083015291909216604090920191909152919050565b60006001600160401b038281166002600160401b0319810161408d5761408d613d20565b6001019392505050565b80820180821115610d0c57610d0c613d20565b60006001600160401b038216806140c3576140c3613d20565b6000190192915050565b604081016140db8285613aeb565b6132666020830184613aeb565b81810381811115610d0c57610d0c613d20565b60006001820161410d5761410d613d20565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261413957614139614114565b500490565b60008261414d5761414d614114565b500690565b60008161416157614161613d20565b50600019019056fe50417882ac38f5bd0dd968f4b17f72ab38a7bd228eeec270f01466a5724684b4c42e7df8c9dcd26c4a8b5134e17fa2481ababcb828e3b316b89b63c57b61f3b8ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efe925483a08461d851abfcfd476ed282a68d87b23cc45add5a8dc7f1ad7825ce90baadf7b35b83c7d3a00874b5406dca58c60d0ff7d8c825ad02ec55484beb455966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672da264697066735822122002ca4d57bdd975f54d015b8b6a6aa17c8ca0beae35c0b7b3e9867fe707328cd964736f6c63430008140033",
  "deployedBytecode": "0x60806040526004361061025a5760003560e01c8063019211971461025f57806301ffc9a7146102815780630324529c146102d057806306fdde03146102f057806307fa65f914610312578063081812fc14610332578063095ea7b31461035f57806313e7c9d81461037f57806318160ddd146103af57806319f37361146103d257806319fa8f50146103f25780631e20363a1461042657806323b872dd14610446578063287e8495146104665780632ad71573146104b55780632c12cc9f146104cb5780632ed9b4fd146104eb5780633f4ba83a1461050b578063417c73a714610520578063454a2ab3146105405780634838d165146105535780634a49ac4c146105835780634d4f6ea9146105a35780635c975abb146105c357806360836166146105e45780636352211e1461060457806368f16293146106245780636fbde40d1461066357806370a082311461068357806379512513146106a35780637aaed899146106c35780638456cb59146106e35780638c8d04a7146106f85780638da5cb5b1461071857806395d89b411461073857806396b5a7551461074d5780639870d7fe1461076d578063a574cea41461078d578063a9059cbb146107c0578063ac8a584a146107e0578063b03e02c214610800578063ba2a954d14610820578063ba6f2e6514610840578063bae3e19e14610860578063bfc206ed14610880578063c87b56dd146108b6578063cd5967db146108d6578063d4156148146108f6578063e6cbe3511461091d578063e729e3a41461093d578063f2fde38b1461096a578063f7e6e60c1461098a578063f9574c69146109aa575b600080fd5b34801561026b57600080fd5b5061027f61027a36600461373e565b6109ca565b005b34801561028d57600080fd5b506102bb61029c36600461376e565b6001600160e01b0319166000908152600b602052604090205460ff1690565b60405190151581526020015b60405180910390f35b3480156102dc57600080fd5b5061027f6102eb366004613798565b610b6a565b3480156102fc57600080fd5b50610305610c61565b6040516102c791906137c4565b34801561031e57600080fd5b506102bb61032d366004613812565b610cef565b34801561033e57600080fd5b5061035261034d36600461382f565b610d12565b6040516102c79190613848565b34801561036b57600080fd5b5061027f61037a366004613798565b610d2d565b34801561038b57600080fd5b506102bb61039a366004613812565b60016020526000908152604090205460ff1681565b3480156103bb57600080fd5b506103c4610dfc565b6040519081526020016102c7565b3480156103de57600080fd5b506102bb6103ed366004613812565b610e2c565b3480156103fe57600080fd5b5061040d6301ffc9a760e01b81565b6040516001600160e01b031990911681526020016102c7565b34801561043257600080fd5b5061027f610441366004613872565b610e88565b34801561045257600080fd5b5061027f610461366004613922565b610ec2565b34801561047257600080fd5b50610486610481366004613977565b61101c565b604080519485526001600160401b039384166020860152918316918401919091521660608201526080016102c7565b3480156104c157600080fd5b506103c4600f5481565b3480156104d757600080fd5b5061027f6104e63660046139a7565b6110a4565b3480156104f757600080fd5b5061027f6105063660046139db565b6110f5565b34801561051757600080fd5b506102bb61130f565b34801561052c57600080fd5b5061027f61053b366004613812565b6113c5565b61027f61054e36600461382f565b61146a565b34801561055f57600080fd5b506102bb61056e366004613812565b60026020526000908152604090205460ff1681565b34801561058f57600080fd5b5061027f61059e366004613812565b6115d7565b3480156105af57600080fd5b506102bb6105be36600461382f565b611669565b3480156105cf57600080fd5b506000546102bb90600160a01b900460ff1681565b3480156105f057600080fd5b5061027f6105ff366004613a2c565b61173e565b34801561061057600080fd5b5061035261061f36600461382f565b6118a4565b34801561063057600080fd5b5060035461064b90600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016102c7565b34801561066f57600080fd5b5061027f61067e366004613812565b6118bf565b34801561068f57600080fd5b506103c461069e366004613812565b61195a565b3480156106af57600080fd5b5061027f6106be366004613977565b61197c565b3480156106cf57600080fd5b5061027f6106de366004613a66565b611c53565b3480156106ef57600080fd5b506102bb611e1f565b34801561070457600080fd5b5060045461064b906001600160401b031681565b34801561072457600080fd5b50600054610352906001600160a01b031681565b34801561074457600080fd5b50610305611eb4565b34801561075957600080fd5b5061027f61076836600461382f565b611ec1565b34801561077957600080fd5b5061027f610788366004613812565b611f27565b34801561079957600080fd5b506107ad6107a836600461382f565b611fbf565b6040516102c79796959493929190613b0d565b3480156107cc57600080fd5b5061027f6107db366004613798565b61213e565b3480156107ec57600080fd5b5061027f6107fb366004613812565b612269565b34801561080c57600080fd5b5061027f61081b366004613a2c565b6122fb565b34801561082c57600080fd5b5061027f61083b36600461382f565b6124e8565b34801561084c57600080fd5b5061027f61085b3660046139a7565b61268a565b34801561086c57600080fd5b5061027f61087b366004613b5f565b6126e5565b34801561088c57600080fd5b5061035261089b36600461382f565b6008602052600090815260409020546001600160a01b031681565b3480156108c257600080fd5b506103056108d136600461382f565b612874565b3480156108e257600080fd5b5061027f6108f136600461373e565b612912565b34801561090257600080fd5b5060075461064b90600160401b90046001600160401b031681565b34801561092957600080fd5b50600354610352906001600160a01b031681565b34801561094957600080fd5b506103c4610958366004613812565b60096020526000908152604090205481565b34801561097657600080fd5b5061027f610985366004613812565b612a97565b34801561099657600080fd5b5060075461064b906001600160401b031681565b3480156109b657600080fd5b506102bb6109c5366004613812565b612b42565b600054600160a01b900460ff16156109fd5760405162461bcd60e51b81526004016109f490613ba3565b60405180910390fd5b33610a07836118a4565b6001600160a01b031614610a2d5760405162461bcd60e51b81526004016109f490613bd0565b610a3633610e2c565b610a525760405162461bcd60e51b81526004016109f490613bfb565b600354604051630192119760e01b81526001600160a01b0390911690630192119790610a849085908590600401613c23565b600060405180830381600087803b158015610a9e57600080fd5b505af1158015610ab2573d6000803e3d6000fd5b50506003546040516378bd793560e01b815260048101869052600093506001600160a01b0390911691506378bd79359060240160c060405180830381865afa158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190613c3a565b50505050509050816001600160a01b031683827f9bd63f96cf38bbd738ef415c10d8ce738b56b75bbe3b31f6bf2059d35f3a8f3a60405160405180910390a4505050565b3360009081526001602052604090205460ff16610b995760405162461bcd60e51b81526004016109f490613bd0565b6001600160a01b038216610bbf5760405162461bcd60e51b81526004016109f490613ca4565b60008111610c005760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b60448201526064016109f4565b60405163a9059cbb60e01b815265456e657267799063a9059cbb90610c2b9085908590600401613ccd565b600060405180830381600087803b158015610c4557600080fd5b505af1158015610c59573d6000803e3d6000fd5b505050505050565b600c8054610c6e90613ce6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9a90613ce6565b8015610ce75780601f10610cbc57610100808354040283529160200191610ce7565b820191906000526020600020905b815481529060010190602001808311610cca57829003601f168201915b505050505081565b6000610cfa82610e2c565b8015610d0c5750610d0a82612b42565b155b92915050565b6000908152600a60205260409020546001600160a01b031690565b600054600160a01b900460ff1615610d575760405162461bcd60e51b81526004016109f490613ba3565b6000610d62826118a4565b9050806001600160a01b0316836001600160a01b031603610dc55760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f7420617070726f766520796f7572206f776e20746f6b656e00000060448201526064016109f4565b336001600160a01b03821614610ded5760405162461bcd60e51b81526004016109f490613bd0565b610df78284612ba0565b505050565b600754600090610e1e906001600160401b03600160401b820481169116613d36565b6001600160401b0316905090565b6001600160a01b038116600090815260096020526040812054600680548392908110610e5a57610e5a613d5d565b600091825260209091200154600160881b900460ff166007811115610e8157610e81613ad5565b1192915050565b6000546001600160a01b03163314610eb25760405162461bcd60e51b81526004016109f490613d73565b600e610ebe8282613ddd565b5050565b600054600160a01b900460ff1615610eec5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038216610f125760405162461bcd60e51b81526004016109f490613ca4565b826001600160a01b0316610f25826118a4565b6001600160a01b031614610f4b5760405162461bcd60e51b81526004016109f490613bd0565b610f553382612c18565b610f715760405162461bcd60e51b81526004016109f490613bd0565b610f7a81611669565b610f965760405162461bcd60e51b81526004016109f490613e9c565b6003546040516337e246ad60e01b8152600481018390526001600160a01b03909116906337e246ad90602401602060405180830381865afa158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110039190613ed0565b156110115761101181612c67565b610df7838383612d44565b60008060008060006005600087600781111561103a5761103a613ad5565b60ff1681526020808201929092526040908101600020815160808101835281548082526001909201546001600160401b03808216958301869052600160401b82048116948301859052600160801b9091041660609091018190529099929850909650945092505050565b3360009081526001602052604090205460ff166110d35760405162461bcd60e51b81526004016109f490613bd0565b600480546001600160401b0319166001600160401b0392909216919091179055565b600054600160a01b900460ff161561111f5760405162461bcd60e51b81526004016109f490613ba3565b33611129856118a4565b6001600160a01b03161461114f5760405162461bcd60e51b81526004016109f490613bd0565b61115833610e2c565b6111745760405162461bcd60e51b81526004016109f490613bfb565b6006848154811061118757611187613d5d565b600091825260209091200154600160801b900460ff16156111ba5760405162461bcd60e51b81526004016109f490613eed565b6003546111d19085906001600160a01b0316612ba0565b600f546111df906001612d58565b600f81905560035460405163e4f9dd2d60e01b81526001600160a01b039091169163e4f9dd2d9161121f9190889088908190899042903390600401613f1d565b600060405180830381600087803b15801561123957600080fd5b505af115801561124d573d6000803e3d6000fd5b5050505083600f5460008051602061416a83398151915285868660405161127693929190613f6b565b60405180910390a360035460405163cd5967db60e01b81526001600160a01b039091169063cd5967db906112b09087908590600401613c23565b600060405180830381600087803b1580156112ca57600080fd5b505af11580156112de573d6000803e3d6000fd5b5050600f546040516001600160a01b038516935087925060008051602061418a83398151915290600090a450505050565b600080546001600160a01b0316331461133a5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1661138b5760405162461bcd60e51b81526020600482015260156024820152741b9959591cc81c1c9bdd1bd8dbdb081c185d5cd959605a1b60448201526064016109f4565b6000805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a150600190565b6000546001600160a01b031633146113ef5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff16156114195760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206141ea8339815191529161145f91849190613f97565b60405180910390a150565b600054600160a01b900460ff16156114945760405162461bcd60e51b81526004016109f490613ba3565b6003546040516378bd793560e01b81526004810183905260009182916001600160a01b03909116906378bd79359060240160c060405180830381865afa1580156114e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115069190613c3a565b50506003546040516359d667a560e01b81529496509294506000936001600160a01b03909316926359d667a592503491506115479033908990600401613ccd565b60206040518083038185885af1158015611565573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061158a9190613fb2565b9050816001600160a01b031684847fc2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f33856040516115c9929190613ccd565b60405180910390a450505050565b6000546001600160a01b031633146116015760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff161561162b5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206141ea8339815191529161145f91849190613f97565b600061167482612dac565b80156116a657506006828154811061168e5761168e613d5d565b600091825260209091200154600160801b900460ff16155b80156116d757506000828152600860209081526040808320546001600160a01b03168352600290915290205460ff16155b8015610d0c5750600360149054906101000a90046001600160401b03166006838154811061170757611707613d5d565b60009182526020909120015461172d9190600160901b90046001600160401b0316613d36565b6001600160401b0316421192915050565b3360009081526001602052604090205460ff1661176d5760405162461bcd60e51b81526004016109f490613bd0565b80600781111561177f5761177f613ad5565b6006838154811061179257611792613d5d565b600091825260209091200154600160881b900460ff1660078111156117b9576117b9613ad5565b106117d65760405162461bcd60e51b81526004016109f490613fcb565b6003546040516337e246ad60e01b8152600481018490526001600160a01b03909116906337e246ad90602401602060405180830381865afa15801561181f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118439190613ed0565b156118605760405162461bcd60e51b81526004016109f490613ff2565b60006006838154811061187557611875613d5d565b60009182526020909120018054911515600160801b0260ff60801b19909216919091179055610ebe8282612dc9565b6000908152600860205260409020546001600160a01b031690565b6000546001600160a01b031633146118e95760405162461bcd60e51b81526004016109f490613d73565b6001600160a01b03811661190f5760405162461bcd60e51b81526004016109f490613ca4565b600380546001600160a01b0319166001600160a01b0383161790556040517fb69d08e828d243d599db935e2be5ce7ed7b0d2f9c9f712ff469a10a27924deb89061145f908390613848565b600061196582610e2c565b611970576000611973565b60015b60ff1692915050565b600054600160a01b900460ff16156119a65760405162461bcd60e51b81526004016109f490613ba3565b33600090815260096020526040812054908190036119cd576119ca336000806130c5565b90505b6000600682815481106119e2576119e2613d5d565b60009182526020909120018054909150600160801b900460ff1615611a3b5760405162461bcd60e51b815260206004820152600f60248201526e7374696c6c20757067726164696e6760881b60448201526064016109f4565b6003546040516337e246ad60e01b8152600481018490526001600160a01b03909116906337e246ad90602401602060405180830381865afa158015611a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa89190613ed0565b15611ac55760405162461bcd60e51b81526004016109f490613ff2565b826007811115611ad757611ad7613ad5565b815460ff91821691600160881b909104166007811115611af957611af9613ad5565b611b04906001614020565b60ff16148015611b2657506004836007811115611b2357611b23613ad5565b14155b8015611b4457506007836007811115611b4157611b41613ad5565b11155b611b815760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a590817dd1bd31d9b60921b60448201526064016109f4565b60056000846007811115611b9757611b97613ad5565b60ff16815260208101919091526040016000205433311015611bf25760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016109f4565b80546001600160401b0342908116600160401b02600160401b600160881b031990921691909117600160801b178255604051339184916000805160206141ca83398151915291611c46918891904390614039565b60405180910390a3505050565b3360009081526001602052604090205460ff16611c825760405162461bcd60e51b81526004016109f490613bd0565b611c8b8561326d565b15611cd35760405162461bcd60e51b81526020600482015260186024820152773cb7ba9030b63932b0b23c903437b6321030903a37b5b2b760411b60448201526064016109f4565b6000611ce08686866130c5565b9050846007811115611cf457611cf4613ad5565b600111158015611d1657506003856007811115611d1357611d13613ad5565b11155b15611d5e57600780546001600160401b0316906000611d3483614069565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050611ddd565b846007811115611d7057611d70613ad5565b600411158015611d9257506007856007811115611d8f57611d8f613ad5565b11155b15611ddd5760078054600160401b90046001600160401b0316906008611db783614069565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b8315610c5957856001600160a01b0316816000805160206141ca833981519152878686604051611e0f93929190614039565b60405180910390a3505050505050565b600080546001600160a01b03163314611e4a5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1615611e745760405162461bcd60e51b81526004016109f490613ba3565b6000805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a150600190565b600d8054610c6e90613ce6565b600054600160a01b900460ff1615611eeb5760405162461bcd60e51b81526004016109f490613ba3565b33611ef5826118a4565b6001600160a01b031614611f1b5760405162461bcd60e51b81526004016109f490613bd0565b611f2481612c67565b50565b6000546001600160a01b03163314611f515760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1615611f7b5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038116600090815260016020819052604091829020805460ff191682179055905160008051602061420a8339815191529161145f91849190613f97565b6000806000806000806000611fd388612dac565b1561213357600060068981548110611fed57611fed613d5d565b60009182526020918290206040805160a0810182529190920180546001600160401b038082168452600160401b8204169483019490945260ff600160801b85048116151593830193909352909290916060840191600160881b900416600781111561205a5761205a613ad5565b600781111561206b5761206b613ad5565b81529054600160901b90046001600160401b031660209182015260008b815260089091526040908190205460608301518383015160035493516337e246ad60e01b8152600481018f90529495506001600160a01b03928316949193909216906337e246ad90602401602060405180830381865afa1580156120f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121149190613ed0565b8460800151856000015186602001519750975097509750975097509750505b919395979092949650565b600054600160a01b900460ff16156121685760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b03821661218e5760405162461bcd60e51b81526004016109f490613ca4565b33612198826118a4565b6001600160a01b0316146121be5760405162461bcd60e51b81526004016109f490613bd0565b6121c781611669565b6121e35760405162461bcd60e51b81526004016109f490613e9c565b6003546040516337e246ad60e01b8152600481018390526001600160a01b03909116906337e246ad90602401602060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122509190613ed0565b1561225e5761225e81612c67565b610ebe338383612d44565b6000546001600160a01b031633146122935760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff16156122bd5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038116600090815260016020526040808220805460ff191690555160008051602061420a8339815191529161145f91849190613f97565b3360009081526001602052604090205460ff1661232a5760405162461bcd60e51b81526004016109f490613bd0565b80600781111561233c5761233c613ad5565b6006838154811061234f5761234f613d5d565b600091825260209091200154600160881b900460ff16600781111561237657612376613ad5565b116123935760405162461bcd60e51b81526004016109f490613fcb565b600454600680546001600160401b0390921691849081106123b6576123b6613d5d565b6000918252602090912001546123dc9190600160901b90046001600160401b0316613d36565b6001600160401b0316421161242c5760405162461bcd60e51b815260206004820152601660248201527531b0b73737ba103237bbb733b930b232903a37b5b2b760511b60448201526064016109f4565b6003546040516337e246ad60e01b8152600481018490526001600160a01b03909116906337e246ad90602401602060405180830381865afa158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613ed0565b156124a7576124a782612c67565b600682815481106124ba576124ba613d5d565b600091825260209091200154600160801b900460ff16156124de576124de826124e8565b610ebe8282612dc9565b6124f181612dac565b61252f5760405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd08195e1a5cdd608a1b60448201526064016109f4565b60006006828154811061254457612544613d5d565b600091825260208083208584526008909152604090922054910180549092506001600160a01b0390911690600160801b900460ff166125b85760405162461bcd60e51b815260206004820152601060248201526f6e6f74206f6e20757067726164696e6760801b60448201526064016109f4565b6001600160a01b0381163314806125de57503360009081526001602052604090205460ff165b6125fa5760405162461bcd60e51b81526004016109f490613bd0565b60008254600160881b900460ff16600781111561261957612619613ad5565b0361262c576126278361328a565b61264f565b8154600160401b600160881b031916600160401b426001600160401b0316021782555b6040516001600160a01b0382169084907fddc99f00cc50e9442de66784f25bd218c8c63f4c4103b817692da0a63fb80a9690600090a3505050565b3360009081526001602052604090205460ff166126b95760405162461bcd60e51b81526004016109f490613bd0565b600380546001600160401b03909216600160a01b02600160a01b600160e01b0319909216919091179055565b600054600160a01b900460ff161561270f5760405162461bcd60e51b81526004016109f490613ba3565b33612719856118a4565b6001600160a01b03161461273f5760405162461bcd60e51b81526004016109f490613bd0565b61274833610e2c565b6127645760405162461bcd60e51b81526004016109f490613bfb565b6006848154811061277757612777613d5d565b600091825260209091200154600160801b900460ff16156127aa5760405162461bcd60e51b81526004016109f490613eed565b6003546127c19085906001600160a01b0316612ba0565b600f546127cf906001612d58565b600f81905560035460405163e4f9dd2d60e01b81526001600160a01b039091169163e4f9dd2d9161280f9190889088908890889042903390600401613f1d565b600060405180830381600087803b15801561282957600080fd5b505af115801561283d573d6000803e3d6000fd5b5050505083600f5460008051602061416a83398151915285858560405161286693929190613f6b565b60405180910390a350505050565b6060610d0c600e805461288690613ce6565b80601f01602080910402602001604051908101604052809291908181526020018280546128b290613ce6565b80156128ff5780601f106128d4576101008083540402835291602001916128ff565b820191906000526020600020905b8154815290600101906020018083116128e257829003601f168201915b505050505061290d84613316565b61342f565b600054600160a01b900460ff161561293c5760405162461bcd60e51b81526004016109f490613ba3565b33612946836118a4565b6001600160a01b03161461296c5760405162461bcd60e51b81526004016109f490613bd0565b61297533610e2c565b6129915760405162461bcd60e51b81526004016109f490613bfb565b60035460405163cd5967db60e01b81526001600160a01b039091169063cd5967db906129c39085908590600401613c23565b600060405180830381600087803b1580156129dd57600080fd5b505af11580156129f1573d6000803e3d6000fd5b50506003546040516378bd793560e01b815260048101869052600093506001600160a01b0390911691506378bd79359060240160c060405180830381865afa158015612a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a659190613c3a565b50505050509050816001600160a01b0316838260008051602061418a83398151915260405160405180910390a4505050565b6000546001600160a01b03163314612ac15760405162461bcd60e51b81526004016109f490613d73565b6001600160a01b038116612ae75760405162461bcd60e51b81526004016109f490613ca4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526009602052604081205460068054600492908110612b7157612b71613d5d565b600091825260209091200154600160881b900460ff166007811115612b9857612b98613ad5565b101592915050565b6000828152600a6020526040812080546001600160a01b0319166001600160a01b038416179055612bd0836118a4565b905082826001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600080612c24836118a4565b9050806001600160a01b0316846001600160a01b03161480612c5f5750836001600160a01b0316612c5484610d12565b6001600160a01b0316145b949350505050565b612c7081613581565b6003546040516378bd793560e01b8152600481018390526000916001600160a01b0316906378bd79359060240160c060405180830381865afa158015612cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cde9190613c3a565b5050505050905081817fdb9cc99dc874f9afbae71151f737e51547d3d412b52922793437d86607050c3c60405160405180910390a36003546040516396b5a75560e01b8152600481018490526001600160a01b03909116906396b5a75590602401610c2b565b612d4d81613581565b610df783838361359f565b6000612d648284614097565b905082811015610d0c5760405162461bcd60e51b815260206004820152601360248201527214d8599953585d1a081859190819985a5b1959606a1b60448201526064016109f4565b6000908152600860205260409020546001600160a01b0316151590565b600082815260086020526040812054600680546001600160a01b03909216929185908110612df957612df9613d5d565b600091825260208220018054909250600160881b900460ff1690846007811115612e2557612e25613ad5565b03612e3857612e338561328a565b612e84565b81548490839060ff60881b1916600160881b836007811115612e5c57612e5c613ad5565b02179055508154600160401b600160801b031916600160401b426001600160401b0316021782555b806007811115612e9657612e96613ad5565b600111158015612eb857506003816007811115612eb557612eb5613ad5565b11155b15612f0057600780546001600160401b0316906000612ed6836140aa565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050612f7f565b806007811115612f1257612f12613ad5565b600411158015612f3457506007816007811115612f3157612f31613ad5565b11155b15612f7f5760078054600160401b90046001600160401b0316906008612f59836140aa565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b836007811115612f9157612f91613ad5565b600111158015612fb357506003846007811115612fb057612fb0613ad5565b11155b15612ffb57600780546001600160401b0316906000612fd183614069565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505061307a565b83600781111561300d5761300d613ad5565b60041115801561302f5750600784600781111561302c5761302c613ad5565b11155b1561307a5760078054600160401b90046001600160401b031690600861305483614069565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b826001600160a01b0316857fb6fd4b2356bc13ccc82da8b790e9bf9bdcfd4743d32dd10aa48189ec53f6bc0083876040516130b69291906140cd565b60405180910390a35050505050565b6000806040518060a00160405280426001600160401b03168152602001426001600160401b03168152602001841515815260200185600781111561310b5761310b613ad5565b81526001600160401b034281166020928301526006805460018101825560009190915283517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910180549385015160408601511515600160801b0260ff60801b19918516600160401b026001600160801b0319909616939094169290921793909317908116821783556060840151939450849391839160ff60881b1990911661ffff60801b1990911617600160881b8360078111156131cd576131cd613ad5565b02179055506080919091015181546001600160401b03909116600160901b02600160901b600160d01b0319909116179055600654600090613210906001906140e8565b6001600160a01b0387166000818152600960209081526040808320859055848352600890915280822080546001600160a01b031916841790555192935083926000805160206141aa833981519152908290a49150505b9392505050565b6001600160a01b0316600090815260096020526040902054151590565b600081815260086020908152604080832080546001600160a01b031981169091556001600160a01b0316808452600990925282209190915560068054839081106132d6576132d6613d5d565b6000918252602082200180546001600160d01b03191690556040518391906001600160a01b038416906000805160206141aa833981519152908390a45050565b60608160000361333d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156133675780613351816140fb565b91506133609050600a8361412a565b9150613341565b8391506000816001600160401b038111156133845761338461385c565b6040519080825280601f01601f1916602001820160405280156133ae576020820181803683370190505b50905060006133be6001846140e8565b90505b8315613426576133d2600a8561413e565b6133dd906030614097565b60f81b82826133eb81614152565b9350815181106133fd576133fd613d5d565b60200101906001600160f81b031916908160001a90535061341f600a8561412a565b93506133c1565b50949350505050565b80518251606091849184916000916134479190614097565b6001600160401b0381111561345e5761345e61385c565b6040519080825280601f01601f191660200182016040528015613488576020820181803683370190505b509050806000805b8551811015613500578581815181106134ab576134ab613d5d565b01602001516001600160f81b03191683836134c5816140fb565b9450815181106134d7576134d7613d5d565b60200101906001600160f81b031916908160001a905350806134f8816140fb565b915050613490565b5060005b84518110156135745784818151811061351f5761351f613d5d565b01602001516001600160f81b0319168383613539816140fb565b94508151811061354b5761354b613d5d565b60200101906001600160f81b031916908160001a9053508061356c816140fb565b915050613504565b5090979650505050505050565b6000908152600a6020526040902080546001600160a01b0319169055565b6135a88261326d565b156135f05760405162461bcd60e51b81526020600482015260186024820152772fba379030b63932b0b23c903437b6321030903a37b5b2b760411b60448201526064016109f4565b813b156136385760405162461bcd60e51b815260206004820152601660248201527517dd1bc81b5d5cdd1b89dd08184818dbdb9d1c9858dd60521b60448201526064016109f4565b426006828154811061364c5761364c613d5d565b9060005260206000200160000160086101000a8154816001600160401b0302191690836001600160401b03160217905550426006828154811061369157613691613d5d565b6000918252602080832090910180546001600160401b0394909416600160901b02600160901b600160d01b0319909416939093179092556001600160a01b03808616808352600980855260408085208590558685526008865280852080549489166001600160a01b03199095168517905583855294528383208590559251849391926000805160206141aa83398151915291a4505050565b6001600160a01b0381168114611f2457600080fd5b6000806040838503121561375157600080fd5b82359150602083013561376381613729565b809150509250929050565b60006020828403121561378057600080fd5b81356001600160e01b03198116811461326657600080fd5b600080604083850312156137ab57600080fd5b82356137b681613729565b946020939093013593505050565b600060208083528351808285015260005b818110156137f1578581018301518582016040015282016137d5565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561382457600080fd5b813561326681613729565b60006020828403121561384157600080fd5b5035919050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561388457600080fd5b81356001600160401b038082111561389b57600080fd5b818401915084601f8301126138af57600080fd5b8135818111156138c1576138c161385c565b604051601f8201601f19908116603f011681019083821181831017156138e9576138e961385c565b8160405282815287602084870101111561390257600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060006060848603121561393757600080fd5b833561394281613729565b9250602084013561395281613729565b929592945050506040919091013590565b80356008811061397257600080fd5b919050565b60006020828403121561398957600080fd5b61326682613963565b6001600160401b0381168114611f2457600080fd5b6000602082840312156139b957600080fd5b813561326681613992565b80356001600160801b038116811461397257600080fd5b600080600080608085870312156139f157600080fd5b84359350613a01602086016139c4565b92506040850135613a1181613992565b91506060850135613a2181613729565b939692955090935050565b60008060408385031215613a3f57600080fd5b82359150613a4f60208401613963565b90509250929050565b8015158114611f2457600080fd5b600080600080600060a08688031215613a7e57600080fd5b8535613a8981613729565b9450613a9760208701613963565b93506040860135613aa781613a58565b92506060860135613ab781613992565b91506080860135613ac781613992565b809150509295509295909350565b634e487b7160e01b600052602160045260246000fd5b60088110613b0957634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b038816815260e08101613b2a6020830189613aeb565b951515604082015293151560608501526001600160401b03928316608085015290821660a08401521660c09091015292915050565b60008060008060808587031215613b7557600080fd5b84359350613b85602086016139c4565b9250613b93604086016139c4565b91506060850135613a2181613992565b6020808252601390820152721c1c9bdd1bd8dbdb081a185cc81c185d5cd959606a1b604082015260600190565b6020808252601190820152701c195c9b5a5cdcda5bdb8819195b9a5959607a1b604082015260600190565b6020808252600e908201526d34b9903737ba1030903a37b5b2b760911b604082015260600190565b9182526001600160a01b0316602082015260400190565b60008060008060008060c08789031215613c5357600080fd5b865195506020870151613c6581613729565b8095505060408701519350606087015192506080870151613c8581613992565b60a0880151909250613c9681613992565b809150509295509295509295565b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b6001600160a01b03929092168252602082015260400190565b600181811c90821680613cfa57607f821691505b602082108103613d1a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115613d5657613d56613d20565b5092915050565b634e487b7160e01b600052603260045260246000fd5b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b601f821115610df757600081815260208120601f850160051c81016020861015613dbe5750805b601f850160051c820191505b81811015610c5957828155600101613dca565b81516001600160401b03811115613df657613df661385c565b613e0a81613e048454613ce6565b84613d97565b602080601f831160018114613e3f5760008415613e275750858301515b600019600386901b1c1916600185901b178555610c59565b600085815260208120601f198616915b82811015613e6e57888601518255948401946001909101908401613e4f565b5085821015613e8c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252601a908201527931b0b73737ba103a3930b739b332b9103a3434b9903a37b5b2b760311b604082015260600190565b600060208284031215613ee257600080fd5b815161326681613a58565b60208082526016908201527518d85b98d95b081d5c19dc98591a5b99c8199a5c9cdd60521b604082015260600190565b96875260208701959095526001600160801b0393841660408701529190921660608501526001600160401b0391821660808501521660a08301526001600160a01b031660c082015260e00190565b6001600160801b0393841681529190921660208201526001600160401b03909116604082015260600190565b6001600160a01b039290921682521515602082015260400190565b600060208284031215613fc457600080fd5b5051919050565b6020808252600d908201526c1a5b9d985b1a59081b195d995b609a1b604082015260600190565b60208082526014908201527318d85b98d95b08185d58dd1a5bdb88199a5c9cdd60621b604082015260600190565b60ff8181168382160190811115610d0c57610d0c613d20565b606081016140478286613aeb565b6001600160401b03938416602083015291909216604090920191909152919050565b60006001600160401b038281166002600160401b0319810161408d5761408d613d20565b6001019392505050565b80820180821115610d0c57610d0c613d20565b60006001600160401b038216806140c3576140c3613d20565b6000190192915050565b604081016140db8285613aeb565b6132666020830184613aeb565b81810381811115610d0c57610d0c613d20565b60006001820161410d5761410d613d20565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261413957614139614114565b500490565b60008261414d5761414d614114565b500690565b60008161416157614161613d20565b50600019019056fe50417882ac38f5bd0dd968f4b17f72ab38a7bd228eeec270f01466a5724684b4c42e7df8c9dcd26c4a8b5134e17fa2481ababcb828e3b316b89b63c57b61f3b8ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efe925483a08461d851abfcfd476ed282a68d87b23cc45add5a8dc7f1ad7825ce90baadf7b35b83c7d3a00874b5406dca58c60d0ff7d8c825ad02ec55484beb455966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672da264697066735822122002ca4d57bdd975f54d015b8b6a6aa17c8ca0beae35c0b7b3e9867fe707328cd964736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
