Overview ERC721
Total Supply:
1 SABET

Holders:
2
Profile Summary
Blockchain:
C-Chain (43114)

Contract Source Code Verified (Partial Match)
Contract Name:
NFTCollectible

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 999999 runs

Created At:
Wed, 20 Nov 2024 05:37:20 GMT
NFTCollectible.sol
NFTCollectible.sol
NFTCollectible.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "tokenName",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "_defaultRoyalties",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "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": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "indexed": false,
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "royalties",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "indexed": false,
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "previousRoyalties",
        "type": "tuple[]"
      }
    ],
    "name": "DefaultRoyaltiesSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "indexed": false,
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "royalties",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "indexed": false,
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "previousRoyalties",
        "type": "tuple[]"
      }
    ],
    "name": "RoyaltiesSet",
    "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"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "balance",
    "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": [],
    "name": "baseExtension",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseTokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "defaultRoyalties",
    "outputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "value",
        "type": "uint96"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defaultRoyaltyReceiver",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getDefaultRoyalties",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "getTokenRoyalties",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxPercentage",
    "outputs": [
      {
        "internalType": "uint96",
        "name": "",
        "type": "uint96"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_tokenUri",
        "type": "string"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "_royalties",
        "type": "tuple[]"
      }
    ],
    "name": "mint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_salePrice",
        "type": "uint256"
      }
    ],
    "name": "multiRoyaltyInfo",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "value",
            "type": "uint256"
          }
        ],
        "internalType": "struct LibRoyalty.Part[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "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": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "royalties",
    "outputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "value",
        "type": "uint96"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_salePrice",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "royaltyAmount",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "_royalties",
        "type": "tuple[]"
      }
    ],
    "name": "saveRoyalties",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_baseExtension",
        "type": "string"
      }
    ],
    "name": "setBaseExtension",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_baseTokenURI",
        "type": "string"
      }
    ],
    "name": "setBaseTokenURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          }
        ],
        "internalType": "struct LibRoyalty.Royalty[]",
        "name": "_defaultRoyalties",
        "type": "tuple[]"
      }
    ],
    "name": "setDefaultRoyalties",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_defaultRoyaltyReceiver",
        "type": "address"
      }
    ],
    "name": "setDefaultRoyaltyReceiver",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "_tokenURI",
        "type": "string"
      }
    ],
    "name": "setTokenURI",
    "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": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "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": "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"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b50604051620049893803806200498983398101604081905262000034916200047f565b806109c48484600062000048838262000662565b50600162000057828262000662565b5050506001600160601b038116600160a01b023317600c556200007a8262000091565b5062000088905033620002ee565b50505062000851565b7fd1dba60d1ca3bc75f85f83c56fa0b1438eae870b9ffb9d638594b71fdf8820c681600a604051620000c59291906200072e565b60405180910390a1620000db600a600062000340565b6000805b8251811015620002675760006001600160a01b0316838281518110620001095762000109620007df565b6020026020010151600001516001600160a01b0316141580156200015757508281815181106200013d576200013d620007df565b6020026020010151602001516001600160601b0316600014155b156200025257828181518110620001725762000172620007df565b602002602001015160200151826200018b91906200080b565b6040805180820190915260008082526020820152909250838281518110620001b757620001b7620007df565b6020908102919091010151516001600160a01b031681528351849083908110620001e557620001e5620007df565b6020908102919091018101518101516001600160601b03908116918301918252600a80546001810182556000919091529251915116600160a01b026001600160a01b03909116177fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8909101555b806200025e8162000835565b915050620000df565b50600c546001600160601b03600160a01b90910481169082161115620002ea5760405162461bcd60e51b815260206004820152602e60248201527f526f79616c747920746f74616c2076616c75652073686f756c64206265203c3d60448201526d206d617850657263656e7461676560901b606482015260840160405180910390fd5b5050565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b508054600082559060005260206000209081019062000360919062000363565b50565b5b808211156200037a576000815560010162000364565b5090565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620003b957620003b96200037e565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620003ea57620003ea6200037e565b604052919050565b600082601f8301126200040457600080fd5b81516001600160401b038111156200042057620004206200037e565b602062000436601f8301601f19168201620003bf565b82815285828487010111156200044b57600080fd5b60005b838110156200046b5785810183015182820184015282016200044e565b506000928101909101919091529392505050565b6000806000606084860312156200049557600080fd5b83516001600160401b0380821115620004ad57600080fd5b620004bb87838801620003f2565b9450602091508186015181811115620004d357600080fd5b620004e188828901620003f2565b94505060408087015182811115620004f857600080fd5b8701601f810189136200050a57600080fd5b8051838111156200051f576200051f6200037e565b6200052f858260051b01620003bf565b818152858101945060069190911b82018501908a8211156200055057600080fd5b918501915b81831015620005c35783838c0312156200056f5760008081fd5b6200057962000394565b83516001600160a01b0381168114620005925760008081fd5b8152838701516001600160601b0381168114620005af5760008081fd5b818801528552938501939183019162000555565b8096505050505050509250925092565b600181811c90821680620005e857607f821691505b6020821081036200060957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200065d57600081815260208120601f850160051c81016020861015620006385750805b601f850160051c820191505b81811015620006595782815560010162000644565b5050505b505050565b81516001600160401b038111156200067e576200067e6200037e565b62000696816200068f8454620005d3565b846200060f565b602080601f831160018114620006ce5760008415620006b55750858301515b600019600386901b1c1916600185901b17855562000659565b600085815260208120601f198616915b82811015620006ff57888601518255948401946001909101908401620006de565b50858210156200071e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408082528351828201819052600091906020906060850190828801855b828110156200078557815180516001600160a01b031685528501516001600160601b03168585015292850192908401906001016200074c565b505050848103828601528554808252600087815283812092840191905b81811015620007d15783546001600160a01b038116845260a01c858401526001938401939286019201620007a2565b509098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160601b038181168382160190808211156200082e576200082e620007f5565b5092915050565b6000600182016200084a576200084a620007f5565b5060010190565b61412880620008616000396000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c806370a0823111610160578063acbd62bc116100d8578063d547cfb71161008c578063e461aa2311610071578063e461aa23146105bf578063e985e9c5146105df578063f2fde38b1461062857600080fd5b8063d547cfb7146105a4578063da3ef23f146105ac57600080fd5b8063b88d4fde116100bd578063b88d4fde14610576578063c668286214610589578063c87b56dd1461059157600080fd5b8063acbd62bc14610550578063b69ef8a81461057057600080fd5b80638da5cb5b1161012f57806395d89b411161011457806395d89b4114610522578063a0f0c7b51461052a578063a22cb4651461053d57600080fd5b80638da5cb5b146104fc5780638de036d01461051a57600080fd5b806370a08231146104bb578063715018a6146104ce57806373ae3075146104d65780638924af74146104e957600080fd5b806323b872dd116101f357806335b6003b116101c257806342842e0e116101a757806342842e0e146104825780634f6ccce7146104955780636352211e146104a857600080fd5b806335b6003b146104225780633ebc82c51461046f57600080fd5b806323b872dd146103aa5780632a55205a146103bd5780632f745c59146103fc57806330176e131461040f57600080fd5b806308d10e141161024a578063162094c41161022f578063162094c41461037257806318160ddd146103855780631865fa841461039757600080fd5b806308d10e141461033d578063095ea7b31461035d57600080fd5b806301ffc9a71461027c57806306fdde03146102a4578063073e16b6146102b9578063081812fc14610305575b600080fd5b61028f61028a366004613522565b61063b565b60405190151581526020015b60405180910390f35b6102ac61069d565b60405161029b91906135ad565b6102cc6102c73660046135c0565b61072f565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff90911660208301520161029b565b6103186103133660046135c0565b61078d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b61035061034b3660046135c0565b61086c565b60405161029b9190613643565b61037061036b36600461367f565b61091e565b005b6103706103803660046137e6565b610aaa565b6008545b60405190815260200161029b565b6103706103a53660046138f3565b610bf4565b6103706103b8366004613928565b610c81565b6103d06103cb366004613964565b610d22565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161029b565b61038961040a36600461367f565b610e9f565b61037061041d366004613986565b610f6e565b600c54610452907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff909116815260200161029b565b61037061047d3660046139bb565b610fff565b610370610490366004613928565b611089565b6103896104a33660046135c0565b6110a4565b6103186104b63660046135c0565b611162565b6103896104c93660046139bb565b611214565b6103706112e2565b6103896104e43660046139d6565b61136f565b6102cc6104f7366004613964565b611404565b600d5473ffffffffffffffffffffffffffffffffffffffff16610318565b610350611470565b6102ac61150f565b610370610538366004613a30565b61151e565b61037061054b366004613a6d565b61166e565b61056361055e366004613964565b611679565b60405161029b9190613aa9565b47610389565b610370610584366004613b0e565b611882565b6102ac61192a565b6102ac61059f3660046135c0565b6119b8565b6102ac611b6e565b6103706105ba366004613986565b611b7b565b600c546103189073ffffffffffffffffffffffffffffffffffffffff1681565b61028f6105ed366004613b8a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b6103706106363660046139bb565b611c08565b60007fd5aadfa6000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083160161068e57506001919050565b61069782611d35565b92915050565b6060600080546106ac90613bbd565b80601f01602080910402602001604051908101604052809291908181526020018280546106d890613bbd565b80156107255780601f106106fa57610100808354040283529160200191610725565b820191906000526020600020905b81548152906001019060200180831161070857829003601f168201915b5050505050905090565b600a818154811061073f57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff811691507401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1682565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6060600b6000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610913576000848152602090819020604080518082019091529084015473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16818301528252600190920191016108a1565b505050509050919050565b600061092982611162565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161083a565b3373ffffffffffffffffffffffffffffffffffffffff82161480610a0f5750610a0f81336105ed565b610a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161083a565b610aa58383611d8b565b505050565b600d5473ffffffffffffffffffffffffffffffffffffffff163314610b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b60008281526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e000000000000000000000000000000000000606482015260840161083a565b6000828152601060205260409020610aa58282613c5e565b600d5473ffffffffffffffffffffffffffffffffffffffff163314610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b610c7e81611e2b565b50565b610c8b33826120f2565b610d17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161083a565b610aa583838361225e565b6000828152600b602052604081205481908190610d4057600a610d4f565b6000858152600b602052604090205b805480602002602001604051908101604052809291908181526020016000905b82821015610de1576000848152602090819020604080518082019091529084015473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681830152825260019092019101610d6f565b505050509050600080600090505b8251811015610e3557828181518110610e0a57610e0a613d78565b60200260200101516020015182610e219190613dd6565b915080610e2d81613e02565b915050610def565b506000816bffffffffffffffffffffffff1611610e53576000610e6d565b600c5473ffffffffffffffffffffffffffffffffffffffff165b612710610e886bffffffffffffffffffffffff841688613e3a565b610e929190613ea6565b9350935050509250929050565b6000610eaa83611214565b8210610f38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e6473000000000000000000000000000000000000000000606482015260840161083a565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b600d5473ffffffffffffffffffffffffffffffffffffffff163314610fef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b600f610ffb8282613c5e565b5050565b600d5473ffffffffffffffffffffffffffffffffffffffff163314611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b610c7e816124d0565b610aa583838360405180602001604052806000815250611882565b60006110af60085490565b821061113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e64730000000000000000000000000000000000000000606482015260840161083a565b6008828154811061115057611150613d78565b90600052602060002001549050919050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161083a565b600073ffffffffffffffffffffffffffffffffffffffff82166112b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161083a565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b600d5473ffffffffffffffffffffffffffffffffffffffff163314611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b61136d600061253e565b565b600d5460009073ffffffffffffffffffffffffffffffffffffffff1633146113f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b6113fd83836125b5565b9392505050565b600b602052816000526040600020818154811061142057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff811692507401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16905082565b6060600a805480602002602001604051908101604052809291908181526020016000905b82821015611506576000848152602090819020604080518082019091529084015473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681830152825260019092019101611494565b50505050905090565b6060600180546106ac90613bbd565b600d5473ffffffffffffffffffffffffffffffffffffffff16331461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b600d5473ffffffffffffffffffffffffffffffffffffffff166115c183611162565b73ffffffffffffffffffffffffffffffffffffffff1614611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f746f6b656e20646f6573206e6f742062656c6f6e677320746f20636f6e74726160448201527f6374206f776e6572000000000000000000000000000000000000000000000000606482015260840161083a565b610ffb8282612611565b610ffb3383836128dd565b6000828152600b60205260408120546060919061169757600a6116a6565b6000848152600b602052604090205b805480602002602001604051908101604052809291908181526020016000905b82821015611738576000848152602090819020604080518082019091529084015473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16818301528252600190920191016116c6565b5050505090506000815167ffffffffffffffff81111561175a5761175a6136a9565b60405190808252806020026020018201604052801561179f57816020015b60408051808201909152600080825260208201528152602001906001900390816117785790505b50905060005b82518110156118795760408051808201909152600080825260208201528382815181106117d4576117d4613d78565b60209081029190910101515173ffffffffffffffffffffffffffffffffffffffff16815283516127109085908490811061181057611810613d78565b6020026020010151602001516bffffffffffffffffffffffff16876118359190613e3a565b61183f9190613ea6565b60208201528251819084908490811061185a5761185a613d78565b602002602001018190525050808061187190613e02565b9150506117a5565b50949350505050565b61188c33836120f2565b611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161083a565b61192484848484612a0a565b50505050565b600e805461193790613bbd565b80601f016020809104026020016040519081016040528092919081815260200182805461196390613bbd565b80156119b05780601f10611985576101008083540402835291602001916119b0565b820191906000526020600020905b81548152906001019060200180831161199357829003601f168201915b505050505081565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16611a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161083a565b60008281526010602052604081208054611a8590613bbd565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab190613bbd565b8015611afe5780601f10611ad357610100808354040283529160200191611afe565b820191906000526020600020905b815481529060010190602001808311611ae157829003601f168201915b50505050509050600081511115611b155792915050565b6000611b1f612aad565b90506000815111611b3857611b3384612abc565b611b66565b80611b4285612bcb565b600e604051602001611b5693929190613eba565b6040516020818303038152906040525b949350505050565b600f805461193790613bbd565b600d5473ffffffffffffffffffffffffffffffffffffffff163314611bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b600e610ffb8282613c5e565b600d5473ffffffffffffffffffffffffffffffffffffffff163314611c89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b73ffffffffffffffffffffffffffffffffffffffff8116611d2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161083a565b610c7e8161253e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f85f0c5d6000000000000000000000000000000000000000000000000000000001480610697575061069782612d00565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190611de582611162565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b7fd1dba60d1ca3bc75f85f83c56fa0b1438eae870b9ffb9d638594b71fdf8820c681600a604051611e5d929190613f78565b60405180910390a1611e71600a60006134c2565b6000805b825181101561203557600073ffffffffffffffffffffffffffffffffffffffff16838281518110611ea857611ea8613d78565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614158015611f045750828181518110611ee557611ee5613d78565b6020026020010151602001516bffffffffffffffffffffffff16600014155b1561202357828181518110611f1b57611f1b613d78565b60200260200101516020015182611f329190613dd6565b6040805180820190915260008082526020820152909250838281518110611f5b57611f5b613d78565b60209081029190910101515173ffffffffffffffffffffffffffffffffffffffff1681528351849083908110611f9357611f93613d78565b6020908102919091018101518101516bffffffffffffffffffffffff908116918301918252600a80546001810182556000919091529251915116740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff909116177fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8909101555b8061202d81613e02565b915050611e75565b50600c546bffffffffffffffffffffffff7401000000000000000000000000000000000000000090910481169082161115610ffb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f526f79616c747920746f74616c2076616c75652073686f756c64206265203c3d60448201527f206d617850657263656e74616765000000000000000000000000000000000000606482015260840161083a565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161083a565b60006121ae83611162565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061221d57508373ffffffffffffffffffffffffffffffffffffffff166122058461078d565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b66575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff16611b66565b8273ffffffffffffffffffffffffffffffffffffffff1661227e82611162565b73ffffffffffffffffffffffffffffffffffffffff1614612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161083a565b73ffffffffffffffffffffffffffffffffffffffff82166123c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161083a565b6123ce838383612d56565b6123d9600082611d8b565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080546001929061240f908490613ff4565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080546001929061244a908490614007565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff81166124f7576124f7600a60006134c2565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600d805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006125c5601180546001019055565b60006125d060115490565b90506125fa6125f4600d5473ffffffffffffffffffffffffffffffffffffffff1690565b82612d61565b83511561260b5761260b8185610aaa565b6113fd81845b6000828152600b602052604090819020905183917ff0f1a857e358b32b2177a0fb15e84feb5c86fc775e51ff5c052e28c35f4358f491612652918591613f78565b60405180910390a26000828152600b6020526040812061267290826134c2565b60005b825181101561282057600073ffffffffffffffffffffffffffffffffffffffff168382815181106126a8576126a8613d78565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff161415801561270457508281815181106126e5576126e5613d78565b6020026020010151602001516bffffffffffffffffffffffff16600014155b1561280e5782818151811061271b5761271b613d78565b602002602001015160200151826127329190613dd6565b604080518082019091526000808252602082015290925083828151811061275b5761275b613d78565b60209081029190910101515173ffffffffffffffffffffffffffffffffffffffff168152835184908390811061279357612793613d78565b6020908102919091018101518101516bffffffffffffffffffffffff9081168383019081526000888152600b845260408120805460018101825590825293902093519051909116740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff909116179101555b8061281881613e02565b915050612675565b50600c546bffffffffffffffffffffffff7401000000000000000000000000000000000000000090910481169082161115610aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f526f79616c747920746f74616c2076616c75652073686f756c64206265203c3d60448201527f206d617850657263656e74616765000000000000000000000000000000000000606482015260840161083a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161083a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a1584848461225e565b612a2184848484612f2f565b611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161083a565b6060600f80546106ac90613bbd565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16612b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161083a565b6000612b7a612aad565b90506000815111612b9a57604051806020016040528060008152506113fd565b80612ba484612bcb565b604051602001612bb592919061401a565b6040516020818303038152906040529392505050565b606081600003612c0e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612c385780612c2281613e02565b9150612c319050600a83613ea6565b9150612c12565b60008167ffffffffffffffff811115612c5357612c536136a9565b6040519080825280601f01601f191660200182016040528015612c7d576020820181803683370190505b5090505b8415611b6657612c92600183613ff4565b9150612c9f600a86614049565b612caa906030614007565b60f81b818381518110612cbf57612cbf613d78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612cf9600a86613ea6565b9450612c81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610697575061069782613122565b610aa5838383613205565b73ffffffffffffffffffffffffffffffffffffffff8216612dde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161083a565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612e6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161083a565b612e7660008383612d56565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290612eac908490614007565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600073ffffffffffffffffffffffffffffffffffffffff84163b15613117576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290612fa690339089908890889060040161405d565b6020604051808303816000875af1925050508015612fff575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612ffc918101906140a6565b60015b6130cc573d80801561302d576040519150601f19603f3d011682016040523d82523d6000602084013e613032565b606091505b5080516000036130c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161083a565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611b66565b506001949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806131b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061069757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610697565b73ffffffffffffffffffffffffffffffffffffffff831661326d5761326881600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6132aa565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146132aa576132aa838261330b565b73ffffffffffffffffffffffffffffffffffffffff82166132ce57610aa5816133c2565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610aa557610aa58282613471565b6000600161331884611214565b6133229190613ff4565b6000838152600760205260409020549091508082146133825773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b6008546000906133d490600190613ff4565b600083815260096020526040812054600880549394509092849081106133fc576133fc613d78565b90600052602060002001549050806008838154811061341d5761341d613d78565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480613455576134556140c3565b6001900381819060005260206000200160009055905550505050565b600061347c83611214565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5080546000825590600052602060002090810190610c7e91905b808211156134f057600081556001016134dc565b5090565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610c7e57600080fd5b60006020828403121561353457600080fd5b81356113fd816134f4565b60005b8381101561355a578181015183820152602001613542565b50506000910152565b6000815180845261357b81602086016020860161353f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006113fd6020830184613563565b6000602082840312156135d257600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613638578151805173ffffffffffffffffffffffffffffffffffffffff1688528301516bffffffffffffffffffffffff1683880152604090960195908201906001016135ed565b509495945050505050565b6020815260006113fd60208301846135d9565b803573ffffffffffffffffffffffffffffffffffffffff8116811461367a57600080fd5b919050565b6000806040838503121561369257600080fd5b61369b83613656565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156136fb576136fb6136a9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613748576137486136a9565b604052919050565b600067ffffffffffffffff83111561376a5761376a6136a9565b61379b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601613701565b90508281528383830111156137af57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126137d757600080fd5b6113fd83833560208501613750565b600080604083850312156137f957600080fd5b82359150602083013567ffffffffffffffff81111561381757600080fd5b613823858286016137c6565b9150509250929050565b600082601f83011261383e57600080fd5b8135602067ffffffffffffffff82111561385a5761385a6136a9565b613868818360051b01613701565b82815260069290921b8401810191818101908684111561388757600080fd5b8286015b848110156138e857604081890312156138a45760008081fd5b6138ac6136d8565b6138b582613656565b8152848201356bffffffffffffffffffffffff811681146138d65760008081fd5b8186015283529183019160400161388b565b509695505050505050565b60006020828403121561390557600080fd5b813567ffffffffffffffff81111561391c57600080fd5b611b668482850161382d565b60008060006060848603121561393d57600080fd5b61394684613656565b925061395460208501613656565b9150604084013590509250925092565b6000806040838503121561397757600080fd5b50508035926020909101359150565b60006020828403121561399857600080fd5b813567ffffffffffffffff8111156139af57600080fd5b611b66848285016137c6565b6000602082840312156139cd57600080fd5b6113fd82613656565b600080604083850312156139e957600080fd5b823567ffffffffffffffff80821115613a0157600080fd5b613a0d868387016137c6565b93506020850135915080821115613a2357600080fd5b506138238582860161382d565b60008060408385031215613a4357600080fd5b82359150602083013567ffffffffffffffff811115613a6157600080fd5b6138238582860161382d565b60008060408385031215613a8057600080fd5b613a8983613656565b915060208301358015158114613a9e57600080fd5b809150509250929050565b602080825282518282018190526000919060409081850190868401855b82811015613b01578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613ac6565b5091979650505050505050565b60008060008060808587031215613b2457600080fd5b613b2d85613656565b9350613b3b60208601613656565b925060408501359150606085013567ffffffffffffffff811115613b5e57600080fd5b8501601f81018713613b6f57600080fd5b613b7e87823560208401613750565b91505092959194509250565b60008060408385031215613b9d57600080fd5b613ba683613656565b9150613bb460208401613656565b90509250929050565b600181811c90821680613bd157607f821691505b602082108103613c0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610aa557600081815260208120601f850160051c81016020861015613c375750805b601f850160051c820191505b81811015613c5657828155600101613c43565b505050505050565b815167ffffffffffffffff811115613c7857613c786136a9565b613c8c81613c868454613bbd565b84613c10565b602080601f831160018114613cdf5760008415613ca95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613c56565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613d2c57888601518255948401946001909101908401613d0d565b5085821015613d6857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6bffffffffffffffffffffffff818116838216019080821115613dfb57613dfb613da7565b5092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e3357613e33613da7565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e7257613e72613da7565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613eb557613eb5613e77565b500490565b600084516020613ecd8285838a0161353f565b855191840191613ee08184848a0161353f565b8554920191600090613ef181613bbd565b60018281168015613f095760018114613f3c57613f68565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450613f68565b896000528560002060005b84811015613f6057815489820152908301908701613f47565b505082870194505b50929a9950505050505050505050565b60006040808352613f8b818401866135d9565b60208482038186015281865480845282840191508760005282600020935060005b81811015613fe657845473ffffffffffffffffffffffffffffffffffffffff8116845260a01c848401526001948501949286019201613fac565b509098975050505050505050565b8181038181111561069757610697613da7565b8082018082111561069757610697613da7565b6000835161402c81846020880161353f565b83519083019061404081836020880161353f565b01949350505050565b60008261405857614058613e77565b500690565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261409c6080830184613563565b9695505050505050565b6000602082840312156140b857600080fd5b81516113fd816134f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212204ca6f1b96898f82fb97df60eebe0d7ab09735872007b360af5c9cf9f6e6855ff64736f6c63430008100033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000553414245540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005534142455400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004e410acc35f421b49d0c05c790897ad7e59f679800000000000000000000000000000000000000000000000000000000000003e8