@gearbox-protocol/sdk 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/gearbox-sdk.iml +12 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/.prettierrc +10 -0
- package/README.md +4 -0
- package/lib/config.d.ts +1 -0
- package/lib/config.js +4 -0
- package/lib/core/constants.d.ts +17 -0
- package/lib/core/constants.js +36 -0
- package/lib/core/contracts.d.ts +64 -0
- package/lib/core/contracts.js +104 -0
- package/lib/core/contractsRegister.d.ts +2 -0
- package/lib/core/contractsRegister.js +43 -0
- package/lib/core/creditAccount.d.ts +35 -0
- package/lib/core/creditAccount.js +98 -0
- package/lib/core/creditCard.d.ts +13 -0
- package/lib/core/creditCard.js +2 -0
- package/lib/core/creditManager.d.ts +37 -0
- package/lib/core/creditManager.js +118 -0
- package/lib/core/creditOperation.d.ts +9 -0
- package/lib/core/creditOperation.js +2 -0
- package/lib/core/creditSession.d.ts +26 -0
- package/lib/core/creditSession.js +44 -0
- package/lib/core/errors.d.ts +26 -0
- package/lib/core/errors.js +74 -0
- package/lib/core/event.d.ts +42 -0
- package/lib/core/event.js +2 -0
- package/lib/core/eventOrTx.d.ts +36 -0
- package/lib/core/eventOrTx.js +97 -0
- package/lib/core/events.d.ts +369 -0
- package/lib/core/events.js +730 -0
- package/lib/core/history.d.ts +42 -0
- package/lib/core/history.js +2 -0
- package/lib/core/operations.d.ts +22 -0
- package/lib/core/operations.js +20 -0
- package/lib/core/oracles.d.ts +6 -0
- package/lib/core/oracles.js +2 -0
- package/lib/core/pool.d.ts +28 -0
- package/lib/core/pool.js +32 -0
- package/lib/core/swap.d.ts +4 -0
- package/lib/core/swap.js +8 -0
- package/lib/core/token.d.ts +3 -0
- package/lib/core/token.js +229 -0
- package/lib/core/tokenData.d.ts +28 -0
- package/lib/core/tokenData.js +58 -0
- package/lib/core/tokenDistributor.d.ts +12 -0
- package/lib/core/tokenDistributor.js +9 -0
- package/lib/core/trade.d.ts +35 -0
- package/lib/core/trade.js +62 -0
- package/lib/core/transactions.d.ts +127 -0
- package/lib/core/transactions.js +306 -0
- package/lib/index.d.ts +33 -0
- package/lib/index.js +47 -0
- package/lib/payload/creditAccount.d.ts +26 -0
- package/lib/payload/creditAccount.js +2 -0
- package/lib/payload/creditManager.d.ts +43 -0
- package/lib/payload/creditManager.js +2 -0
- package/lib/payload/creditSession.d.ts +23 -0
- package/lib/payload/creditSession.js +2 -0
- package/lib/payload/graphPayload.d.ts +9 -0
- package/lib/payload/graphPayload.js +2 -0
- package/lib/payload/pool.d.ts +17 -0
- package/lib/payload/pool.js +3 -0
- package/lib/payload/token.d.ts +5 -0
- package/lib/payload/token.js +2 -0
- package/lib/types/ACL.d.ts +491 -0
- package/lib/types/ACLTrait.d.ts +148 -0
- package/lib/types/ACLTraitTest.d.ts +209 -0
- package/lib/types/AbstractAccountMiner.d.ts +143 -0
- package/lib/types/AccountFactory.d.ts +716 -0
- package/lib/types/AccountMinerAuction.d.ts +391 -0
- package/lib/types/AccountMinerMock.d.ts +241 -0
- package/lib/types/AccountMinerNonReceivableTest.d.ts +127 -0
- package/lib/types/AccountMinerOwnFunds.d.ts +218 -0
- package/lib/types/AccountMining.d.ts +222 -0
- package/lib/types/AdaptersDeployer.d.ts +262 -0
- package/lib/types/AddressProvider.d.ts +912 -0
- package/lib/types/AggregatorV3Interface.d.ts +234 -0
- package/lib/types/ChainlinkPriceFeedMock.d.ts +215 -0
- package/lib/types/ContractsRegister.d.ts +398 -0
- package/lib/types/CoreDeployer.d.ts +394 -0
- package/lib/types/CreditAccount.d.ts +443 -0
- package/lib/types/CreditFilter.d.ts +1609 -0
- package/lib/types/CreditFilterMock.d.ts +1687 -0
- package/lib/types/CreditManager.d.ts +1285 -0
- package/lib/types/CreditManagerMockForFilter.d.ts +605 -0
- package/lib/types/CreditManagerMockForPoolTest.d.ts +204 -0
- package/lib/types/CurveMock.d.ts +298 -0
- package/lib/types/CurveV1Adapter.d.ts +349 -0
- package/lib/types/DataCompressor.d.ts +1331 -0
- package/lib/types/Deployer.d.ts +224 -0
- package/lib/types/DieselToken.d.ts +567 -0
- package/lib/types/ERC165.d.ts +116 -0
- package/lib/types/ERC20.d.ts +411 -0
- package/lib/types/ERC20BlockingMock.d.ts +568 -0
- package/lib/types/ERC721.d.ts +625 -0
- package/lib/types/Errors.d.ts +1854 -0
- package/lib/types/ExecutorMock.d.ts +140 -0
- package/lib/types/FlashLoanAttacker.d.ts +170 -0
- package/lib/types/FuzzHarness.d.ts +124 -0
- package/lib/types/GearBeta.d.ts +745 -0
- package/lib/types/GearToken.d.ts +888 -0
- package/lib/types/GenesisDeployer.d.ts +282 -0
- package/lib/types/IAccountFactory.d.ts +317 -0
- package/lib/types/IAccountMiner.d.ts +124 -0
- package/lib/types/IAppAddressProvider.d.ts +198 -0
- package/lib/types/IAppCreditManager.d.ts +408 -0
- package/lib/types/IAppERC20.d.ts +309 -0
- package/lib/types/IAppPoolService.d.ts +166 -0
- package/lib/types/ICreditAccount.d.ts +430 -0
- package/lib/types/ICreditAccountData.d.ts +347 -0
- package/lib/types/ICreditFilter.d.ts +1162 -0
- package/lib/types/ICreditManager.d.ts +971 -0
- package/lib/types/ICurvePool.d.ts +298 -0
- package/lib/types/IDataCompressor.d.ts +1231 -0
- package/lib/types/IERC165.d.ts +116 -0
- package/lib/types/IERC20.d.ts +294 -0
- package/lib/types/IERC721.d.ts +472 -0
- package/lib/types/IERC721Enumerable.d.ts +564 -0
- package/lib/types/IERC721Metadata.d.ts +523 -0
- package/lib/types/IERC721Receiver.d.ts +132 -0
- package/lib/types/IGearToken.d.ts +527 -0
- package/lib/types/IInterestRateModel.d.ts +121 -0
- package/lib/types/IMerkleDistributor.d.ts +190 -0
- package/lib/types/IPoolService.d.ts +772 -0
- package/lib/types/IPriceOracle.d.ts +211 -0
- package/lib/types/IQuoter.d.ts +269 -0
- package/lib/types/ISwapRouter.d.ts +404 -0
- package/lib/types/IUniswapV2Migrator.d.ts +134 -0
- package/lib/types/IUniswapV2Router01.d.ts +1119 -0
- package/lib/types/IUniswapV2Router02.d.ts +1432 -0
- package/lib/types/IUniswapV3SwapCallback.d.ts +127 -0
- package/lib/types/IWETH.d.ts +169 -0
- package/lib/types/IWETHGateway.d.ts +335 -0
- package/lib/types/IYVault.d.ts +558 -0
- package/lib/types/LeveragedActions.d.ts +772 -0
- package/lib/types/LinearInterestRateModel.d.ts +279 -0
- package/lib/types/MockPoolService.d.ts +1271 -0
- package/lib/types/Multicall2.d.ts +449 -0
- package/lib/types/Ownable.d.ts +169 -0
- package/lib/types/PathFinder.d.ts +379 -0
- package/lib/types/Pausable.d.ts +105 -0
- package/lib/types/PercentageMathTest.d.ts +154 -0
- package/lib/types/PoolDeployer.d.ts +282 -0
- package/lib/types/PoolService.d.ts +1174 -0
- package/lib/types/PriceOracle.d.ts +387 -0
- package/lib/types/Proxy.d.ts +78 -0
- package/lib/types/StepVesting.d.ts +411 -0
- package/lib/types/TestPoolService.d.ts +1294 -0
- package/lib/types/TokenDistributor.d.ts +640 -0
- package/lib/types/TokenFeeMock.d.ts +544 -0
- package/lib/types/TokenMock.d.ts +531 -0
- package/lib/types/TreasuryMock.d.ts +86 -0
- package/lib/types/UniswapRouterMock.d.ts +1520 -0
- package/lib/types/UniswapV2Adapter.d.ts +1463 -0
- package/lib/types/UniswapV3Adapter.d.ts +455 -0
- package/lib/types/VestingDeployer.d.ts +247 -0
- package/lib/types/WETHGateway.d.ts +376 -0
- package/lib/types/WETHMock.d.ts +433 -0
- package/lib/types/WadRayMathTest.d.ts +316 -0
- package/lib/types/YearnAdapter.d.ts +609 -0
- package/lib/types/YearnMock.d.ts +795 -0
- package/lib/types/YearnPriceFeed.d.ts +399 -0
- package/lib/types/commons.d.ts +16 -0
- package/lib/types/commons.js +5 -0
- package/lib/types/factories/ACLTraitTest__factory.d.ts +52 -0
- package/lib/types/factories/ACLTraitTest__factory.js +138 -0
- package/lib/types/factories/ACLTrait__factory.d.ts +31 -0
- package/lib/types/factories/ACLTrait__factory.js +75 -0
- package/lib/types/factories/ACL__factory.d.ts +45 -0
- package/lib/types/factories/ACL__factory.js +317 -0
- package/lib/types/factories/AbstractAccountMiner__factory.d.ts +30 -0
- package/lib/types/factories/AbstractAccountMiner__factory.js +61 -0
- package/lib/types/factories/AccountFactory__factory.d.ts +72 -0
- package/lib/types/factories/AccountFactory__factory.js +508 -0
- package/lib/types/factories/AccountMinerAuction__factory.js +304 -0
- package/lib/types/factories/AccountMinerMock__factory.js +196 -0
- package/lib/types/factories/AccountMinerNonReceivableTest__factory.js +84 -0
- package/lib/types/factories/AccountMinerOwnFunds__factory.js +181 -0
- package/lib/types/factories/AccountMining__factory.d.ts +56 -0
- package/lib/types/factories/AccountMining__factory.js +192 -0
- package/lib/types/factories/AdaptersDeployer__factory.d.ts +85 -0
- package/lib/types/factories/AdaptersDeployer__factory.js +202 -0
- package/lib/types/factories/AddressProvider__factory.d.ts +52 -0
- package/lib/types/factories/AddressProvider__factory.js +582 -0
- package/lib/types/factories/AggregatorV3Interface__factory.d.ts +22 -0
- package/lib/types/factories/AggregatorV3Interface__factory.js +133 -0
- package/lib/types/factories/ChainlinkPriceFeedMock__factory.d.ts +42 -0
- package/lib/types/factories/ChainlinkPriceFeedMock__factory.js +193 -0
- package/lib/types/factories/ContractsRegister__factory.d.ts +56 -0
- package/lib/types/factories/ContractsRegister__factory.js +310 -0
- package/lib/types/factories/CoreDeployer__factory.js +331 -0
- package/lib/types/factories/CreditAccount__factory.d.ts +32 -0
- package/lib/types/factories/CreditAccount__factory.js +262 -0
- package/lib/types/factories/CreditFilterMock__factory.d.ts +56 -0
- package/lib/types/factories/CreditFilterMock__factory.js +1083 -0
- package/lib/types/factories/CreditFilter__factory.d.ts +56 -0
- package/lib/types/factories/CreditFilter__factory.js +1047 -0
- package/lib/types/factories/CreditManagerMockForFilter__factory.d.ts +38 -0
- package/lib/types/factories/CreditManagerMockForFilter__factory.js +324 -0
- package/lib/types/factories/CreditManagerMockForPoolTest__factory.d.ts +48 -0
- package/lib/types/factories/CreditManagerMockForPoolTest__factory.js +131 -0
- package/lib/types/factories/CreditManager__factory.d.ts +77 -0
- package/lib/types/factories/CreditManager__factory.js +1030 -0
- package/lib/types/factories/CurveMock__factory.d.ts +42 -0
- package/lib/types/factories/CurveMock__factory.js +210 -0
- package/lib/types/factories/CurveV1Adapter__factory.d.ts +42 -0
- package/lib/types/factories/CurveV1Adapter__factory.js +254 -0
- package/lib/types/factories/DataCompressor__factory.d.ts +71 -0
- package/lib/types/factories/DataCompressor__factory.js +944 -0
- package/lib/types/factories/Deployer__factory.js +248 -0
- package/lib/types/factories/DieselToken__factory.d.ts +56 -0
- package/lib/types/factories/DieselToken__factory.js +432 -0
- package/lib/types/factories/ERC165__factory.d.ts +22 -0
- package/lib/types/factories/ERC165__factory.js +41 -0
- package/lib/types/factories/ERC20BlockingMock__factory.d.ts +56 -0
- package/lib/types/factories/ERC20BlockingMock__factory.js +429 -0
- package/lib/types/factories/ERC20__factory.d.ts +56 -0
- package/lib/types/factories/ERC20__factory.js +339 -0
- package/lib/types/factories/ERC721__factory.d.ts +56 -0
- package/lib/types/factories/ERC721__factory.js +468 -0
- package/lib/types/factories/Errors__factory.d.ts +28 -0
- package/lib/types/factories/Errors__factory.js +1015 -0
- package/lib/types/factories/ExecutorMock__factory.d.ts +38 -0
- package/lib/types/factories/ExecutorMock__factory.js +103 -0
- package/lib/types/factories/FlashLoanAttacker__factory.d.ts +48 -0
- package/lib/types/factories/FlashLoanAttacker__factory.js +117 -0
- package/lib/types/factories/FuzzHarness__factory.d.ts +38 -0
- package/lib/types/factories/FuzzHarness__factory.js +92 -0
- package/lib/types/factories/GearBeta__factory.d.ts +52 -0
- package/lib/types/factories/GearBeta__factory.js +527 -0
- package/lib/types/factories/GearToken__factory.d.ts +56 -0
- package/lib/types/factories/GearToken__factory.js +708 -0
- package/lib/types/factories/GenesisDeployer__factory.d.ts +108 -0
- package/lib/types/factories/GenesisDeployer__factory.js +231 -0
- package/lib/types/factories/IAccountFactory__factory.d.ts +35 -0
- package/lib/types/factories/IAccountFactory__factory.js +226 -0
- package/lib/types/factories/IAccountMiner__factory.d.ts +28 -0
- package/lib/types/factories/IAccountMiner__factory.js +48 -0
- package/lib/types/factories/IAppAddressProvider__factory.d.ts +18 -0
- package/lib/types/factories/IAppAddressProvider__factory.js +100 -0
- package/lib/types/factories/IAppCreditManager__factory.d.ts +42 -0
- package/lib/types/factories/IAppCreditManager__factory.js +204 -0
- package/lib/types/factories/IAppERC20__factory.d.ts +22 -0
- package/lib/types/factories/IAppERC20__factory.js +194 -0
- package/lib/types/factories/IAppPoolService__factory.d.ts +22 -0
- package/lib/types/factories/IAppPoolService__factory.js +69 -0
- package/lib/types/factories/ICreditAccountData__factory.d.ts +35 -0
- package/lib/types/factories/ICreditAccountData__factory.js +216 -0
- package/lib/types/factories/ICreditAccount__factory.d.ts +22 -0
- package/lib/types/factories/ICreditAccount__factory.js +218 -0
- package/lib/types/factories/ICreditFilter__factory.d.ts +35 -0
- package/lib/types/factories/ICreditFilter__factory.js +700 -0
- package/lib/types/factories/ICreditManager__factory.d.ts +56 -0
- package/lib/types/factories/ICreditManager__factory.js +720 -0
- package/lib/types/factories/ICurvePool__factory.d.ts +22 -0
- package/lib/types/factories/ICurvePool__factory.js +168 -0
- package/lib/types/factories/IDataCompressor__factory.d.ts +51 -0
- package/lib/types/factories/IDataCompressor__factory.js +826 -0
- package/lib/types/factories/IERC165__factory.d.ts +22 -0
- package/lib/types/factories/IERC165__factory.js +41 -0
- package/lib/types/factories/IERC20__factory.d.ts +35 -0
- package/lib/types/factories/IERC20__factory.js +205 -0
- package/lib/types/factories/IERC721Enumerable__factory.d.ts +35 -0
- package/lib/types/factories/IERC721Enumerable__factory.js +363 -0
- package/lib/types/factories/IERC721Metadata__factory.d.ts +35 -0
- package/lib/types/factories/IERC721Metadata__factory.js +352 -0
- package/lib/types/factories/IERC721Receiver__factory.d.ts +22 -0
- package/lib/types/factories/IERC721Receiver__factory.js +56 -0
- package/lib/types/factories/IERC721__factory.d.ts +35 -0
- package/lib/types/factories/IERC721__factory.js +307 -0
- package/lib/types/factories/IGearToken__factory.d.ts +35 -0
- package/lib/types/factories/IGearToken__factory.js +342 -0
- package/lib/types/factories/IInterestRateModel__factory.d.ts +22 -0
- package/lib/types/factories/IInterestRateModel__factory.js +46 -0
- package/lib/types/factories/IMerkleDistributor__factory.d.ts +35 -0
- package/lib/types/factories/IMerkleDistributor__factory.js +109 -0
- package/lib/types/factories/IPoolService__factory.d.ts +35 -0
- package/lib/types/factories/IPoolService__factory.js +580 -0
- package/lib/types/factories/IPriceOracle__factory.d.ts +35 -0
- package/lib/types/factories/IPriceOracle__factory.js +112 -0
- package/lib/types/factories/IQuoter__factory.d.ts +22 -0
- package/lib/types/factories/IQuoter__factory.js +148 -0
- package/lib/types/factories/ISwapRouter__factory.d.ts +27 -0
- package/lib/types/factories/ISwapRouter__factory.js +236 -0
- package/lib/types/factories/IUniswapV2Migrator__factory.d.ts +18 -0
- package/lib/types/factories/IUniswapV2Migrator__factory.js +55 -0
- package/lib/types/factories/IUniswapV2Router01__factory.d.ts +22 -0
- package/lib/types/factories/IUniswapV2Router01__factory.js +771 -0
- package/lib/types/factories/IUniswapV2Router02__factory.d.ts +22 -0
- package/lib/types/factories/IUniswapV2Router02__factory.js +973 -0
- package/lib/types/factories/IUniswapV3SwapCallback__factory.d.ts +18 -0
- package/lib/types/factories/IUniswapV3SwapCallback__factory.js +45 -0
- package/lib/types/factories/IWETHGateway__factory.d.ts +18 -0
- package/lib/types/factories/IWETHGateway__factory.js +150 -0
- package/lib/types/factories/IWETH__factory.d.ts +22 -0
- package/lib/types/factories/IWETH__factory.js +66 -0
- package/lib/types/factories/IYVault__factory.d.ts +35 -0
- package/lib/types/factories/IYVault__factory.js +411 -0
- package/lib/types/factories/LeveragedActions__factory.d.ts +84 -0
- package/lib/types/factories/LeveragedActions__factory.js +569 -0
- package/lib/types/factories/LinearInterestRateModel__factory.d.ts +42 -0
- package/lib/types/factories/LinearInterestRateModel__factory.js +209 -0
- package/lib/types/factories/MockPoolService__factory.d.ts +56 -0
- package/lib/types/factories/MockPoolService__factory.js +889 -0
- package/lib/types/factories/Multicall2__factory.d.ts +52 -0
- package/lib/types/factories/Multicall2__factory.js +364 -0
- package/lib/types/factories/Ownable__factory.d.ts +42 -0
- package/lib/types/factories/Ownable__factory.js +74 -0
- package/lib/types/factories/PathFinder__factory.d.ts +61 -0
- package/lib/types/factories/PathFinder__factory.js +302 -0
- package/lib/types/factories/Pausable__factory.d.ts +31 -0
- package/lib/types/factories/Pausable__factory.js +61 -0
- package/lib/types/factories/PercentageMathTest__factory.d.ts +32 -0
- package/lib/types/factories/PercentageMathTest__factory.js +101 -0
- package/lib/types/factories/PoolDeployer__factory.d.ts +113 -0
- package/lib/types/factories/PoolDeployer__factory.js +257 -0
- package/lib/types/factories/PoolService__factory.d.ts +56 -0
- package/lib/types/factories/PoolService__factory.js +873 -0
- package/lib/types/factories/PriceOracle__factory.d.ts +56 -0
- package/lib/types/factories/PriceOracle__factory.js +290 -0
- package/lib/types/factories/Proxy__factory.d.ts +13 -0
- package/lib/types/factories/Proxy__factory.js +30 -0
- package/lib/types/factories/StepVesting__factory.d.ts +52 -0
- package/lib/types/factories/StepVesting__factory.js +296 -0
- package/lib/types/factories/TestPoolService__factory.d.ts +56 -0
- package/lib/types/factories/TestPoolService__factory.js +932 -0
- package/lib/types/factories/TokenDistributor__factory.d.ts +82 -0
- package/lib/types/factories/TokenDistributor__factory.js +481 -0
- package/lib/types/factories/TokenFeeMock__factory.d.ts +56 -0
- package/lib/types/factories/TokenFeeMock__factory.js +427 -0
- package/lib/types/factories/TokenMock__factory.d.ts +56 -0
- package/lib/types/factories/TokenMock__factory.js +409 -0
- package/lib/types/factories/TreasuryMock__factory.d.ts +35 -0
- package/lib/types/factories/TreasuryMock__factory.js +70 -0
- package/lib/types/factories/UniswapRouterMock__factory.d.ts +32 -0
- package/lib/types/factories/UniswapRouterMock__factory.js +1046 -0
- package/lib/types/factories/UniswapV2Adapter__factory.d.ts +42 -0
- package/lib/types/factories/UniswapV2Adapter__factory.js +1059 -0
- package/lib/types/factories/UniswapV3Adapter__factory.d.ts +47 -0
- package/lib/types/factories/UniswapV3Adapter__factory.js +322 -0
- package/lib/types/factories/VestingDeployer__factory.js +216 -0
- package/lib/types/factories/WETHGateway__factory.d.ts +70 -0
- package/lib/types/factories/WETHGateway__factory.js +241 -0
- package/lib/types/factories/WETHMock__factory.d.ts +52 -0
- package/lib/types/factories/WETHMock__factory.js +355 -0
- package/lib/types/factories/WadRayMathTest__factory.d.ts +32 -0
- package/lib/types/factories/WadRayMathTest__factory.js +239 -0
- package/lib/types/factories/YearnAdapter__factory.d.ts +56 -0
- package/lib/types/factories/YearnAdapter__factory.js +497 -0
- package/lib/types/factories/YearnMock__factory.d.ts +56 -0
- package/lib/types/factories/YearnMock__factory.js +598 -0
- package/lib/types/factories/YearnPriceFeed__factory.d.ts +56 -0
- package/lib/types/factories/YearnPriceFeed__factory.js +350 -0
- package/lib/types/hardhat.d.ts +343 -0
- package/lib/types/index.d.ts +152 -0
- package/lib/types/index.js +156 -0
- package/lib/utils/events.d.ts +2 -0
- package/lib/utils/events.js +13 -0
- package/lib/utils/formatter.d.ts +13 -0
- package/lib/utils/formatter.js +125 -0
- package/lib/utils/loading.d.ts +1 -0
- package/lib/utils/loading.js +17 -0
- package/lib/utils/math.d.ts +6 -0
- package/lib/utils/math.js +44 -0
- package/lib/utils/multicall.d.ts +15 -0
- package/lib/utils/multicall.js +84 -0
- package/lib/utils/repeater.d.ts +1 -0
- package/lib/utils/repeater.js +72 -0
- package/lib/utils/validate.d.ts +1 -0
- package/lib/utils/validate.js +13 -0
- package/package.json +27 -0
- package/src/abi/adapters/YearnV2.sol/YearnAdapter.dbg.json +4 -0
- package/src/abi/adapters/YearnV2.sol/YearnAdapter.json +455 -0
- package/src/abi/core/ACL.sol/ACL.dbg.json +4 -0
- package/src/abi/core/ACL.sol/ACL.json +262 -0
- package/src/abi/core/ACLTrait.sol/ACLTrait.dbg.json +4 -0
- package/src/abi/core/ACLTrait.sol/ACLTrait.json +64 -0
- package/src/abi/core/AccountMining.sol/AccountMining.dbg.json +4 -0
- package/src/abi/core/AccountMining.sol/AccountMining.json +150 -0
- package/src/abi/core/AddressProvider.sol/AddressProvider.dbg.json +4 -0
- package/src/abi/core/AddressProvider.sol/AddressProvider.json +496 -0
- package/src/abi/core/ContractsRegister.sol/ContractsRegister.dbg.json +4 -0
- package/src/abi/core/ContractsRegister.sol/ContractsRegister.json +255 -0
- package/src/abi/credit/LeverageActions.sol/LeveragedActions.dbg.json +4 -0
- package/src/abi/credit/LeverageActions.sol/LeveragedActions.json +514 -0
- package/src/abi/deployer/AdaptersDeployer.sol/AdaptersDeployer.dbg.json +4 -0
- package/src/abi/deployer/AdaptersDeployer.sol/AdaptersDeployer.json +160 -0
- package/src/abi/deployer/GenesisDeployer.sol/GenesisDeployer.dbg.json +4 -0
- package/src/abi/deployer/GenesisDeployer.sol/GenesisDeployer.json +189 -0
- package/src/abi/deployer/PoolDeployer.sol/PoolDeployer.dbg.json +4 -0
- package/src/abi/deployer/PoolDeployer.sol/PoolDeployer.json +215 -0
- package/src/abi/fuzzing/FuzzHarness.sol/FuzzHarness.dbg.json +4 -0
- package/src/abi/fuzzing/FuzzHarness.sol/FuzzHarness.json +50 -0
- package/src/abi/integrations/yearn/IYVault.sol/IYVault.dbg.json +4 -0
- package/src/abi/integrations/yearn/IYVault.sol/IYVault.json +400 -0
- package/src/abi/interfaces/IGearToken.sol/IGearToken.dbg.json +4 -0
- package/src/abi/interfaces/IGearToken.sol/IGearToken.json +331 -0
- package/src/abi/interfaces/IMerkleDistributor.sol/IMerkleDistributor.dbg.json +4 -0
- package/src/abi/interfaces/IMerkleDistributor.sol/IMerkleDistributor.json +98 -0
- package/src/abi/mocks/core/ACLTraitTest.sol/ACLTraitTest.dbg.json +4 -0
- package/src/abi/mocks/core/ACLTraitTest.sol/ACLTraitTest.json +96 -0
- package/src/abi/mocks/credit/ExecutorMock.sol/ExecutorMock.dbg.json +4 -0
- package/src/abi/mocks/credit/ExecutorMock.sol/ExecutorMock.json +61 -0
- package/src/abi/mocks/integrations/CurveMock.sol/CurveMock.dbg.json +4 -0
- package/src/abi/mocks/integrations/CurveMock.sol/CurveMock.json +168 -0
- package/src/abi/mocks/integrations/YearnMock.sol/YearnMock.dbg.json +4 -0
- package/src/abi/mocks/integrations/YearnMock.sol/YearnMock.json +556 -0
- package/src/abi/mocks/oracles/ChainlinkPriceFeedMock.sol/ChainlinkPriceFeedMock.dbg.json +4 -0
- package/src/abi/mocks/oracles/ChainlinkPriceFeedMock.sol/ChainlinkPriceFeedMock.json +151 -0
- package/src/abi/mocks/pool/CreditManagerMockForPoolTest.sol/CreditManagerMockForPoolTest.dbg.json +4 -0
- package/src/abi/mocks/pool/CreditManagerMockForPoolTest.sol/CreditManagerMockForPoolTest.json +89 -0
- package/src/abi/mocks/tokens/ERC20Blocking.sol/ERC20BlockingMock.dbg.json +4 -0
- package/src/abi/mocks/tokens/ERC20Blocking.sol/ERC20BlockingMock.json +387 -0
- package/src/abi/mocks/tokens/ERC20Fee.sol/TokenFeeMock.dbg.json +4 -0
- package/src/abi/mocks/tokens/ERC20Fee.sol/TokenFeeMock.json +385 -0
- package/src/abi/oracles/YearnPriceFeed.sol/YearnPriceFeed.dbg.json +4 -0
- package/src/abi/oracles/YearnPriceFeed.sol/YearnPriceFeed.json +321 -0
- package/src/abi/support/PathFinder.sol/PathFinder.dbg.json +4 -0
- package/src/abi/support/PathFinder.sol/PathFinder.json +189 -0
- package/src/abi/tokens/GearNFT.sol/GearBeta.dbg.json +4 -0
- package/src/abi/tokens/GearNFT.sol/GearBeta.json +485 -0
- package/src/abi/tokens/TokenDistributor.sol/TokenDistributor.dbg.json +4 -0
- package/src/abi/tokens/TokenDistributor.sol/TokenDistributor.json +439 -0
- package/src/abi/tokens/Vesting.sol/StepVesting.dbg.json +4 -0
- package/src/abi/tokens/Vesting.sol/StepVesting.json +254 -0
- package/src/config.ts +1 -0
- package/src/core/constants.ts +44 -0
- package/src/core/contracts.ts +151 -0
- package/src/core/contractsRegister.ts +51 -0
- package/src/core/creditAccount.ts +105 -0
- package/src/core/creditCard.ts +15 -0
- package/src/core/creditManager.ts +171 -0
- package/src/core/creditOperation.ts +9 -0
- package/src/core/creditSession.ts +67 -0
- package/src/core/errors.ts +45 -0
- package/src/core/eventOrTx.ts +94 -0
- package/src/core/events.ts +1167 -0
- package/src/core/history.ts +55 -0
- package/src/core/operations.ts +35 -0
- package/src/core/oracles.ts +7 -0
- package/src/core/pool.ts +60 -0
- package/src/core/swap.ts +4 -0
- package/src/core/token.ts +275 -0
- package/src/core/tokenData.ts +84 -0
- package/src/core/tokenDistributor.ts +14 -0
- package/src/core/trade.ts +83 -0
- package/src/core/transactions.ts +407 -0
- package/src/index.ts +42 -0
- package/src/payload/creditAccount.ts +29 -0
- package/src/payload/creditManager.ts +46 -0
- package/src/payload/creditSession.ts +24 -0
- package/src/payload/graphPayload.ts +10 -0
- package/src/payload/pool.ts +20 -0
- package/src/payload/token.ts +5 -0
- package/src/types/ACL.d.ts +491 -0
- package/src/types/ACLTrait.d.ts +148 -0
- package/src/types/ACLTraitTest.d.ts +209 -0
- package/src/types/AccountFactory.d.ts +716 -0
- package/src/types/AccountMining.d.ts +222 -0
- package/src/types/AddressProvider.d.ts +912 -0
- package/src/types/AggregatorV3Interface.d.ts +234 -0
- package/src/types/ChainlinkPriceFeedMock.d.ts +215 -0
- package/src/types/ContractsRegister.d.ts +398 -0
- package/src/types/CreditAccount.d.ts +443 -0
- package/src/types/CreditFilter.d.ts +1609 -0
- package/src/types/CreditFilterMock.d.ts +1687 -0
- package/src/types/CreditManager.d.ts +1285 -0
- package/src/types/CreditManagerMockForFilter.d.ts +605 -0
- package/src/types/CreditManagerMockForPoolTest.d.ts +204 -0
- package/src/types/CurveMock.d.ts +298 -0
- package/src/types/CurveV1Adapter.d.ts +349 -0
- package/src/types/DataCompressor.d.ts +1331 -0
- package/src/types/DieselToken.d.ts +567 -0
- package/src/types/ERC165.d.ts +116 -0
- package/src/types/ERC20.d.ts +411 -0
- package/src/types/ERC20BlockingMock.d.ts +568 -0
- package/src/types/ERC721.d.ts +625 -0
- package/src/types/Errors.d.ts +1854 -0
- package/src/types/ExecutorMock.d.ts +140 -0
- package/src/types/FlashLoanAttacker.d.ts +170 -0
- package/src/types/FuzzHarness.d.ts +124 -0
- package/src/types/GearBeta.d.ts +745 -0
- package/src/types/GearToken.d.ts +888 -0
- package/src/types/IAccountFactory.d.ts +317 -0
- package/src/types/IAccountMiner.d.ts +124 -0
- package/src/types/IAppAddressProvider.d.ts +198 -0
- package/src/types/IAppCreditManager.d.ts +408 -0
- package/src/types/IAppERC20.d.ts +309 -0
- package/src/types/IAppPoolService.d.ts +166 -0
- package/src/types/ICreditAccount.d.ts +430 -0
- package/src/types/ICreditFilter.d.ts +1162 -0
- package/src/types/ICreditManager.d.ts +971 -0
- package/src/types/ICurvePool.d.ts +298 -0
- package/src/types/IDataCompressor.d.ts +1231 -0
- package/src/types/IERC165.d.ts +116 -0
- package/src/types/IERC20.d.ts +294 -0
- package/src/types/IERC721.d.ts +472 -0
- package/src/types/IERC721Enumerable.d.ts +564 -0
- package/src/types/IERC721Metadata.d.ts +523 -0
- package/src/types/IERC721Receiver.d.ts +132 -0
- package/src/types/IGearToken.d.ts +527 -0
- package/src/types/IInterestRateModel.d.ts +121 -0
- package/src/types/IMerkleDistributor.d.ts +190 -0
- package/src/types/IPoolService.d.ts +772 -0
- package/src/types/IPriceOracle.d.ts +211 -0
- package/src/types/IQuoter.d.ts +269 -0
- package/src/types/ISwapRouter.d.ts +404 -0
- package/src/types/IUniswapV2Migrator.d.ts +134 -0
- package/src/types/IUniswapV2Router01.d.ts +1119 -0
- package/src/types/IUniswapV2Router02.d.ts +1432 -0
- package/src/types/IUniswapV3SwapCallback.d.ts +127 -0
- package/src/types/IWETH.d.ts +169 -0
- package/src/types/IWETHGateway.d.ts +335 -0
- package/src/types/IYVault.d.ts +558 -0
- package/src/types/LeveragedActions.d.ts +772 -0
- package/src/types/LinearInterestRateModel.d.ts +279 -0
- package/src/types/MockPoolService.d.ts +1271 -0
- package/src/types/Multicall2.d.ts +449 -0
- package/src/types/Ownable.d.ts +169 -0
- package/src/types/PathFinder.d.ts +379 -0
- package/src/types/Pausable.d.ts +105 -0
- package/src/types/PercentageMathTest.d.ts +154 -0
- package/src/types/PoolService.d.ts +1174 -0
- package/src/types/PriceOracle.d.ts +387 -0
- package/src/types/StepVesting.d.ts +411 -0
- package/src/types/TestPoolService.d.ts +1294 -0
- package/src/types/TokenDistributor.d.ts +640 -0
- package/src/types/TokenFeeMock.d.ts +544 -0
- package/src/types/TokenMock.d.ts +531 -0
- package/src/types/TreasuryMock.d.ts +86 -0
- package/src/types/UniswapRouterMock.d.ts +1520 -0
- package/src/types/UniswapV2Adapter.d.ts +1463 -0
- package/src/types/UniswapV3Adapter.d.ts +455 -0
- package/src/types/WETHGateway.d.ts +376 -0
- package/src/types/WETHMock.d.ts +433 -0
- package/src/types/WadRayMathTest.d.ts +316 -0
- package/src/types/YearnAdapter.d.ts +609 -0
- package/src/types/YearnMock.d.ts +795 -0
- package/src/types/YearnPriceFeed.d.ts +399 -0
- package/src/types/commons.d.ts +16 -0
- package/src/types/commons.js +5 -0
- package/src/types/commons.ts +37 -0
- package/src/types/factories/ACLTraitTest__factory.ts +137 -0
- package/src/types/factories/ACLTrait__factory.ts +76 -0
- package/src/types/factories/ACL__factory.ts +308 -0
- package/src/types/factories/AccountFactory__factory.ts +510 -0
- package/src/types/factories/AccountMining__factory.ts +214 -0
- package/src/types/factories/AddressProvider__factory.ts +579 -0
- package/src/types/factories/AggregatorV3Interface__factory.ts +141 -0
- package/src/types/factories/ChainlinkPriceFeedMock__factory.ts +209 -0
- package/src/types/factories/ContractsRegister__factory.ts +312 -0
- package/src/types/factories/CreditAccount__factory.ts +256 -0
- package/src/types/factories/CreditFilterMock__factory.ts +1092 -0
- package/src/types/factories/CreditFilter__factory.ts +1053 -0
- package/src/types/factories/CreditManagerMockForFilter__factory.ts +325 -0
- package/src/types/factories/CreditManagerMockForPoolTest__factory.ts +137 -0
- package/src/types/factories/CreditManager__factory.ts +1063 -0
- package/src/types/factories/CurveMock__factory.ts +206 -0
- package/src/types/factories/CurveV1Adapter__factory.ts +263 -0
- package/src/types/factories/DataCompressor__factory.ts +946 -0
- package/src/types/factories/DieselToken__factory.ts +449 -0
- package/src/types/factories/ERC165__factory.ts +39 -0
- package/src/types/factories/ERC20BlockingMock__factory.ts +434 -0
- package/src/types/factories/ERC20__factory.ts +334 -0
- package/src/types/factories/ERC721__factory.ts +463 -0
- package/src/types/factories/Errors__factory.ts +1006 -0
- package/src/types/factories/ExecutorMock__factory.ts +97 -0
- package/src/types/factories/FlashLoanAttacker__factory.ts +119 -0
- package/src/types/factories/FuzzHarness__factory.ts +94 -0
- package/src/types/factories/GearBeta__factory.ts +521 -0
- package/src/types/factories/GearToken__factory.ts +704 -0
- package/src/types/factories/IAccountFactory__factory.ts +230 -0
- package/src/types/factories/IAccountMiner__factory.ts +49 -0
- package/src/types/factories/IAppAddressProvider__factory.ts +104 -0
- package/src/types/factories/IAppCreditManager__factory.ts +208 -0
- package/src/types/factories/IAppERC20__factory.ts +195 -0
- package/src/types/factories/IAppPoolService__factory.ts +73 -0
- package/src/types/factories/ICreditAccount__factory.ts +222 -0
- package/src/types/factories/ICreditFilter__factory.ts +701 -0
- package/src/types/factories/ICreditManager__factory.ts +724 -0
- package/src/types/factories/ICurvePool__factory.ts +169 -0
- package/src/types/factories/IDataCompressor__factory.ts +830 -0
- package/src/types/factories/IERC165__factory.ts +42 -0
- package/src/types/factories/IERC20__factory.ts +203 -0
- package/src/types/factories/IERC721Enumerable__factory.ts +367 -0
- package/src/types/factories/IERC721Metadata__factory.ts +356 -0
- package/src/types/factories/IERC721Receiver__factory.ts +60 -0
- package/src/types/factories/IERC721__factory.ts +308 -0
- package/src/types/factories/IGearToken__factory.ts +343 -0
- package/src/types/factories/IInterestRateModel__factory.ts +50 -0
- package/src/types/factories/IMerkleDistributor__factory.ts +113 -0
- package/src/types/factories/IPoolService__factory.ts +581 -0
- package/src/types/factories/IPriceOracle__factory.ts +113 -0
- package/src/types/factories/IQuoter__factory.ts +149 -0
- package/src/types/factories/ISwapRouter__factory.ts +237 -0
- package/src/types/factories/IUniswapV2Migrator__factory.ts +59 -0
- package/src/types/factories/IUniswapV2Router01__factory.ts +775 -0
- package/src/types/factories/IUniswapV2Router02__factory.ts +977 -0
- package/src/types/factories/IUniswapV3SwapCallback__factory.ts +53 -0
- package/src/types/factories/IWETHGateway__factory.ts +151 -0
- package/src/types/factories/IWETH__factory.ts +64 -0
- package/src/types/factories/IYVault__factory.ts +412 -0
- package/src/types/factories/LeveragedActions__factory.ts +571 -0
- package/src/types/factories/LinearInterestRateModel__factory.ts +237 -0
- package/src/types/factories/MockPoolService__factory.ts +891 -0
- package/src/types/factories/Multicall2__factory.ts +358 -0
- package/src/types/factories/Ownable__factory.ts +75 -0
- package/src/types/factories/PathFinder__factory.ts +301 -0
- package/src/types/factories/Pausable__factory.ts +62 -0
- package/src/types/factories/PercentageMathTest__factory.ts +98 -0
- package/src/types/factories/PoolService__factory.ts +898 -0
- package/src/types/factories/PriceOracle__factory.ts +289 -0
- package/src/types/factories/StepVesting__factory.ts +290 -0
- package/src/types/factories/TestPoolService__factory.ts +960 -0
- package/src/types/factories/TokenDistributor__factory.ts +483 -0
- package/src/types/factories/TokenFeeMock__factory.ts +439 -0
- package/src/types/factories/TokenMock__factory.ts +407 -0
- package/src/types/factories/TreasuryMock__factory.ts +64 -0
- package/src/types/factories/UniswapRouterMock__factory.ts +1043 -0
- package/src/types/factories/UniswapV2Adapter__factory.ts +1064 -0
- package/src/types/factories/UniswapV3Adapter__factory.ts +327 -0
- package/src/types/factories/WETHGateway__factory.ts +240 -0
- package/src/types/factories/WETHMock__factory.ts +349 -0
- package/src/types/factories/WadRayMathTest__factory.ts +236 -0
- package/src/types/factories/YearnAdapter__factory.ts +499 -0
- package/src/types/factories/YearnMock__factory.ts +594 -0
- package/src/types/factories/YearnPriceFeed__factory.ts +378 -0
- package/src/types/hardhat.d.ts +343 -0
- package/src/types/index.d.ts +174 -0
- package/src/types/index.js +178 -0
- package/src/types/index.ts +156 -0
- package/src/utils/events.ts +10 -0
- package/src/utils/formatter.ts +138 -0
- package/src/utils/loading.ts +9 -0
- package/src/utils/math.ts +42 -0
- package/src/utils/multicall.ts +54 -0
- package/src/utils/repeater.ts +18 -0
- package/src/utils/validate.ts +8 -0
- package/tsconfig.json +62 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Autogenerated file. Do not edit manually. */
|
|
3
|
+
/* tslint:disable */
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
var __extends = (this && this.__extends) || (function () {
|
|
6
|
+
var extendStatics = function (d, b) {
|
|
7
|
+
extendStatics = Object.setPrototypeOf ||
|
|
8
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
9
|
+
function (d, b) { for (var p in b)
|
|
10
|
+
if (Object.prototype.hasOwnProperty.call(b, p))
|
|
11
|
+
d[p] = b[p]; };
|
|
12
|
+
return extendStatics(d, b);
|
|
13
|
+
};
|
|
14
|
+
return function (d, b) {
|
|
15
|
+
if (typeof b !== "function" && b !== null)
|
|
16
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
17
|
+
extendStatics(d, b);
|
|
18
|
+
function __() { this.constructor = d; }
|
|
19
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
20
|
+
};
|
|
21
|
+
})();
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.Deployer__factory = void 0;
|
|
24
|
+
var ethers_1 = require("ethers");
|
|
25
|
+
var _abi = [
|
|
26
|
+
{
|
|
27
|
+
inputs: [
|
|
28
|
+
{
|
|
29
|
+
components: [
|
|
30
|
+
{
|
|
31
|
+
internalType: "address",
|
|
32
|
+
name: "addressProvider",
|
|
33
|
+
type: "address",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
internalType: "address",
|
|
37
|
+
name: "underlyingToken",
|
|
38
|
+
type: "address",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
internalType: "uint256",
|
|
42
|
+
name: "U_optimal",
|
|
43
|
+
type: "uint256",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
internalType: "uint256",
|
|
47
|
+
name: "R_base",
|
|
48
|
+
type: "uint256",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
internalType: "uint256",
|
|
52
|
+
name: "R_slope1",
|
|
53
|
+
type: "uint256",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
internalType: "uint256",
|
|
57
|
+
name: "R_slope2",
|
|
58
|
+
type: "uint256",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
internalType: "uint256",
|
|
62
|
+
name: "expectedLiquidityLimit",
|
|
63
|
+
type: "uint256",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
internalType: "uint256",
|
|
67
|
+
name: "minAmount",
|
|
68
|
+
type: "uint256",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
internalType: "uint256",
|
|
72
|
+
name: "maxAmount",
|
|
73
|
+
type: "uint256",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
internalType: "uint256",
|
|
77
|
+
name: "maxLeverage",
|
|
78
|
+
type: "uint256",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
internalType: "address",
|
|
82
|
+
name: "defaultSwapContract",
|
|
83
|
+
type: "address",
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
components: [
|
|
87
|
+
{
|
|
88
|
+
internalType: "address",
|
|
89
|
+
name: "targetContract",
|
|
90
|
+
type: "address",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
internalType: "uint256",
|
|
94
|
+
name: "adapterType",
|
|
95
|
+
type: "uint256",
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
internalType: "struct Deployer.AdapterConfig[]",
|
|
99
|
+
name: "adapters",
|
|
100
|
+
type: "tuple[]",
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
internalType: "struct Deployer.DeployOpts",
|
|
104
|
+
name: "opts",
|
|
105
|
+
type: "tuple",
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
stateMutability: "nonpayable",
|
|
109
|
+
type: "constructor",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
inputs: [
|
|
113
|
+
{
|
|
114
|
+
internalType: "uint256",
|
|
115
|
+
name: "",
|
|
116
|
+
type: "uint256",
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
name: "adapters",
|
|
120
|
+
outputs: [
|
|
121
|
+
{
|
|
122
|
+
internalType: "address",
|
|
123
|
+
name: "adapter",
|
|
124
|
+
type: "address",
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
internalType: "address",
|
|
128
|
+
name: "targetContract",
|
|
129
|
+
type: "address",
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
stateMutability: "view",
|
|
133
|
+
type: "function",
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
inputs: [],
|
|
137
|
+
name: "addressProvider",
|
|
138
|
+
outputs: [
|
|
139
|
+
{
|
|
140
|
+
internalType: "contract AddressProvider",
|
|
141
|
+
name: "",
|
|
142
|
+
type: "address",
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
stateMutability: "view",
|
|
146
|
+
type: "function",
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
inputs: [],
|
|
150
|
+
name: "creditFilter",
|
|
151
|
+
outputs: [
|
|
152
|
+
{
|
|
153
|
+
internalType: "contract CreditFilter",
|
|
154
|
+
name: "",
|
|
155
|
+
type: "address",
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
stateMutability: "view",
|
|
159
|
+
type: "function",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
inputs: [],
|
|
163
|
+
name: "creditManager",
|
|
164
|
+
outputs: [
|
|
165
|
+
{
|
|
166
|
+
internalType: "contract CreditManager",
|
|
167
|
+
name: "",
|
|
168
|
+
type: "address",
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
stateMutability: "view",
|
|
172
|
+
type: "function",
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
inputs: [],
|
|
176
|
+
name: "pool",
|
|
177
|
+
outputs: [
|
|
178
|
+
{
|
|
179
|
+
internalType: "contract PoolService",
|
|
180
|
+
name: "",
|
|
181
|
+
type: "address",
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
stateMutability: "view",
|
|
185
|
+
type: "function",
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
inputs: [
|
|
189
|
+
{
|
|
190
|
+
components: [
|
|
191
|
+
{
|
|
192
|
+
components: [
|
|
193
|
+
{
|
|
194
|
+
internalType: "address",
|
|
195
|
+
name: "token",
|
|
196
|
+
type: "address",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
internalType: "uint256",
|
|
200
|
+
name: "liquidationThreshold",
|
|
201
|
+
type: "uint256",
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
internalType: "struct Deployer.AllowedToken[]",
|
|
205
|
+
name: "allowedTokens",
|
|
206
|
+
type: "tuple[]",
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
internalType: "struct Deployer.ConfigureOpts",
|
|
210
|
+
name: "opts",
|
|
211
|
+
type: "tuple",
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
name: "setUp",
|
|
215
|
+
outputs: [],
|
|
216
|
+
stateMutability: "nonpayable",
|
|
217
|
+
type: "function",
|
|
218
|
+
},
|
|
219
|
+
];
|
|
220
|
+
var _bytecode = "0x60806040523480156200001157600080fd5b506040516202040f3803806202040f833981810160405281019062000037919062000bb6565b8060000151600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160200151905060008173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620000ce57600080fd5b505afa158015620000e3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906200010e919062000b71565b8273ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200015557600080fd5b505afa1580156200016a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019062000195919062000b71565b8373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620001dc57600080fd5b505afa158015620001f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000217919062000bfb565b604051620002259062000803565b620002339392919062000da2565b604051809103906000f08015801562000250573d6000803e3d6000fd5b50905060008360400151846060015185608001518660a00151604051620002779062000811565b62000286949392919062000ded565b604051809103906000f080158015620002a3573d6000803e3d6000fd5b5090508360000151846020015183838760c00151604051620002c5906200081f565b620002d595949392919062000cc8565b604051809103906000f080158015620002f2573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836000015184602001516040516200034a906200082d565b6200035792919062000c9b565b604051809103906000f08015801562000374573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600001518460e0015185610100015186610120015160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689610140015160405162000423906200083b565b62000435979695949392919062000d25565b604051809103906000f08015801562000452573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080600090505b85610160015151811015620007f75760018661016001518281518110620004be57fe5b60200260200101516020015114156200055357600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610160015182815181106200050657fe5b602002602001015160000151604051620005209062000849565b6200052d92919062000c9b565b604051809103906000f0801580156200054a573d6000803e3d6000fd5b509150620006ca565b600286610160015182815181106200056757fe5b6020026020010151602001511415620005fc57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661016001518281518110620005af57fe5b602002602001015160000151604051620005c99062000857565b620005d692919062000c9b565b604051809103906000f080158015620005f3573d6000803e3d6000fd5b509150620006c9565b600386610160015182815181106200061057fe5b6020026020010151602001511415620006a557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610160015182815181106200065857fe5b602002602001015160000151604051620006729062000865565b6200067f92919062000c9b565b604051809103906000f0801580156200069c573d6000803e3d6000fd5b509150620006c8565b60048661016001518281518110620006b957fe5b60200260200101516020015150505b5b5b600060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200188610160015184815181106200070557fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff168152509050600481908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080806001019150506200049b565b50505050505062000fce565b611f9e8062001b9c83390190565b6111a38062003b3a83390190565b61512b8062004cdd83390190565b616ef48062009e0883390190565b616ea18062010cfc83390190565b61410d8062017b9d83390190565b613218806201bcaa83390190565b61154d806201eec283390190565b60006200088a620008848462000e6e565b62000e3a565b90508083825260208201905082856040860282011115620008aa57600080fd5b60005b85811015620008de5781620008c388826200099e565b845260208401935060408301925050600181019050620008ad565b5050509392505050565b6000620008ff620008f98462000e9d565b62000e3a565b9050828152602081018484840111156200091857600080fd5b6200092584828562000f37565b509392505050565b6000815190506200093e8162000f80565b92915050565b600082601f8301126200095657600080fd5b81516200096884826020860162000873565b91505092915050565b600082601f8301126200098357600080fd5b815162000995848260208601620008e8565b91505092915050565b600060408284031215620009b157600080fd5b620009bd604062000e3a565b90506000620009cf848285016200092d565b6000830152506020620009e58482850162000b43565b60208301525092915050565b6000610180828403121562000a0557600080fd5b62000a1261018062000e3a565b9050600062000a24848285016200092d565b600083015250602062000a3a848285016200092d565b602083015250604062000a508482850162000b43565b604083015250606062000a668482850162000b43565b606083015250608062000a7c8482850162000b43565b60808301525060a062000a928482850162000b43565b60a08301525060c062000aa88482850162000b43565b60c08301525060e062000abe8482850162000b43565b60e08301525061010062000ad58482850162000b43565b6101008301525061012062000aed8482850162000b43565b6101208301525061014062000b05848285016200092d565b6101408301525061016082015167ffffffffffffffff81111562000b2857600080fd5b62000b368482850162000944565b6101608301525092915050565b60008151905062000b548162000f9a565b92915050565b60008151905062000b6b8162000fb4565b92915050565b60006020828403121562000b8457600080fd5b600082015167ffffffffffffffff81111562000b9f57600080fd5b62000bad8482850162000971565b91505092915050565b60006020828403121562000bc957600080fd5b600082015167ffffffffffffffff81111562000be457600080fd5b62000bf284828501620009f1565b91505092915050565b60006020828403121562000c0e57600080fd5b600062000c1e8482850162000b5a565b91505092915050565b62000c328162000eec565b82525050565b600062000c458262000ed0565b62000c51818562000edb565b935062000c6381856020860162000f37565b62000c6e8162000f6f565b840191505092915050565b62000c848162000f20565b82525050565b62000c958162000f2a565b82525050565b600060408201905062000cb2600083018562000c27565b62000cc1602083018462000c27565b9392505050565b600060a08201905062000cdf600083018862000c27565b62000cee602083018762000c27565b62000cfd604083018662000c27565b62000d0c606083018562000c27565b62000d1b608083018462000c79565b9695505050505050565b600060e08201905062000d3c600083018a62000c27565b62000d4b602083018962000c79565b62000d5a604083018862000c79565b62000d69606083018762000c79565b62000d78608083018662000c27565b62000d8760a083018562000c27565b62000d9660c083018462000c27565b98975050505050505050565b6000606082019050818103600083015262000dbe818662000c38565b9050818103602083015262000dd4818562000c38565b905062000de5604083018462000c8a565b949350505050565b600060808201905062000e04600083018762000c79565b62000e13602083018662000c79565b62000e22604083018562000c79565b62000e31606083018462000c79565b95945050505050565b6000604051905081810181811067ffffffffffffffff8211171562000e645762000e6362000f6d565b5b8060405250919050565b600067ffffffffffffffff82111562000e8c5762000e8b62000f6d565b5b602082029050602081019050919050565b600067ffffffffffffffff82111562000ebb5762000eba62000f6d565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600062000ef98262000f00565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101562000f5757808201518184015260208101905062000f3a565b8381111562000f67576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b62000f8b8162000eec565b811462000f9757600080fd5b50565b62000fa58162000f20565b811462000fb157600080fd5b50565b62000fbf8162000f2a565b811462000fcb57600080fd5b50565b610bbe8062000fde6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806316f0115b146100675780632954018c146100855780634214b29e146100a35780634ef501ac146100bf578063c12c21c0146100f0578063f93f515b1461010e575b600080fd5b61006f61012c565b60405161007c91906109de565b60405180910390f35b61008d610150565b60405161009a919061098d565b60405180910390f35b6100bd60048036038101906100b89190610832565b610176565b005b6100d960048036038101906100d49190610873565b6105d8565b6040516100e792919061093b565b60405180910390f35b6100f861064c565b60405161010591906109c3565b60405180910390f35b610116610672565b60405161012391906109a8565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b1580156101e057600080fd5b505afa1580156101f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102189190610809565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c513c9bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561028457600080fd5b505afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc9190610809565b90508073ffffffffffffffffffffffffffffffffffffffff1663d914cd4b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016103179190610905565b600060405180830381600087803b15801561033157600080fd5b505af1158015610345573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663e26b2f63600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016103a49190610905565b600060405180830381600087803b1580156103be57600080fd5b505af11580156103d2573d6000803e3d6000fd5b5050505060005b8360000151518110156104b857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a147c6c68560000151838151811061043457fe5b6020026020010151600001518660000151848151811061045057fe5b6020026020010151602001516040518363ffffffff1660e01b8152600401610479929190610964565b600060405180830381600087803b15801561049357600080fd5b505af11580156104a7573d6000803e3d6000fd5b5050505080806001019150506103d9565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf33d955600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016105369190610905565b600060405180830381600087803b15801561055057600080fd5b505af1158015610564573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b81526004016105a19190610920565b600060405180830381600087803b1580156105bb57600080fd5b505af11580156105cf573d6000803e3d6000fd5b50505050505050565b600481815481106105e857600080fd5b90600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106ab6106a684610a2a565b6109f9565b905080838252602082019050828560408602820111156106ca57600080fd5b60005b858110156106fa57816106e08882610758565b8452602084019350604083019250506001810190506106cd565b5050509392505050565b60008135905061071381610b5a565b92915050565b60008151905061072881610b5a565b92915050565b600082601f83011261073f57600080fd5b813561074f848260208601610698565b91505092915050565b60006040828403121561076a57600080fd5b61077460406109f9565b9050600061078484828501610704565b6000830152506020610798848285016107f4565b60208301525092915050565b6000602082840312156107b657600080fd5b6107c060206109f9565b9050600082013567ffffffffffffffff8111156107dc57600080fd5b6107e88482850161072e565b60008301525092915050565b60008135905061080381610b71565b92915050565b60006020828403121561081b57600080fd5b600061082984828501610719565b91505092915050565b60006020828403121561084457600080fd5b600082013567ffffffffffffffff81111561085e57600080fd5b61086a848285016107a4565b91505092915050565b60006020828403121561088557600080fd5b6000610893848285016107f4565b91505092915050565b6108a581610a92565b82525050565b6108b481610a56565b82525050565b6108c381610aa4565b82525050565b6108d281610ac8565b82525050565b6108e181610aec565b82525050565b6108f081610b10565b82525050565b6108ff81610a88565b82525050565b600060208201905061091a60008301846108ab565b92915050565b6000602082019050610935600083018461089c565b92915050565b600060408201905061095060008301856108ab565b61095d60208301846108ab565b9392505050565b600060408201905061097960008301856108ab565b61098660208301846108f6565b9392505050565b60006020820190506109a260008301846108ba565b92915050565b60006020820190506109bd60008301846108c9565b92915050565b60006020820190506109d860008301846108d8565b92915050565b60006020820190506109f360008301846108e7565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610a2057610a1f610b58565b5b8060405250919050565b600067ffffffffffffffff821115610a4557610a44610b58565b5b602082029050602081019050919050565b6000610a6182610a68565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610a9d82610b34565b9050919050565b6000610aaf82610ab6565b9050919050565b6000610ac182610a68565b9050919050565b6000610ad382610ada565b9050919050565b6000610ae582610a68565b9050919050565b6000610af782610afe565b9050919050565b6000610b0982610a68565b9050919050565b6000610b1b82610b22565b9050919050565b6000610b2d82610a68565b9050919050565b6000610b3f82610b46565b9050919050565b6000610b5182610a68565b9050919050565bfe5b610b6381610a56565b8114610b6e57600080fd5b50565b610b7a81610a88565b8114610b8557600080fd5b5056fea26469706673582212208c8eac3f421d6e6aa84c49038b79e71b3b97213cf9fbc6db2b9eb4ce1080d52464736f6c6343000706003360806040523480156200001157600080fd5b5060405162001f9e38038062001f9e833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919050505082828160039080519060200190620001dc92919062000305565b508060049080519060200190620001f592919062000305565b506012600560006101000a81548160ff021916908360ff1602179055505050600062000226620002df60201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002d681620002e760201b60201c565b505050620003bb565b600033905090565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200033d576000855562000389565b82601f106200035857805160ff191683800117855562000389565b8280016001018555821562000389579182015b82811115620003885782518255916020019190600101906200036b565b5b5090506200039891906200039c565b5090565b5b80821115620003b75760008160009055506001016200039d565b5090565b611bd380620003cb6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d7146104c8578063a9059cbb1461052c578063dd62ed3e14610590578063f2fde38b1461060857610100565b8063715018a6146103b95780638da5cb5b146103c357806395d89b41146103f75780639dc29fac1461047a57610100565b8063313ce567116100d3578063313ce5671461028e57806339509351146102af57806340c10f191461031357806370a082311461036157610100565b806306fdde0314610105578063095ea7b31461018857806318160ddd146101ec57806323b872dd1461020a575b600080fd5b61010d61064c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014d578082015181840152602081019050610132565b50505050905090810190601f16801561017a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d46004803603604081101561019e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ee565b60405180821515815260200191505060405180910390f35b6101f461070c565b6040518082815260200191505060405180910390f35b6102766004803603606081101561022057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610716565b60405180821515815260200191505060405180910390f35b6102966107ef565b604051808260ff16815260200191505060405180910390f35b6102fb600480360360408110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610806565b60405180821515815260200191505060405180910390f35b61035f6004803603604081101561032957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108b9565b005b6103a36004803603602081101561037757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610976565b6040518082815260200191505060405180910390f35b6103c16109be565b005b6103cb610b2e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ff610b58565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561043f578082015181840152602081019050610424565b50505050905090810190601f16801561046c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104c66004803603604081101561049057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfa565b005b610514600480360360408110156104de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cb7565b60405180821515815260200191505060405180910390f35b6105786004803603604081101561054257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d84565b60405180821515815260200191505060405180910390f35b6105f2600480360360408110156105a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610da2565b6040518082815260200191505060405180910390f35b61064a6004803603602081101561061e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e29565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106e45780601f106106b9576101008083540402835291602001916106e4565b820191906000526020600020905b8154815290600101906020018083116106c757829003601f168201915b5050505050905090565b60006107026106fb61101e565b8484611026565b6001905092915050565b6000600254905090565b600061072384848461121d565b6107e48461072f61101e565b6107df85604051806060016040528060288152602001611ae760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079561101e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114de9092919063ffffffff16565b611026565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006108af61081361101e565b846108aa856001600061082461101e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159890919063ffffffff16565b611026565b6001905092915050565b6108c161101e565b73ffffffffffffffffffffffffffffffffffffffff166108df610b2e565b73ffffffffffffffffffffffffffffffffffffffff1614610968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6109728282611620565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109c661101e565b73ffffffffffffffffffffffffffffffffffffffff166109e4610b2e565b73ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bf05780601f10610bc557610100808354040283529160200191610bf0565b820191906000526020600020905b815481529060010190602001808311610bd357829003601f168201915b5050505050905090565b610c0261101e565b73ffffffffffffffffffffffffffffffffffffffff16610c20610b2e565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610cb382826117e7565b5050565b6000610d7a610cc461101e565b84610d7585604051806060016040528060258152602001611b796025913960016000610cee61101e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114de9092919063ffffffff16565b611026565b6001905092915050565b6000610d98610d9161101e565b848461121d565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e3161101e565b73ffffffffffffffffffffffffffffffffffffffff16610e4f610b2e565b73ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611a796026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611b556024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611a9f6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611b306025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611a346023913960400191505060405180910390fd5b6113348383836119ab565b61139f81604051806060016040528060268152602001611ac1602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114de9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611432816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061158b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611550578082015181840152602081019050611535565b50505050905090810190601f16801561157d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600080828401905083811015611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6116cf600083836119ab565b6116e48160025461159890919063ffffffff16565b60028190555061173b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461159890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561186d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b0f6021913960400191505060405180910390fd5b611879826000836119ab565b6118e481604051806060016040528060228152602001611a57602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114de9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061193b816002546119b090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b600082821115611a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b81830390509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122068f8ef391ccdfa2d1d23f1dc400c4a476afaba1d5d40bc74f69b913c6e97cf1064736f6c634300070600336101206040523480156200001257600080fd5b50604051620011a3380380620011a3833981810160405260808110156200003857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050506127108411156040518060400160405280600281526020017f4950000000000000000000000000000000000000000000000000000000000000815250906200014d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000111578082015181840152602081019050620000f4565b50505050905090810190601f1680156200013f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127108311156040518060400160405280600281526020017f49500000000000000000000000000000000000000000000000000000000000008152509062000234576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001f8578082015181840152602081019050620001db565b50505050905090810190601f168015620002265780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127108211156040518060400160405280600281526020017f4950000000000000000000000000000000000000000000000000000000000000815250906200031b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620002df578082015181840152602081019050620002c2565b50505050905090810190601f1680156200030d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060006200034085670de0b6b3a76400006200040660201b620005481790919060201c565b905080608081815250506200036c81670de0b6b3a76400006200056c60201b620006a31790919060201c565b60a0818152505062000399846b033b2e3c9fd0803ce80000006200040660201b620005481790919060201c565b60c08181525050620003c6836b033b2e3c9fd0803ce80000006200040660201b620005481790919060201c565b60e08181525050620003f3826b033b2e3c9fd0803ce80000006200040660201b620005481790919060201c565b61010081815250505050505050620005f0565b600080831480620004175750600082145b1562000427576000905062000566565b816002612710816200043557fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03816200046057fe5b048311156040518060400160405280600281526020017f4d310000000000000000000000000000000000000000000000000000000000008152509062000544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000508578082015181840152602081019050620004eb565b50505050905090810190601f168015620005365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127106002612710816200055557fe5b0483850201816200056257fe5b0490505b92915050565b600082821115620005e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b60805160a05160c05160e05161010051610b2d620006766000398061033c52806104d9528061052652508061026b528061037c528061040852806104b65250806101ad52806102a8528061039d528061042c52806104935250806102e552806105025250806102185280610246528061030c52806103e452806104625250610b2d6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639cd3fdb51161005b5780639cd3fdb51461010a578063c8284e6d14610128578063f81d43811461015b578063fc4b2b78146101795761007d565b806342568d441461008257806350ced104146100ce5780639aec06ea146100ec575b600080fd5b6100b86004803603604081101561009857600080fd5b810190808035906020019092919080359060200190929190505050610197565b6040518082815260200191505060405180910390f35b6100d66103e2565b6040518082815260200191505060405180910390f35b6100f4610406565b6040518082815260200191505060405180910390f35b61011261042a565b6040518082815260200191505060405180910390f35b61013061044e565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610163610500565b6040518082815260200191505060405180910390f35b610181610524565b6040518082815260200191505060405180910390f35b6000808314806101a657508183105b156101d3577f000000000000000000000000000000000000000000000000000000000000000090506103dc565b600061021484610206670de0b6b3a76400006101f887896106a390919063ffffffff16565b61072690919063ffffffff16565b6107ac90919063ffffffff16565b90507f00000000000000000000000000000000000000000000000000000000000000008110156102dd576102d56102a67f0000000000000000000000000000000000000000000000000000000000000000610298847f000000000000000000000000000000000000000000000000000000000000000061072690919063ffffffff16565b6107ac90919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000061083590919063ffffffff16565b9150506103dc565b6103d86103777f000000000000000000000000000000000000000000000000000000000000000061036961033a7f0000000000000000000000000000000000000000000000000000000000000000866106a390919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000061072690919063ffffffff16565b6107ac90919063ffffffff16565b6103ca7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061083590919063ffffffff16565b61083590919063ffffffff16565b9150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008061048f670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006108bd90919063ffffffff16565b93507f000000000000000000000000000000000000000000000000000000000000000092507f000000000000000000000000000000000000000000000000000000000000000091507f0000000000000000000000000000000000000000000000000000000000000000905090919293565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000808314806105585750600082145b15610566576000905061069d565b8160026127108161057357fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038161059d57fe5b048311156040518060400160405280600281526020017f4d310000000000000000000000000000000000000000000000000000000000008152509061067d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610642578082015181840152602081019050610627565b50505050905090810190601f16801561066f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061271060026127108161068d57fe5b04838502018161069957fe5b0490505b92915050565b60008282111561071b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b60008083141561073957600090506107a6565b600082840290508284828161074a57fe5b04146107a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610ad76021913960400191505060405180910390fd5b809150505b92915050565b6000808211610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161082c57fe5b04905092915050565b6000808284019050838110156108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808214156040518060400160405280600281526020017f4d330000000000000000000000000000000000000000000000000000000000008152509061099f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610964578082015181840152602081019050610949565b50505050905090810190601f1680156109915780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600283816109ac57fe5b049050612710817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03816109dc57fe5b048411156040518060400160405280600281526020017f4d3100000000000000000000000000000000000000000000000000000000000081525090610abc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a81578082015181840152602081019050610a66565b50505050905090810190601f168015610aae5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50828161271086020181610acc57fe5b049150509291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f84e34927a0d92a9263dbd4af6669b7714cd15e4de430c13c9d33461f1a8910c64736f6c6343000706003360806040523480156200001157600080fd5b506040516200512b3803806200512b833981810160405260a08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508460008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906200019c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200016057808201518184015260208101905062000143565b50505050905090810190601f1680156200018e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001e457600080fd5b505afa158015620001f9573d6000803e3d6000fd5b505050506040513d60208110156200021057600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015620002d45750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156200030e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015620003485750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000428576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620003ec578082015181840152602081019050620003cf565b50505050905090810190601f1680156200041a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166326c74fc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156200055557600080fd5b505afa1580156200056a573d6000803e3d6000fd5b505050506040513d60208110156200058157600080fd5b8101908080519060200190929190505050600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce8000000600d81905550620005f6826200060860201b60201c565b80600381905550505050505062000ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000719576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620006dd578082015181840152602081019050620006c0565b50505050905090810190601f1680156200070b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200076d6000620007b360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167f0ec6cb7631d36954a05ffd646135bfd9995c71e7fa36d26abb1ad9f24a040ea160405160405180910390a250565b620007dc81620007c8620008d260201b60201c565b6200099360201b620033301790919060201c565b600281905550620007f262000a1760201b60201c565b600d81905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342568d446002546200084962000a5560201b60201c565b6040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156200088557600080fd5b505afa1580156200089a573d6000803e3d6000fd5b505050506040513d6020811015620008b157600080fd5b8101908080519060200190929190505050600e8190555042600f8190555050565b600080620008f1600f54426200099360201b620033301790919060201c565b905060006200096e6301e133806200095a6b033b2e3c9fd0803ce8000000620009468662000932600e5460045462000b2360201b620033b31790919060201c565b62000b2360201b620033b31790919060201c565b62000bae60201b620034391790919060201c565b62000bae60201b620034391790919060201c565b90506200098c8160025462000c3960201b620034c21790919060201c565b9250505090565b60008282111562000a0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b60008062000a36600f54426200099360201b620033301790919060201c565b905062000a4f600d54600e548362000cc260201b60201c565b91505090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801562000ae157600080fd5b505afa15801562000af6573d6000803e3d6000fd5b505050506040513d602081101562000b0d57600080fd5b8101908080519060200190929190505050905090565b60008083141562000b38576000905062000ba8565b600082840290508284828162000b4a57fe5b041462000ba3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806200510a6021913960400191505060405180910390fd5b809150505b92915050565b600080821162000c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838162000c3057fe5b04905092915050565b60008082840190508381101562000cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008062000d2162000d006301e1338062000cec868862000b2360201b620033b31790919060201c565b62000bae60201b620034391790919060201c565b6b033b2e3c9fd0803ce800000062000c3960201b620034c21790919060201c565b905062000d3d818662000d4760201b6200354a1790919060201c565b9150509392505050565b60008083148062000d585750600082145b1562000d68576000905062000ec5565b8160026b033b2e3c9fd0803ce80000008162000d8057fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038162000dab57fe5b048311156040518060400160405280600281526020017f4d310000000000000000000000000000000000000000000000000000000000008152509062000e8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000e5357808201518184015260208101905062000e36565b50505050905090810190601f16801562000e815780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506b033b2e3c9fd0803ce800000060026b033b2e3c9fd0803ce80000008162000eb457fe5b04838502018162000ec157fe5b0490505b92915050565b61422f8062000edb6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063609ae31711610125578063c00495a1116100ad578063dbcb313b1161007c578063dbcb313b146108c3578063e941fa78146108e1578063ef8d9603146108ff578063f3fdb15a1461091d578063fe14112d146109515761021c565b8063c00495a1146107b3578063c5f956af14610809578063ca9505e41461083d578063cf33d9551461087f5761021c565b80639aa5d462116100f45780639aa5d46214610693578063a4e8273e146106eb578063b6ac642a14610709578063bb04b19314610737578063bf28068b146107655761021c565b8063609ae3171461062f578063743753591461064d578063788c6bfe1461066b5780638456cb59146106895761021c565b806336dda7d5116101a85780634c19386c116101775780634c19386c146105295780634d778ad1146105475780635427c938146105895780635664cacf146105cb5780635c975abb1461060f5761021c565b806336dda7d5146104735780633e163df0146104a75780633f4ba83a1461050157806345d31f9d1461050b5761021c565b80631e16e4fc116101ef5780631e16e4fc146103035780632495a5991461035b5780632954018c1461038f5780632e97ca21146103c357806331d8bc271461041d5761021c565b8063030dbb041461022157806305fe138b1461023f578063078c4781146102a15780630fce70fb146102e5575b600080fd5b61022961096f565b6040518082815260200191505060405180910390f35b61028b6004803603604081101561025557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610975565b6040518082815260200191505060405180910390f35b6102e3600480360360208110156102b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dcc565b005b6102ed61100b565b6040518082815260200191505060405180910390f35b61032f6004803603602081101561031957600080fd5b810190808035906020019092919050505061103a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610363611079565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039761109f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610405600480360360208110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c5565b60405180821515815260200191505060405180910390f35b61045d6004803603606081101561043357600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506110e5565b6040518082815260200191505060405180910390f35b61047b61114e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e9600480360360208110156104bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611174565b60405180821515815260200191505060405180910390f35b610509611194565b005b61051361133f565b6040518082815260200191505060405180910390f35b610531611345565b6040518082815260200191505060405180910390f35b6105736004803603602081101561055d57600080fd5b810190808035906020019092919050505061134b565b6040518082815260200191505060405180910390f35b6105b56004803603602081101561059f57600080fd5b810190808035906020019092919050505061138c565b6040518082815260200191505060405180910390f35b61060d600480360360208110156105e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113cd565b005b61061761157a565b60405180821515815260200191505060405180910390f35b610637611590565b6040518082815260200191505060405180910390f35b610655611596565b6040518082815260200191505060405180910390f35b610673611661565b6040518082815260200191505060405180910390f35b610691611766565b005b6106e9600480360360608110156106a957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611911565b005b6106f3611f58565b6040518082815260200191505060405180910390f35b6107356004803603602081101561071f57600080fd5b8101908080359060200190929190505050611f65565b005b6107636004803603602081101561074d57600080fd5b810190808035906020019092919050505061222b565b005b6107b16004803603604081101561077b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240d565b005b6107f3600480360360608110156107c957600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061268d565b6040518082815260200191505060405180910390f35b610811612725565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61087d6004803603606081101561085357600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061274b565b005b6108c16004803603602081101561089557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cb0565b005b6108cb613261565b6040518082815260200191505060405180910390f35b6108e9613267565b6040518082815260200191505060405180910390f35b61090761326d565b6040518082815260200191505060405180910390f35b610925613273565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610959613299565b6040518082815260200191505060405180910390f35b60025481565b600061097f61157a565b156109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090610b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b45578082015181840152602081019050610b2a565b50505050905090810190601f168015610b725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000610b8c8461138c565b90506000610ba5601054836136c390919063ffffffff16565b90506000610bbc828461333090919063ffffffff16565b9050610c0b8582600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661381e9092919063ffffffff16565b6000821115610c8457610c83600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661381e9092919063ffffffff16565b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610d1757600080fd5b505af1158015610d2b573d6000803e3d6000fd5b50505050610d448360025461333090919063ffffffff16565b600281905550610d5460006138c0565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd8ae9b9ba89e637bcb66a69ac91e8f688018e81d6f92c57e02226425c8efbdf6886040518082815260200191505060405180910390a38093505050506001808190555092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e5557600080fd5b505afa158015610e69573d6000803e3d6000fd5b505050506040513d6020811015610e7f57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610f6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f31578082015181840152602081019050610f16565b50505050905090810190601f168015610f5e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f9181736fce85d2d4cca2e4406f10679302ae5c387180fdb62963af3cd9a24fd660405160405180910390a250565b600080611023600f544261333090919063ffffffff16565b9050611034600d54600e54836110e5565b91505090565b600b818154811061104a57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b60008061112f6111146301e1338061110686886133b390919063ffffffff16565b61343990919063ffffffff16565b6b033b2e3c9fd0803ce80000006134c290919063ffffffff16565b9050611144818661354a90919063ffffffff16565b9150509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561121d57600080fd5b505afa158015611231573d6000803e3d6000fd5b505050506040513d602081101561124757600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090611334576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112f95780820151818401526020810190506112de565b50505050905090810190601f1680156113265780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061133d6139bd565b565b600e5481565b60045481565b6000611385611358611661565b6113776b033b2e3c9fd0803ce8000000856133b390919063ffffffff16565b61343990919063ffffffff16565b9050919050565b60006113c66b033b2e3c9fd0803ce80000006113b86113a9611661565b856133b390919063ffffffff16565b61343990919063ffffffff16565b9050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561145657600080fd5b505afa15801561146a573d6000803e3d6000fd5b505050506040513d602081101561148057600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c32000000000000000000000000000000000000000000000000000000008152509061156d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611532578082015181840152602081019050611517565b50505050905090810190601f16801561155f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061157781613aa7565b50565b60008060009054906101000a900460ff16905090565b600f5481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d602081101561164b57600080fd5b8101908080519060200190929190505050905090565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cc57600080fd5b505afa1580156116e0573d6000803e3d6000fd5b505050506040513d60208110156116f657600080fd5b810190808051906020019092919050505090506000811415611727576b033b2e3c9fd0803ce8000000915050611763565b61175f816117516b033b2e3c9fd0803ce8000000611743613299565b6133b390919063ffffffff16565b61343990919063ffffffff16565b9150505b90565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117ef57600080fd5b505afa158015611803573d6000803e3d6000fd5b505050506040513d602081101561181957600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090611906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118cb5780820151818401526020810190506118b0565b50505050905090810190601f1680156118f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061190f613c46565b565b61191961157a565b1561198c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415611a05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090611b1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611adf578082015181840152602081019050611ac4565b50505050905090810190601f168015611b0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600354611b3884611b2a613299565b6134c290919063ffffffff16565b11156040518060400160405280600381526020017f505332000000000000000000000000000000000000000000000000000000000081525090611c16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bdb578082015181840152602081019050611bc0565b50505050905090810190601f168015611c085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ca257600080fd5b505afa158015611cb6573d6000803e3d6000fd5b505050506040513d6020811015611ccc57600080fd5b81019080805190602001909291905050509050611d2e333086600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613d31909392919063ffffffff16565b611e0481600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dbb57600080fd5b505afa158015611dcf573d6000803e3d6000fd5b505050506040513d6020811015611de557600080fd5b810190808051906020019092919050505061333090919063ffffffff16565b9350600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984611e4e8761134b565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b50505050611ece846002546134c290919063ffffffff16565b600281905550611ede60006138c0565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd2491a9b4fe81a7cd4511e8b7b7743951b061dad5bed7da8a7795b080ee08c7e8685604051808381526020018281526020019250505060405180910390a35060018081905550505050565b6000600b80549050905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fee57600080fd5b505afa158015612002573d6000803e3d6000fd5b505050506040513d602081101561201857600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120ca5780820151818401526020810190506120af565b50505050905090810190601f1680156120f75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50606460ff1681106040518060400160405280600381526020017f5350330000000000000000000000000000000000000000000000000000000000815250906121e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121ae578082015181840152602081019050612193565b50505050905090810190601f1680156121db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50806010819055507fd5fe46099fa396290a7f57e36c3c3c8774e2562c18ed5d1dcc0fa75071e03f1d816040518082815260200191505060405180910390a150565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122b457600080fd5b505afa1580156122c8573d6000803e3d6000fd5b505050506040513d60208110156122de57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3200000000000000000000000000000000000000000000000000000000815250906123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612390578082015181840152602081019050612375565b50505050905090810190601f1680156123bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50806003819055507fd7a183c9fe85b604c25d54bd676e0866f6c13bcca9fb9b0850213de118fdc99c816040518082815260200191505060405180910390a150565b61241561157a565b15612488576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f5053300000000000000000000000000000000000000000000000000000000000815250906125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561257657808201518184015260208101905061255b565b50505050905090810190601f1680156125a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506125ff8183600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661381e9092919063ffffffff16565b61260960006138c0565b61261e826004546134c290919063ffffffff16565b6004819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f312a5e5e1079f5dda4e95dbbd0b908b291fd5b992ef22073643ab691572c5b52846040518082815260200191505060405180910390a35050565b600061271c6126d06126a884866133b390919063ffffffff16565b6126c2876126b461100b565b6133b390919063ffffffff16565b6134c290919063ffffffff16565b61270e6126e686886134c290919063ffffffff16565b612700866126f261100b565b6133b390919063ffffffff16565b6133b390919063ffffffff16565b61343990919063ffffffff16565b90509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61275361157a565b156127c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f5053300000000000000000000000000000000000000000000000000000000000815250906128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128b4578082015181840152602081019050612899565b50505050905090810190601f1680156128e15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008211156129ee57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166129638561134b565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129b657600080fd5b505af11580156129ca573d6000803e3d6000fd5b505050506129e3826002546134c290919063ffffffff16565b600281905550612c29565b60006129f98261134b565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612aa857600080fd5b505afa158015612abc573d6000803e3d6000fd5b505050506040513d6020811015612ad257600080fd5b8101908080519060200190929190505050905081811015612b59578091503373ffffffffffffffffffffffffffffffffffffffff167fef3653ded679720ab04913b6f3820be7cedc8286d42ff5dd8dff17e91bd2964c612b43612b348461138c565b8661333090919063ffffffff16565b6040518082815260200191505060405180910390a25b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612c0e57600080fd5b505af1158015612c22573d6000803e3d6000fd5b5050505050505b612c32816138c0565b612c478360045461333090919063ffffffff16565b6004819055503373ffffffffffffffffffffffffffffffffffffffff167f2fe77b1c99aca6b022b8efc6e3e8dd1b48b30748709339b65c50ef3263443e0984848460405180848152602001838152602001828152602001935050505060405180910390a2505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d3957600080fd5b505afa158015612d4d573d6000803e3d6000fd5b505050506040513d6020811015612d6357600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090612e50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e15578082015181840152602081019050612dfa565b50505050905090810190601f168015612e425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9757600080fd5b505afa158015612eab573d6000803e3d6000fd5b505050506040513d6020811015612ec157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f505331000000000000000000000000000000000000000000000000000000000081525090612fdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612fa1578082015181840152602081019050612f86565b50505050905090810190601f168015612fce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156040518060400160405280600381526020017f505334000000000000000000000000000000000000000000000000000000000081525090613107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130cc5780820151818401526020810190506130b1565b50505050905090810190601f1680156130f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe076020e7eac3915d33aec40c24f95e73eb6c9921ff89747d50aa8fd934d2c0160405160405180910390a250565b600d5481565b60105481565b60035481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806132b1600f544261333090919063ffffffff16565b905060006133126301e133806133046b033b2e3c9fd0803ce80000006132f6866132e8600e546004546133b390919063ffffffff16565b6133b390919063ffffffff16565b61343990919063ffffffff16565b61343990919063ffffffff16565b9050613329816002546134c290919063ffffffff16565b9250505090565b6000828211156133a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000808314156133c65760009050613433565b60008284029050828482816133d757fe5b041461342e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141af6021913960400191505060405180910390fd5b809150505b92915050565b60008082116134b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816134b957fe5b04905092915050565b600080828401905083811015613540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083148061355a5750600082145b1561356857600090506136bd565b8160026b033b2e3c9fd0803ce80000008161357f57fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03816135a957fe5b048311156040518060400160405280600281526020017f4d3100000000000000000000000000000000000000000000000000000000000081525090613689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561364e578082015181840152602081019050613633565b50505050905090810190601f16801561367b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506b033b2e3c9fd0803ce800000060026b033b2e3c9fd0803ce8000000816136ad57fe5b0483850201816136b957fe5b0490505b92915050565b6000808314806136d35750600082145b156136e15760009050613818565b816002612710816136ee57fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038161371857fe5b048311156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906137f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137bd5780820151818401526020810190506137a2565b50505050905090810190601f1680156137ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061271060026127108161380857fe5b04838502018161381457fe5b0490505b92915050565b6138bb8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613df2565b505050565b6138da816138cc613299565b61333090919063ffffffff16565b6002819055506138e861100b565b600d81905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342568d44600254613937611596565b6040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561397257600080fd5b505afa158015613986573d6000803e3d6000fd5b505050506040513d602081101561399c57600080fd5b8101908080519060200190929190505050600e8190555042600f8190555050565b6139c561157a565b613a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613a7a613ee1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090613bb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613b79578082015181840152602081019050613b5e565b50505050905090810190601f168015613ba65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613c0060006138c0565b8073ffffffffffffffffffffffffffffffffffffffff167f0ec6cb7631d36954a05ffd646135bfd9995c71e7fa36d26abb1ad9f24a040ea160405160405180910390a250565b613c4e61157a565b15613cc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613d04613ee1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b613dec846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613df2565b50505050565b6000613e54826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613ee99092919063ffffffff16565b9050600081511115613edc57808060200190516020811015613e7557600080fd5b8101908080519060200190929190505050613edb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806141d0602a913960400191505060405180910390fd5b5b505050565b600033905090565b6060613ef88484600085613f01565b90509392505050565b606082471015613f5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141896026913960400191505060405180910390fd5b613f65856140a9565b613fd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106140265780518252602082019150602081019050602083039250614003565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614088576040519150601f19603f3d011682016040523d82523d6000602084013e61408d565b606091505b509150915061409d8282866140bc565b92505050949350505050565b600080823b905060008111915050919050565b606083156140cc57829050614181565b6000835111156140df5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561414657808201518184015260208101905061412b565b50505050905090810190601f1680156141735780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220321f4af258064db8f92f53dcba9d9ce32b6bb260f80a629297ce22f3e036a03f64736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7760806040523480156200001157600080fd5b5060405162006ef438038062006ef4833981810160405281019062000037919062001213565b8160008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000163576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001275780820151818401526020810190506200010a565b50505050905090810190601f168015620001555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ab57600080fd5b505afa158015620001c0573d6000803e3d6000fd5b505050506040513d6020811015620001d757600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015620002945750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906200030e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030591906200132d565b60405180910390fd5b5081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b957600080fd5b505afa158015620003ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f49190620011e7565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c252f916040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049d57600080fd5b505afa158015620004b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d89190620011e7565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c861251c0360056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620005fd600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660c861251c036200071560201b60201c565b620006126126de600462000d6160201b60201c565b600160146000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166377532ed96040518163ffffffff1660e01b815260040160206040518083038186803b1580156200068157600080fd5b505afa15801562000696573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006bc9190620011e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001470565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090620007c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b791906200132d565b60405180910390fd5b5060008111801562000833575060056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b6040518060400160405280600381526020017f434631000000000000000000000000000000000000000000000000000000000081525090620008ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a491906200132d565b60405180910390fd5b506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180620009035750610100600480549050105b6040518060400160405280600381526020017f4346360000000000000000000000000000000000000000000000000000000000815250906200097d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200097491906200132d565b60405180910390fd5b5060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401620009bb9190620012e3565b60206040518083038186803b158015620009d457600080fd5b505afa158015620009e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a0f919062001254565b101562000a1b57600080fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743b908684600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040162000a9e92919062001300565b60206040518083038186803b15801562000ab757600080fd5b505afa15801562000acc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000af2919062001254565b116040518060400160405280600381526020017f43464500000000000000000000000000000000000000000000000000000000008152509062000b6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6491906200132d565b60405180910390fd5b50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1662000cc9576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506004805490506001901b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fa52fb6bfa514a4ddcb31de40a5f6c20d767db1f921a8b7747973d93dc5da7a028260405162000d55919062001351565b60405180910390a25050565b816011819055508060128190555062000d7f62000dbe60201b60201c565b7f727652fff0946c19c233fd3eab5fc03db9e9fdd907e902d9136c2a9cac47101c828260405162000db29291906200136e565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000f6d57600062000e4862000e3160115460125462000f6f60201b60201c565b6127106200101f60201b620040491790919060201c565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633915ffaa6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000eb357600080fd5b505afa15801562000ec8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eee919062001254565b81106040518060400160405280600381526020017f43464200000000000000000000000000000000000000000000000000000000008152509062000f6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f6191906200132d565b60405180910390fd5b50505b565b600062000f8d83612710620010a360201b620040cc1790919060201c565b905060005b62000fad6001846200101f60201b620040491790919060201c565b81101562000ffa5762000fea61271062000fd68685620010a360201b620040cc1790919060201c565b6200112e60201b620041521790919060201c565b9150808060010191505062000f92565b5062001017612710826200112e60201b620041521790919060201c565b905092915050565b60008282111562001098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600080831415620010b8576000905062001128565b6000828402905082848281620010ca57fe5b041462001123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062006ed36021913960400191505060405180910390fd5b809150505b92915050565b6000808211620011a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381620011b057fe5b04905092915050565b600081519050620011ca816200143c565b92915050565b600081519050620011e18162001456565b92915050565b600060208284031215620011fa57600080fd5b60006200120a84828501620011b9565b91505092915050565b600080604083850312156200122757600080fd5b60006200123785828601620011b9565b92505060206200124a85828601620011b9565b9150509250929050565b6000602082840312156200126757600080fd5b60006200127784828501620011d0565b91505092915050565b6200128b81620013b7565b82525050565b60006200129e826200139b565b620012aa8185620013a6565b9350620012bc818560208601620013f5565b620012c7816200142b565b840191505092915050565b620012dd81620013eb565b82525050565b6000602082019050620012fa600083018462001280565b92915050565b600060408201905062001317600083018562001280565b62001326602083018462001280565b9392505050565b6000602082019050818103600083015262001349818462001291565b905092915050565b6000602082019050620013686000830184620012d2565b92915050565b6000604082019050620013856000830185620012d2565b620013946020830184620012d2565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000620013c482620013cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562001415578082015181840152602081019050620013f8565b8381111562001425576000848401525b50505050565b6000601f19601f8301169050919050565b6200144781620013b7565b81146200145357600080fd5b50565b6200146181620013eb565b81146200146d57600080fd5b50565b615a5380620014806000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c80635f598edd11610167578063b3c61943116100ce578063e1c8ef0d11610087578063e1c8ef0d14610823578063e54fe9c81461083f578063e6dee2cc1461085b578063f67c5bd014610879578063f9eaee0d146108a9578063fdd57645146108d957610295565b8063b3c6194314610729578063b451cecc14610759578063c12c21c014610789578063c7de38a6146107a7578063cf33d955146107d7578063dfd59465146107f357610295565b80638456cb59116101205780638456cb591461065457806390b1300a1461065e578063a147c6c61461068e578063a5757517146106aa578063af0a6502146106c6578063b2d0d86b146106f957610295565b80635f598edd1461058457806362061c6d146105b457806378327438146105d05780637bccacee146106005780637dd0ba821461061c5780637e4a68631461063857610295565b806347dedfc91161020b57806352438e54116101c457806352438e54146104b0578063570a7af2146104cc5780635a29be45146104ea5780635c975abb1461051a5780635e5f2e26146105385780635f27212a1461056857610295565b806347dedfc9146103da5780634cba294a146103f85780634f0e0ef3146104285780635094cb4f1461044657806350e036ff1461047657806351e3f1601461049457610295565b80632e2986dd1161025d5780632e2986dd1461032e5780633192195c1461034a5780633b00ae701461037a5780633bdfe4f5146103965780633f4ba83a146103c657806340631828146103d057610295565b806320a05ff71461029a57806324147708146102b85780632495a599146102d45780632630c12f146102f25780632954018c14610310575b600080fd5b6102a2610909565b6040516102af91906157c3565b60405180910390f35b6102d260048036038101906102cd919061538b565b610916565b005b6102dc610b12565b6040516102e991906156e2565b60405180910390f35b6102fa610b38565b60405161030791906156e2565b60405180910390f35b610318610b5e565b6040516103259190615786565b60405180910390f35b61034860048036038101906103439190615567565b610b84565b005b610364600480360381019061035f919061538b565b610dce565b60405161037191906157c3565b60405180910390f35b610394600480360381019061038f91906153dd565b610f95565b005b6103b060048036038101906103ab919061538b565b611143565b6040516103bd919061576b565b60405180910390f35b6103ce611163565b005b6103d861130e565b005b6103e2611a9c565b6040516103ef91906157c3565b60405180910390f35b610412600480360381019061040d919061538b565b611aa2565b60405161041f91906157c3565b60405180910390f35b610430611aba565b60405161043d91906156e2565b60405180910390f35b610460600480360381019061045b91906155df565b611ae0565b60405161046d91906156e2565b60405180910390f35b61047e611afd565b60405161048b91906157c3565b60405180910390f35b6104ae60048036038101906104a991906153dd565b611b0e565b005b6104ca60048036038101906104c5919061538b565b611be5565b005b6104d4612037565b6040516104e191906156e2565b60405180910390f35b61050460048036038101906104ff91906153dd565b61205d565b604051610511919061576b565b60405180910390f35b6105226120f1565b60405161052f919061576b565b60405180910390f35b610552600480360381019061054d91906155df565b612107565b60405161055f91906156e2565b60405180910390f35b610582600480360381019061057d9190615567565b612146565b005b61059e6004803603810190610599919061538b565b612243565b6040516105ab919061576b565b60405180910390f35b6105ce60048036038101906105c99190615631565b612263565b005b6105ea60048036038101906105e5919061538b565b612412565b6040516105f791906157c3565b60405180910390f35b61061a600480360381019061061591906153dd565b61242a565b005b6106366004803603810190610631919061538b565b612979565b005b610652600480360381019061064d9190615490565b6129fd565b005b61065c612dca565b005b6106786004803603810190610673919061538b565b612f75565b60405161068591906157c3565b60405180910390f35b6106a860048036038101906106a391906155a3565b613034565b005b6106c460048036038101906106bf91906155a3565b6131e3565b005b6106e060048036038101906106db91906155a3565b61326b565b6040516106f09493929190615726565b60405180910390f35b610713600480360381019061070e919061538b565b613470565b604051610720919061576b565b60405180910390f35b610743600480360381019061073e9190615631565b613490565b60405161075091906157c3565b60405180910390f35b610773600480360381019061076e919061538b565b61351b565b60405161078091906157c3565b60405180910390f35b610791613533565b60405161079e91906156e2565b60405180910390f35b6107c160048036038101906107bc919061538b565b613559565b6040516107ce91906157c3565b60405180910390f35b6107f160048036038101906107ec919061538b565b613601565b005b61080d6004803603810190610808919061538b565b613b7f565b60405161081a91906157c3565b60405180910390f35b61083d60048036038101906108389190615419565b613bbf565b005b6108596004803603810190610854919061538b565b613e4c565b005b610863613fa2565b60405161087091906157c3565b60405180910390f35b610893600480360381019061088e919061538b565b613fa8565b6040516108a091906157c3565b60405180910390f35b6108c360048036038101906108be919061538b565b613fc0565b6040516108d0919061576b565b60405180910390f35b6108f360048036038101906108ee919061538b565b614016565b60405161090091906156e2565b60405180910390f35b6000600480549050905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561099f57600080fd5b505afa1580156109b3573d6000803e3d6000fd5b505050506040513d60208110156109c957600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7b578082015181840152602081019050610a60565b50505050905090810190601f168015610aa85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c0d57600080fd5b505afa158015610c21573d6000803e3d6000fd5b505050506040513d6020811015610c3757600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610d24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ce9578082015181840152602081019050610cce565b50505050905090810190601f168015610d165780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fc7d2592986c53f858769b011e8ce6298936f8609789988e9f5ad4f0a2079889782604051610dc2919061576b565b60405180910390a25050565b6000610f8e8273ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1957600080fd5b505afa158015610e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e519190615608565b610f80600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ebc57600080fd5b505afa158015610ed0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef49190615608565b8573ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3a57600080fd5b505afa158015610f4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f729190615608565b6140cc90919063ffffffff16565b61415290919063ffffffff16565b9050919050565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806110375750601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561113f57601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f43464600000000000000000000000000000000000000000000000000000000008152509061113d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113491906157a1565b60405180910390fd5b505b5050565b600b6020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156111ec57600080fd5b505afa158015611200573d6000803e3d6000fd5b505050506040513d602081101561121657600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112c85780820151818401526020810190506112ad565b50505050905090810190601f1680156112f55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061130c6141db565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f4346330000000000000000000000000000000000000000000000000000000000815250906113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd91906157a1565b60405180910390fd5b50612710600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635e0b63d36040518163ffffffff1660e01b815260040160206040518083038186803b15801561144257600080fd5b505afa158015611456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147a9190615608565b1080156115275750612710600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633915ffaa6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114ed57600080fd5b505afa158015611501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115259190615608565b105b80156115d35750612710600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638053fcbe6040518163ffffffff1660e01b815260040160206040518083038186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d19190615608565b105b6040518060400160405280600381526020017f434d3800000000000000000000000000000000000000000000000000000000008152509061164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164191906157a1565b60405180910390fd5b50612710600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1b4264c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b657600080fd5b505afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee9190615608565b116040518060400160405280600381526020017f434d39000000000000000000000000000000000000000000000000000000000081525090611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d91906157a1565b60405180910390fd5b506118b8600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633915ffaa6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117d257600080fd5b505afa1580156117e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180a9190615608565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638053fcbe6040518163ffffffff1660e01b815260040160206040518083038186803b15801561187257600080fd5b505afa158015611886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118aa9190615608565b61404990919063ffffffff16565b60056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600190505b600480549050811015611a915760056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600484815481106119a457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156040518060400160405280600381526020017f434643000000000000000000000000000000000000000000000000000000000081525090611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a91906157a1565b60405180910390fd5b508080600101915050611924565b50611a9a6142c5565b565b60115481565b60086020528060005260406000206000915090505481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611af682600961445f90919063ffffffff16565b9050919050565b6000611b096009614479565b905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434633000000000000000000000000000000000000000000000000000000000081525090611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd91906157a1565b60405180910390fd5b50611be1828261448e565b5050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c6e57600080fd5b505afa158015611c82573d6000803e3d6000fd5b505050506040513d6020811015611c9857600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090611d85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d4a578082015181840152602081019050611d2f565b50505050905090810190601f168015611d775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2591906157a1565b60405180910390fd5b50611e438160096145e990919063ffffffff16565b6040518060400160405280600381526020017f434641000000000000000000000000000000000000000000000000000000000081525090611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb191906157a1565b60405180910390fd5b506000600b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fab9f405bf0c19b97f65a7031634db41569cd2f0e0376a610a1e977f9ab22b58f60405160405180910390a250565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008060009054906101000a900460ff16905090565b6004818154811061211757600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f9b3258bc4904fd6426b99843e206c6c7cdb1fd0f040121c25b71dafbb3851ee083604051612237919061576b565b60405180910390a35050565b60146020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122ec57600080fd5b505afa158015612300573d6000803e3d6000fd5b505050506040513d602081101561231657600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123c85780820151818401526020810190506123ad565b50505050905090810190601f1680156123f55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061240e8282614619565b5050565b60056020528060005260406000206000915090505481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124b357600080fd5b505afa1580156124c7573d6000803e3d6000fd5b505050506040513d60208110156124dd57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3200000000000000000000000000000000000000000000000000000000815250906125ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561258f578082015181840152602081019050612574565b50505050905090810190601f1680156125bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126355750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a391906157a1565b60405180910390fd5b5060001515600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146040518060400160405280600381526020017f434644000000000000000000000000000000000000000000000000000000000081525090612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276f91906157a1565b60405180910390fd5b506000600b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061289c82600961466c90919063ffffffff16565b5080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4bcbefaef68b99503d502f5a6abe7bca2b183ab8ac55457013c77d084ebd130560405160405180910390a35050565b61298281613fc0565b6040518060400160405280600381526020017f4346320000000000000000000000000000000000000000000000000000000000815250906129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f091906157a1565b60405180910390fd5b5050565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f434634000000000000000000000000000000000000000000000000000000000081525090612ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab891906157a1565b60405180910390fd5b5060008083518651148015612ad7575082518551145b6040518060400160405280600281526020017f435200000000000000000000000000000000000000000000000000000000000081525090612b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4591906157a1565b60405180910390fd5b5060005b8651811015612c7357612c64600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df898481518110612ba857fe5b6020026020010151888581518110612bbc57fe5b6020026020010151601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401612c05939291906157de565b60206040518083038186803b158015612c1d57600080fd5b505afa158015612c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c559190615608565b8461469c90919063ffffffff16565b92508080600101915050612b52565b5060005b8551811015612db557612c9d88858381518110612c9057fe5b602002602001015161448e565b612da6600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df888481518110612cea57fe5b6020026020010151878581518110612cfe57fe5b6020026020010151601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401612d47939291906157de565b60206040518083038186803b158015612d5f57600080fd5b505afa158015612d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d979190615608565b8361469c90919063ffffffff16565b91508080600101915050612c77565b50612dc1878383614724565b50505050505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612e5357600080fd5b505afa158015612e67573d6000803e3d6000fd5b505050506040513d6020811015612e7d57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090612f6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f2f578082015181840152602081019050612f14565b50505050905090810190601f168015612f5c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612f736148c6565b565b6000806000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b612fc7610909565b81101561301557806001901b925060008383161115613008576000612fec868361326b565b9350505050613004818661469c90919063ffffffff16565b9450505b8080600101915050612fbf565b5061302b6127108461415290919063ffffffff16565b92505050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156130bd57600080fd5b505afa1580156130d1573d6000803e3d6000fd5b505050506040513d60208110156130e757600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3200000000000000000000000000000000000000000000000000000000815250906131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561319957808201518184015260208101905061317e565b50505050905090810190601f1680156131c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506131df82826149b1565b5050565b806131ed83613b7f565b10156040518060400160405280600381526020017f434d35000000000000000000000000000000000000000000000000000000000081525090613266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325d91906157a1565b60405180910390fd5b505050565b6000806000806004858154811061327e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016132e491906156e2565b60206040518083038186803b1580156132fc57600080fd5b505afa158015613310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133349190615608565b9250600183111561346757600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df8486600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b81526004016133c0939291906157de565b60206040518083038186803b1580156133d857600080fd5b505afa1580156133ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134109190615608565b9150613464600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836140cc90919063ffffffff16565b90505b92959194509250565b60036020528060005260406000206000915054906101000a900460ff1681565b60006134a7836127106140cc90919063ffffffff16565b905060005b6134c060018461404990919063ffffffff16565b8110156134fd576134ee6127106134e086856140cc90919063ffffffff16565b61415290919063ffffffff16565b915080806001019150506134ac565b506135136127108261415290919063ffffffff16565b905092915050565b60076020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b6135ab610909565b8110156135f957806001901b9250600083831611156135ec5760006135d0868361326b565b50925050506135e8818661469c90919063ffffffff16565b9450505b80806001019150506135a3565b505050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561368a57600080fd5b505afa15801561369e573d6000803e3d6000fd5b505050506040513d60208110156136b457600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3200000000000000000000000000000000000000000000000000000000815250906137a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561376657808201518184015260208101905061374b565b50505050905090810190601f1680156137935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509061384a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384191906157a1565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434647000000000000000000000000000000000000000000000000000000000081525090613914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390b91906157a1565b60405180910390fd5b5080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b815260040160206040518083038186803b15801561399c57600080fd5b505afa1580156139b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d491906153b4565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b158015613ab557600080fd5b505afa158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed91906153b4565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434630000000000000000000000000000000000000000000000000000000000081525090613b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7291906157a1565b60405180910390fd5b5050565b6000613bb8613b8d83610dce565b613baa612710613b9c86612f75565b6140cc90919063ffffffff16565b61415290919063ffffffff16565b9050919050565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f434634000000000000000000000000000000000000000000000000000000000081525090613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7a91906157a1565b60405180910390fd5b50613c8e858461448e565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df8487601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401613d11939291906157de565b60206040518083038186803b158015613d2957600080fd5b505afa158015613d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d619190615608565b90506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df8487601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401613de6939291906157de565b60206040518083038186803b158015613dfe57600080fd5b505afa158015613e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e369190615608565b9050613e43878383614724565b50505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434633000000000000000000000000000000000000000000000000000000000081525090613f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0b91906157a1565b60405180910390fd5b506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60125481565b60066020528060005260406000206000915090505481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000828211156140c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000808314156140df576000905061414c565b60008284029050828482816140f057fe5b0414614147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159fd6021913960400191505060405180910390fd5b809150505b92915050565b60008082116141c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816141d257fe5b04905092915050565b6141e36120f1565b614255576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa614298614fdf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461445d57600061433f61432e601154601254613490565b61271061404990919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633915ffaa6040518163ffffffff1660e01b815260040160206040518083038186803b1580156143a957600080fd5b505afa1580156143bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e19190615608565b81106040518060400160405280600381526020017f43464200000000000000000000000000000000000000000000000000000000008152509061445a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161445191906157a1565b60405180910390fd5b50505b565b600061446e8360000183614fe7565b60001c905092915050565b60006144878260000161506a565b9050919050565b61449781612979565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541614156145e557600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205417600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b6000614611836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61507b565b905092915050565b816011819055508060128190555061462f6142c5565b7f727652fff0946c19c233fd3eab5fc03db9e9fdd907e902d9136c2a9cac47101c8282604051614660929190615815565b60405180910390a15050565b6000614694836000018373ffffffffffffffffffffffffffffffffffffffff1660001b615163565b905092915050565b60008082840190508381101561471a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b614739601154836140cc90919063ffffffff16565b61474e612710836140cc90919063ffffffff16565b11801561479c5750601254600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411155b156147f557600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055506148c1565b61271061480184613b7f565b10156040518060400160405280600381526020017f43463500000000000000000000000000000000000000000000000000000000008152509061487a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161487191906157a1565b60405180910390fd5b506001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6148ce6120f1565b15614941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614984614fdf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090614a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614a5091906157a1565b60405180910390fd5b50600081118015614acb575060056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b6040518060400160405280600381526020017f434631000000000000000000000000000000000000000000000000000000000081525090614b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b3991906157a1565b60405180910390fd5b506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614b975750610100600480549050105b6040518060400160405280600381526020017f434636000000000000000000000000000000000000000000000000000000000081525090614c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614c0591906157a1565b60405180910390fd5b5060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401614c4a91906156e2565b60206040518083038186803b158015614c6257600080fd5b505afa158015614c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c9a9190615608565b1015614ca557600080fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743b908684600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401614d269291906156fd565b60206040518083038186803b158015614d3e57600080fd5b505afa158015614d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d769190615608565b116040518060400160405280600381526020017f434645000000000000000000000000000000000000000000000000000000000081525090614dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614de591906157a1565b60405180910390fd5b50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614f49576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506004805490506001901b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fa52fb6bfa514a4ddcb31de40a5f6c20d767db1f921a8b7747973d93dc5da7a0282604051614fd391906157c3565b60405180910390a25050565b600033905090565b600081836000018054905011615048576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159db6022913960400191505060405180910390fd5b82600001828154811061505757fe5b9060005260206000200154905092915050565b600081600001805490509050919050565b6000808360010160008481526020019081526020016000205490506000811461515757600060018203905060006001866000018054905003905060008660000182815481106150c657fe5b90600052602060002001549050808760000184815481106150e357fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061511b57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061515d565b60009150505b92915050565b600061516f83836151d3565b6151c85782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506151cd565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60006152096152048461586f565b61583e565b9050808382526020820190508285602086028201111561522857600080fd5b60005b85811015615258578161523e88826152ce565b84526020840193506020830192505060018101905061522b565b5050509392505050565b60006152756152708461589b565b61583e565b9050808382526020820190508285602086028201111561529457600080fd5b60005b858110156152c457816152aa8882615361565b845260208401935060208301925050600181019050615297565b5050509392505050565b6000813590506152dd81615995565b92915050565b6000815190506152f281615995565b92915050565b600082601f83011261530957600080fd5b81356153198482602086016151f6565b91505092915050565b600082601f83011261533357600080fd5b8135615343848260208601615262565b91505092915050565b60008135905061535b816159ac565b92915050565b600081359050615370816159c3565b92915050565b600081519050615385816159c3565b92915050565b60006020828403121561539d57600080fd5b60006153ab848285016152ce565b91505092915050565b6000602082840312156153c657600080fd5b60006153d4848285016152e3565b91505092915050565b600080604083850312156153f057600080fd5b60006153fe858286016152ce565b925050602061540f858286016152ce565b9150509250929050565b600080600080600060a0868803121561543157600080fd5b600061543f888289016152ce565b9550506020615450888289016152ce565b9450506040615461888289016152ce565b935050606061547288828901615361565b925050608061548388828901615361565b9150509295509295909350565b600080600080600060a086880312156154a857600080fd5b60006154b6888289016152ce565b955050602086013567ffffffffffffffff8111156154d357600080fd5b6154df88828901615322565b945050604086013567ffffffffffffffff8111156154fc57600080fd5b61550888828901615322565b935050606086013567ffffffffffffffff81111561552557600080fd5b615531888289016152f8565b925050608086013567ffffffffffffffff81111561554e57600080fd5b61555a888289016152f8565b9150509295509295909350565b6000806040838503121561557a57600080fd5b6000615588858286016152ce565b92505060206155998582860161534c565b9150509250929050565b600080604083850312156155b657600080fd5b60006155c4858286016152ce565b92505060206155d585828601615361565b9150509250929050565b6000602082840312156155f157600080fd5b60006155ff84828501615361565b91505092915050565b60006020828403121561561a57600080fd5b600061562884828501615376565b91505092915050565b6000806040838503121561564457600080fd5b600061565285828601615361565b925050602061566385828601615361565b9150509250929050565b615676816158e3565b82525050565b615685816158f5565b82525050565b6156948161592b565b82525050565b60006156a5826158c7565b6156af81856158d2565b93506156bf81856020860161594f565b6156c881615984565b840191505092915050565b6156dc81615921565b82525050565b60006020820190506156f7600083018461566d565b92915050565b6000604082019050615712600083018561566d565b61571f602083018461566d565b9392505050565b600060808201905061573b600083018761566d565b61574860208301866156d3565b61575560408301856156d3565b61576260608301846156d3565b95945050505050565b6000602082019050615780600083018461567c565b92915050565b600060208201905061579b600083018461568b565b92915050565b600060208201905081810360008301526157bb818461569a565b905092915050565b60006020820190506157d860008301846156d3565b92915050565b60006060820190506157f360008301866156d3565b615800602083018561566d565b61580d604083018461566d565b949350505050565b600060408201905061582a60008301856156d3565b61583760208301846156d3565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561586557615864615982565b5b8060405250919050565b600067ffffffffffffffff82111561588a57615889615982565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156158b6576158b5615982565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60006158ee82615901565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006159368261593d565b9050919050565b600061594882615901565b9050919050565b60005b8381101561596d578082015181840152602081019050615952565b8381111561597c576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b61599e816158e3565b81146159a957600080fd5b50565b6159b5816158f5565b81146159c057600080fd5b50565b6159cc81615921565b81146159d757600080fd5b5056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a6e30526ef40b1fc0f4406f86177173624879c0e6d70ec963500962cb8dada5264736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7760806040523480156200001157600080fd5b5060405162006ea138038062006ea1833981810160405281019062000037919062000c60565b8660008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000163576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001275780820151818401526020810190506200010a565b50505050905090810190601f168015620001555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ab57600080fd5b505afa158015620001c0573d6000803e3d6000fd5b505050506040513d6020811015620001d757600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156200029b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015620002d55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156200030f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000380919062000d5f565b60405180910390fd5b50600087905083600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041757600080fd5b505afa1580156200042c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000452919062000c34565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16634c252f916040518163ffffffff1660e01b815260040160206040518083038186803b158015620004d957600080fd5b505afa158015620004ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000514919062000c34565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166377532ed96040518163ffffffff1660e01b815260040160206040518083038186803b1580156200059b57600080fd5b505afa158015620005b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d6919062000c34565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16639068a8686040518163ffffffff1660e01b815260040160206040518083038186803b1580156200069e57600080fd5b505afa158015620006b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006d9919062000c34565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620007348787876103e860c861251c6200078360201b60201c565b82600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000ec5565b848611158015620007945750600084115b6040518060400160405280600381526020017f434d370000000000000000000000000000000000000000000000000000000000815250906200080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000805919062000d5f565b60405180910390fd5b5085600281905550846003819055508360048190555082600e8190555081600f8190555080601081905550620008aa6004546200089662000864606460ff16600454620009e360201b6200314b1790919060201c565b62000882600f5460105462000a6c60201b620031d31790919060201c565b62000af060201b620032561790919060201c565b62000b7b60201b620032dc1790919060201c565b600581905550600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200098c57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663406318286040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200097257600080fd5b505af115801562000987573d6000803e3d6000fd5b505050505b7fa32137411fc7c20db359079cd84af0e2cad58cd7a182a8a5e23e08e554e88bf0600254600354600454600e54600f54601054604051620009d39695949392919062000d83565b60405180910390a1505050505050565b60008082840190508381101562000a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282111562000ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b60008083141562000b05576000905062000b75565b600082840290508284828162000b1757fe5b041462000b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062006e806021913960400191505060405180910390fd5b809150505b92915050565b600080821162000bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838162000bfd57fe5b04905092915050565b60008151905062000c178162000e91565b92915050565b60008151905062000c2e8162000eab565b92915050565b60006020828403121562000c4757600080fd5b600062000c578482850162000c06565b91505092915050565b600080600080600080600060e0888a03121562000c7c57600080fd5b600062000c8c8a828b0162000c06565b975050602062000c9f8a828b0162000c1d565b965050604062000cb28a828b0162000c1d565b955050606062000cc58a828b0162000c1d565b945050608062000cd88a828b0162000c06565b93505060a062000ceb8a828b0162000c06565b92505060c062000cfe8a828b0162000c06565b91505092959891949750929550565b600062000d1a8262000df0565b62000d26818562000dfb565b935062000d3881856020860162000e4a565b62000d438162000e80565b840191505092915050565b62000d598162000e40565b82525050565b6000602082019050818103600083015262000d7b818462000d0d565b905092915050565b600060c08201905062000d9a600083018962000d4e565b62000da9602083018862000d4e565b62000db8604083018762000d4e565b62000dc7606083018662000d4e565b62000dd6608083018562000d4e565b62000de560a083018462000d4e565b979650505050505050565b600081519050919050565b600082825260208201905092915050565b600062000e198262000e20565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000e6a57808201518184015260208101905062000e4d565b8381111562000e7a576000848401525b50505050565b6000601f19601f8301169050919050565b62000e9c8162000e0c565b811462000ea857600080fd5b50565b62000eb68162000e40565b811462000ec257600080fd5b50565b615fab8062000ed56000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638053fcbe1161011a578063b2c53a6c116100ad578063e1b4264c1161007c578063e1b4264c146105a7578063e958b704146105c5578063ebb39512146105f5578063f8dbc6b614610611578063f93f515b1461064557610206565b8063b2c53a6c14610531578063c5e10eef1461054f578063d692ba331461056d578063e0c011b71461058957610206565b80639efc60d0116100e95780639efc60d0146104ad578063a69a7dd6146104c9578063a6eab5c2146104e5578063ab1148051461051557610206565b80638053fcbe146104335780638456cb5914610451578063996329f81461045b5780639b2cb5d81461048f57610206565b80635288ba4b1161019d5780635c975abb1161016c5780635c975abb1461038d5780635e0b63d3146103ab5780635f48f393146103c95780636ce4074a146103e75780637e5465ba1461041757610206565b80635288ba4b1461031b578063570a7af214610337578063579122ab14610355578063597810341461037157610206565b80633ce07355116101d95780633ce07355146102a75780633f4ba83a146102d75780634f0e0ef3146102e15780635019e20a146102ff57610206565b8063055ee9b51461020b5780632495a5991461023b578063256ac915146102595780633915ffaa14610289575b600080fd5b610225600480360381019061022091906152f2565b610663565b6040516102329190615952565b60405180910390f35b610243610696565b6040516102509190615952565b60405180910390f35b610273600480360381019061026e91906152f2565b6106bc565b6040516102809190615a4f565b60405180910390f35b610291610754565b60405161029e9190615ac9565b60405180910390f35b6102c160048036038101906102bc919061552c565b61075a565b6040516102ce9190615ac9565b60405180910390f35b6102df610857565b005b6102e9610a02565b6040516102f69190615952565b60405180910390f35b610319600480360381019061031491906152f2565b610a28565b005b610335600480360381019061033091906156ad565b610c7f565b005b61033f611221565b60405161034c9190615952565b60405180910390f35b61036f600480360381019061036a9190615380565b611247565b005b61038b60048036038101906103869190615485565b6114ad565b005b6103956116e4565b6040516103a29190615a4f565b60405180910390f35b6103b36116fa565b6040516103c09190615ac9565b60405180910390f35b6103d1611700565b6040516103de9190615ac9565b60405180910390f35b61040160048036038101906103fc919061541e565b611706565b60405161040e9190615a6a565b60405180910390f35b610431600480360381019061042c9190615344565b611a61565b005b61043b611d5f565b6040516104489190615ac9565b60405180910390f35b610459611d65565b005b61047560048036038101906104709190615568565b611f10565b604051610486959493929190615bc7565b60405180910390f35b610497611feb565b6040516104a49190615ac9565b60405180910390f35b6104c760048036038101906104c2919061565b565b611ff1565b005b6104e360048036038101906104de91906153cf565b612463565b005b6104ff60048036038101906104fa9190615344565b612740565b60405161050c9190615ac9565b60405180910390f35b61052f600480360381019061052a91906154d4565b612920565b005b610539612b6c565b6040516105469190615ac9565b60405180910390f35b610557612b72565b6040516105649190615952565b60405180910390f35b610587600480360381019061058291906152f2565b612b98565b005b610591612ca9565b60405161059e9190615952565b60405180910390f35b6105af612ccf565b6040516105bc9190615ac9565b60405180910390f35b6105df60048036038101906105da91906152f2565b612cd5565b6040516105ec9190615952565b60405180910390f35b61060f600480360381019061060a9190615787565b612dec565b005b61062b60048036038101906106269190615710565b612fa3565b60405161063c959493929190615bc7565b60405180910390f35b61064d613125565b60405161065a9190615a8c565b60405180910390f35b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600f5481565b60008061076684612cd5565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7de38a6836040518263ffffffff1660e01b81526004016107c59190615952565b60206040518083038186803b1580156107dd57600080fd5b505afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108159190615684565b9050600080610825848488611f10565b5050925092505085610837578161084b565b61084a818361314b90919063ffffffff16565b5b94505050505092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108e057600080fd5b505afa1580156108f4573d6000803e3d6000fd5b505050506040513d602081101561090a57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3100000000000000000000000000000000000000000000000000000000815250906109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109bc5780820151818401526020810190506109a1565b50505050905090810190601f1680156109e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610a00613365565b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a306116e4565b15610aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415610b1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506000610b2f33612cd5565b9050610b3a8261344f565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905580600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f93c70cc9715bef0d83edf2095f3595402279d274f402a73ffc17f1bcb19d863d60405160405180910390a3506001808190555050565b610c876116e4565b15610cfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415610d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506002548410158015610d8f57506003548411155b8015610d9b5750600082115b8015610da957506004548211155b6040518060400160405280600381526020017f434d37000000000000000000000000000000000000000000000000000000000081525090610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e179190615aa7565b60405180910390fd5b50610e2a8361344f565b6000610e55606460ff16610e47858861325690919063ffffffff16565b6132dc90919063ffffffff16565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321d1845683600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0057600080fd5b505afa158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f389190615684565b6040518363ffffffff1660e01b8152600401610f55929190615b0d565b602060405180830381600087803b158015610f6f57600080fd5b505af1158015610f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa7919061531b565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e54fe9c8826040518263ffffffff1660e01b81526004016110049190615952565b600060405180830381600087803b15801561101e57600080fd5b505af1158015611032573d6000803e3d6000fd5b50505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf28068b83836040518363ffffffff1660e01b8152600401611093929190615ae4565b600060405180830381600087803b1580156110ad57600080fd5b505af11580156110c1573d6000803e3d6000fd5b50505050611114338288600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135ce909392919063ffffffff16565b80600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7b20ae77867a263a1074203a2da261ef0d096c99395c59c9d4a0104b9f334a2789868860405161120a93929190615b90565b60405180910390a450506001808190555050505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b813373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdd57645836040518263ffffffff1660e01b81526004016112ba9190615952565b60206040518083038186803b1580156112d257600080fd5b505afa1580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a919061531b565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434d42000000000000000000000000000000000000000000000000000000000081525090611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f9190615aa7565b60405180910390fd5b506113a16116e4565b15611414576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6002600154141561148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506114a084848461368f565b6001808190555050505050565b6114b56116e4565b15611528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600260015414156115a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260018190555060006115b484612cd5565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351e3f16082856040518363ffffffff1660e01b8152600401611613929190615996565b600060405180830381600087803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505050506116723382848673ffffffffffffffffffffffffffffffffffffffff166135ce909392919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fa32435755c235de2976ed44a75a2f85cb01faf0c894f639fe0c32bb9455fea8f846040516116cf9190615ac9565b60405180910390a35060018081905550505050565b60008060009054906101000a900460ff16905090565b600e5481565b60035481565b6060823373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdd57645836040518263ffffffff1660e01b815260040161177b9190615952565b60206040518083038186803b15801561179357600080fd5b505afa1580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb919061531b565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434d42000000000000000000000000000000000000000000000000000000000081525090611859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118509190615aa7565b60405180910390fd5b506118626116e4565b156118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6002600154141561194e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600061196186612cd5565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a38073ffffffffffffffffffffffffffffffffffffffff16631cff79cd86866040518363ffffffff1660e01b81526004016119f89291906159f6565b600060405180830381600087803b158015611a1257600080fd5b505af1158015611a26573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a4f919061561a565b92505060018081905550509392505050565b611a696116e4565b15611adc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415611b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506000611b6833612cd5565b9050600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdd57645856040518263ffffffff1660e01b8152600401611bdd9190615952565b60206040518083038186803b158015611bf557600080fd5b505afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d919061531b565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600381526020017f434d42000000000000000000000000000000000000000000000000000000000081525090611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb39190615aa7565b60405180910390fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dd0ba82836040518263ffffffff1660e01b8152600401611d189190615952565b60006040518083038186803b158015611d3057600080fd5b505afa158015611d44573d6000803e3d6000fd5b50505050611d5381848461368f565b50600180819055505050565b60105481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dee57600080fd5b505afa158015611e02573d6000803e3d6000fd5b505050506040513d6020811015611e1857600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090611f05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611eca578082015181840152602081019050611eaf565b50505050905090810190601f168015611ef75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611f0e6137b4565b565b6000806000806000806000611f248a61389f565b91509150611fd489898484600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf9190615684565b612fa3565b965096509650965096505050939792965093509350565b60025481565b611ff96116e4565b1561206c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600260015414156120e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260018190555060006120f833612cd5565b90506000806121068361389f565b91509150600061211f858461314b90919063ffffffff16565b90506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c00495a18588866040518463ffffffff1660e01b815260040161218293929190615b90565b60206040518083038186803b15801561219a57600080fd5b505afa1580156121ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d29190615684565b90506121eb60045460035461325690919063ffffffff16565b612202606460ff168461325690919063ffffffff16565b106040518060400160405280600381526020017f434d3300000000000000000000000000000000000000000000000000000000008152509061227a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122719190615aa7565b60405180910390fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf28068b87876040518363ffffffff1660e01b81526004016122d8929190615ae4565b600060405180830381600087803b1580156122f257600080fd5b505af1158015612306573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff16631612821183836040518363ffffffff1660e01b8152600401612345929190615b0d565b600060405180830381600087803b15801561235f57600080fd5b505af1158015612373573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a5757517866005546040518363ffffffff1660e01b81526004016123d6929190615a26565b60006040518083038186803b1580156123ee57600080fd5b505afa158015612402573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f9cac51154cc0d835e2f9c9d1f59a9344588cee107f4203bf58a8c797e3a58c458760405161244c9190615ac9565b60405180910390a250505050506001808190555050565b61246b6116e4565b156124de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415612557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600061256a84612cd5565b905060008061257a8386866139a7565b9150915061263d612710600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633192195c866040518263ffffffff1660e01b81526004016125df9190615952565b60206040518083038186803b1580156125f757600080fd5b505afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190615684565b61325690919063ffffffff16565b81106040518060400160405280600381526020017f434d340000000000000000000000000000000000000000000000000000000000815250906126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ad9190615aa7565b60405180910390fd5b5060006126c8846003858a338b613cf1565b9150503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f5e5da6c348e62989f9cfe029252433fc99009b7d28fa3c20d675520a10ff5896836040516127289190615ac9565b60405180910390a35050505060018081905550505050565b600061274a6116e4565b156127bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434d36000000000000000000000000000000000000000000000000000000000081525090612906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fd9190615aa7565b60405180910390fd5b50612911838361417b565b90506001808190555092915050565b6129286116e4565b1561299b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415612a14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506000612a2733612cd5565b9050612a34818484614214565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401612a919190615952565b60206040518083038186803b158015612aa957600080fd5b505afa158015612abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae19190615684565b90506000612af5836001843360008b613cf1565b9150508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fca05b632388199c23de1352b2e96fd72a0ec71611683330b38060c004bbf0a7683604051612b559190615ac9565b60405180910390a350505060018081905550505050565b60045481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ba06116e4565b15612c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415612c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550612c9e338261417b565b506001808190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600381526020017f434d31000000000000000000000000000000000000000000000000000000000081525090612de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd99190615aa7565b60405180910390fd5b5080915050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612e7557600080fd5b505afa158015612e89573d6000803e3d6000fd5b505050506040513d6020811015612e9f57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090612f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f51578082015181840152602081019050612f36565b50505050905090810190601f168015612f7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612f9b8686868686876147ca565b505050505050565b60008060008060008089612fb7578a612fe1565b612fe0612710612fd26010548e61325690919063ffffffff16565b6132dc90919063ffffffff16565b5b9050889550600061300d89612fff8a8d61325690919063ffffffff16565b6132dc90919063ffffffff16565b9050808210156130475761302b6001836131d390919063ffffffff16565b955061304086826131d390919063ffffffff16565b9250613116565b8a61308a57613085613076600e546130688d856131d390919063ffffffff16565b614a0590919063ffffffff16565b8261314b90919063ffffffff16565b6130b2565b6130b1816130a3600f5485614a0590919063ffffffff16565b61314b90919063ffffffff16565b5b9550858211156130e9576130e260016130d488856131d390919063ffffffff16565b6131d390919063ffffffff16565b9450613100565b6130fd6001836131d390919063ffffffff16565b95505b61311381876131d390919063ffffffff16565b93505b50509550955095509550959050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284019050838110156131c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282111561324b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b60008083141561326957600090506132d6565b600082840290508284828161327a57fe5b04146132d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615f2b6021913960400191505060405180910390fd5b809150505b92915050565b6000808211613353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161335c57fe5b04905092915050565b61336d6116e4565b6133df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613422614b60565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156134925750613490816106bc565b155b6040518060400160405280600381526020017f434d32000000000000000000000000000000000000000000000000000000000081525090613509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135009190615aa7565b60405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135cb57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b00ae7033836040518363ffffffff1660e01b815260040161359a92919061596d565b60006040518083038186803b1580156135b257600080fd5b505afa1580156135c6573d6000803e3d6000fd5b505050505b50565b613689846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614b68565b50505050565b7f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85856040518363ffffffff1660e01b81526004016136eb929190615996565b60206040518083038186803b15801561370357600080fd5b505afa158015613717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373b9190615684565b10156137af578273ffffffffffffffffffffffffffffffffffffffff166303105b0482846040518363ffffffff1660e01b815260040161377c929190615996565b600060405180830381600087803b15801561379657600080fd5b505af11580156137aa573d6000803e3d6000fd5b505050505b505050565b6137bc6116e4565b1561382f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613872614b60565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000808273ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b815260040160206040518083038186803b1580156138e857600080fd5b505afa1580156138fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139209190615684565b91508273ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b815260040160206040518083038186803b15801561396857600080fd5b505afa15801561397c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a09190615684565b9050915091565b600080600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b451cecc886040518263ffffffff1660e01b8152600401613a089190615952565b60206040518083038186803b158015613a2057600080fd5b505afa158015613a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a589190615684565b9050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090613b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af99190615aa7565b60405180910390fd5b5060005b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b815260040160206040518083038186803b158015613b6e57600080fd5b505afa158015613b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba69190615684565b811015613ce657806001901b925060008383161115613cd957600080600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af0a65028d876040518363ffffffff1660e01b8152600401613c22929190615a26565b60806040518083038186803b158015613c3a57600080fd5b505afa158015613c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7291906155b7565b93509350935093506001831115613cd457613ca38c858d613c9d6001886131d390919063ffffffff16565b8e614c57565b15613cd357613cbb828a61314b90919063ffffffff16565b9850613cd0818961314b90919063ffffffff16565b97505b5b505050505b8080600101915050613b06565b505050935093915050565b6000806000600360ff168860ff161490506000806000806000613d158e8d88611f10565b94509450945094509450600160ff168d60ff161415613e93578d73ffffffffffffffffffffffffffffffffffffffff1663d1660f99600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b8152600401613daf939291906159bf565b600060405180830381600087803b158015613dc957600080fd5b505af1158015613ddd573d6000803e3d6000fd5b50505050600083116040518060400160405280600381526020017f434d41000000000000000000000000000000000000000000000000000000000081525090613e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e539190615aa7565b60405180910390fd5b50613e8d8e600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b866000614c57565b50613fe4565b600360ff168d60ff161415613f7157613f138a600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135ce909392919063ffffffff16565b6000831115613f6c57613f6b8a8c85600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135ce909392919063ffffffff16565b5b613fe3565b613fe233600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135ce909392919063ffffffff16565b5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166389b77b3e8f6040518263ffffffff1660e01b815260040161403f9190615952565b600060405180830381600087803b15801561405957600080fd5b505af115801561406d573d6000803e3d6000fd5b50505050600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca9505e48684846040518463ffffffff1660e01b815260040161413293929190615b90565b600060405180830381600087803b15801561414c57600080fd5b505af1158015614160573d6000803e3d6000fd5b50505050838397509750505050505050965096945050505050565b60008061418784612cd5565b90506000614197828560006139a7565b50905060006141ab83600284898a8a613cf1565b5090508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fe7c7987373a0cc4913d307f23ab8ef02e0333a2af445065e2ef7636cffc6daa760405160405180910390a380935050505092915050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b451cecc866040518263ffffffff1660e01b81526004016142729190615952565b60206040518083038186803b15801561428a57600080fd5b505afa15801561429e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c29190615684565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b815260040160206040518083038186803b15801561432c57600080fd5b505afa158015614340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143649190615684565b84849050146040518060400160405280600281526020017f504c000000000000000000000000000000000000000000000000000000000000815250906143e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143d79190615aa7565b60405180910390fd5b506000600190505b848490508110156147c257806001901b9250600083831611156147b557600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af0a650289856040518363ffffffff1660e01b8152600401614465929190615a26565b60806040518083038186803b15801561447d57600080fd5b505afa158015614491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b591906155b7565b50509150915060018111156147b2576144f188600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461368f565b60008787858181106144ff57fe5b90506020028101906145119190615cd2565b80600001906145209190615c7b565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509050828160008151811061457057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018a8a888181106145dc57fe5b90506020028101906145ee9190615cd2565b80600001906145fd9190615c7b565b9050038151811061460a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060006338ed173960e01b6146626001856131d390919063ffffffff16565b8a8a8881811061466e57fe5b90506020028101906146809190615cd2565b60200135848d4260405160240161469b959493929190615b36565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508973ffffffffffffffffffffffffffffffffffffffff16631cff79cd600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016147579291906159f6565b600060405180830381600087803b15801561477157600080fd5b505af1158015614785573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906147ae919061561a565b5050505b50505b80806001019150506143e8565b505050505050565b8486111580156147da5750600084115b6040518060400160405280600381526020017f434d37000000000000000000000000000000000000000000000000000000000081525090614851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016148489190615aa7565b60405180910390fd5b5085600281905550846003819055508360048190555082600e8190555081600f81905550806010819055506148d16004546148c361489e606460ff1660045461314b90919063ffffffff16565b6148b5600f546010546131d390919063ffffffff16565b61325690919063ffffffff16565b6132dc90919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146149b057600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663406318286040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561499757600080fd5b505af11580156149ab573d6000803e3d6000fd5b505050505b7fa32137411fc7c20db359079cd84af0e2cad58cd7a182a8a5e23e08e554e88bf0600254600354600454600e54600f546010546040516149f596959493929190615c1a565b60405180910390a1505050505050565b600080831480614a155750600082145b15614a235760009050614b5a565b81600261271081614a3057fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0381614a5a57fe5b048311156040518060400160405280600281526020017f4d3100000000000000000000000000000000000000000000000000000000000081525090614b3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614aff578082015181840152602081019050614ae4565b50505050905090810190601f168015614b2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612710600261271081614b4a57fe5b048385020181614b5657fe5b0490505b92915050565b600033905090565b6000614bca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614ed09092919063ffffffff16565b9050600081511115614c5257808060200190516020811015614beb57600080fd5b8101908080519060200190929190505050614c51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615f4c602a913960400191505060405180910390fd5b5b505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614614da1578573ffffffffffffffffffffffffffffffffffffffff1663d1660f998686866040518463ffffffff1660e01b8152600401614ceb939291906159bf565b600060405180830381600087803b158015614d0557600080fd5b505af1925050508015614d16575060015b614d9c57816040518060400160405280600381526020017f434d43000000000000000000000000000000000000000000000000000000000081525090614d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614d899190615aa7565b60405180910390fd5b5060009050614ec7565b614ec2565b8573ffffffffffffffffffffffffffffffffffffffff1663d1660f9986600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b8152600401614e00939291906159bf565b600060405180830381600087803b158015614e1a57600080fd5b505af1158015614e2e573d6000803e3d6000fd5b50505050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635869dba885856040518363ffffffff1660e01b8152600401614e8f929190615a26565b600060405180830381600087803b158015614ea957600080fd5b505af1158015614ebd573d6000803e3d6000fd5b505050505b600190505b95945050505050565b6060614edf8484600085614ee8565b90509392505050565b606082471015614f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615f056026913960400191505060405180910390fd5b614f4c85615090565b614fbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061500d5780518252602082019150602081019050602083039250614fea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461506f576040519150601f19603f3d011682016040523d82523d6000602084013e615074565b606091505b50915091506150848282866150a3565b92505050949350505050565b600080823b905060008111915050919050565b606083156150b357829050615168565b6000835111156150c65782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561512d578082015181840152602081019050615112565b50505050905090810190601f16801561515a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b600061518261517d84615d27565b615cf6565b90508281526020810184848401111561519a57600080fd5b6151a5848285615e6a565b509392505050565b60006151c06151bb84615d27565b615cf6565b9050828152602081018484840111156151d857600080fd5b6151e3848285615e79565b509392505050565b6000813590506151fa81615ebf565b92915050565b60008151905061520f81615ebf565b92915050565b60008083601f84011261522757600080fd5b8235905067ffffffffffffffff81111561524057600080fd5b60208301915083602082028301111561525857600080fd5b9250929050565b60008135905061526e81615ed6565b92915050565b600082601f83011261528557600080fd5b813561529584826020860161516f565b91505092915050565b600082601f8301126152af57600080fd5b81516152bf8482602086016151ad565b91505092915050565b6000813590506152d781615eed565b92915050565b6000815190506152ec81615eed565b92915050565b60006020828403121561530457600080fd5b6000615312848285016151eb565b91505092915050565b60006020828403121561532d57600080fd5b600061533b84828501615200565b91505092915050565b6000806040838503121561535757600080fd5b6000615365858286016151eb565b9250506020615376858286016151eb565b9150509250929050565b60008060006060848603121561539557600080fd5b60006153a3868287016151eb565b93505060206153b4868287016151eb565b92505060406153c5868287016151eb565b9150509250925092565b6000806000606084860312156153e457600080fd5b60006153f2868287016151eb565b9350506020615403868287016151eb565b92505060406154148682870161525f565b9150509250925092565b60008060006060848603121561543357600080fd5b6000615441868287016151eb565b9350506020615452868287016151eb565b925050604084013567ffffffffffffffff81111561546f57600080fd5b61547b86828701615274565b9150509250925092565b60008060006060848603121561549a57600080fd5b60006154a8868287016151eb565b93505060206154b9868287016151eb565b92505060406154ca868287016152c8565b9150509250925092565b6000806000604084860312156154e957600080fd5b60006154f7868287016151eb565b935050602084013567ffffffffffffffff81111561551457600080fd5b61552086828701615215565b92509250509250925092565b6000806040838503121561553f57600080fd5b600061554d858286016151eb565b925050602061555e8582860161525f565b9150509250929050565b60008060006060848603121561557d57600080fd5b600061558b868287016151eb565b935050602061559c868287016152c8565b92505060406155ad8682870161525f565b9150509250925092565b600080600080608085870312156155cd57600080fd5b60006155db87828801615200565b94505060206155ec878288016152dd565b93505060406155fd878288016152dd565b925050606061560e878288016152dd565b91505092959194509250565b60006020828403121561562c57600080fd5b600082015167ffffffffffffffff81111561564657600080fd5b6156528482850161529e565b91505092915050565b60006020828403121561566d57600080fd5b600061567b848285016152c8565b91505092915050565b60006020828403121561569657600080fd5b60006156a4848285016152dd565b91505092915050565b600080600080608085870312156156c357600080fd5b60006156d1878288016152c8565b94505060206156e2878288016151eb565b93505060406156f3878288016152c8565b9250506060615704878288016152c8565b91505092959194509250565b600080600080600060a0868803121561572857600080fd5b6000615736888289016152c8565b95505060206157478882890161525f565b9450506040615758888289016152c8565b9350506060615769888289016152c8565b925050608061577a888289016152c8565b9150509295509295909350565b60008060008060008060c087890312156157a057600080fd5b60006157ae89828a016152c8565b96505060206157bf89828a016152c8565b95505060406157d089828a016152c8565b94505060606157e189828a016152c8565b93505060806157f289828a016152c8565b92505060a061580389828a016152c8565b9150509295509295509295565b600061581c8383615837565b60208301905092915050565b61583181615e10565b82525050565b61584081615dc8565b82525050565b61584f81615dc8565b82525050565b600061586082615d67565b61586a8185615d95565b935061587583615d57565b8060005b838110156158a657815161588d8882615810565b975061589883615d88565b925050600181019050615879565b5085935050505092915050565b6158bc81615dda565b82525050565b60006158cd82615d72565b6158d78185615da6565b93506158e7818560208601615e79565b6158f081615eae565b840191505092915050565b61590481615e22565b82525050565b600061591582615d7d565b61591f8185615db7565b935061592f818560208601615e79565b61593881615eae565b840191505092915050565b61594c81615e06565b82525050565b60006020820190506159676000830184615846565b92915050565b60006040820190506159826000830185615828565b61598f6020830184615846565b9392505050565b60006040820190506159ab6000830185615846565b6159b86020830184615846565b9392505050565b60006060820190506159d46000830186615846565b6159e16020830185615846565b6159ee6040830184615943565b949350505050565b6000604082019050615a0b6000830185615846565b8181036020830152615a1d81846158c2565b90509392505050565b6000604082019050615a3b6000830185615846565b615a486020830184615943565b9392505050565b6000602082019050615a6460008301846158b3565b92915050565b60006020820190508181036000830152615a8481846158c2565b905092915050565b6000602082019050615aa160008301846158fb565b92915050565b60006020820190508181036000830152615ac1818461590a565b905092915050565b6000602082019050615ade6000830184615943565b92915050565b6000604082019050615af96000830185615943565b615b066020830184615846565b9392505050565b6000604082019050615b226000830185615943565b615b2f6020830184615943565b9392505050565b600060a082019050615b4b6000830188615943565b615b586020830187615943565b8181036040830152615b6a8186615855565b9050615b796060830185615846565b615b866080830184615943565b9695505050505050565b6000606082019050615ba56000830186615943565b615bb26020830185615943565b615bbf6040830184615943565b949350505050565b600060a082019050615bdc6000830188615943565b615be96020830187615943565b615bf66040830186615943565b615c036060830185615943565b615c106080830184615943565b9695505050505050565b600060c082019050615c2f6000830189615943565b615c3c6020830188615943565b615c496040830187615943565b615c566060830186615943565b615c636080830185615943565b615c7060a0830184615943565b979650505050505050565b60008083356001602003843603038112615c9457600080fd5b80840192508235915067ffffffffffffffff821115615cb257600080fd5b602083019250602082023603831315615cca57600080fd5b509250929050565b600082356001604003833603038112615cea57600080fd5b80830191505092915050565b6000604051905081810181811067ffffffffffffffff82111715615d1d57615d1c615eac565b5b8060405250919050565b600067ffffffffffffffff821115615d4257615d41615eac565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615dd382615de6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000615e1b82615e46565b9050919050565b6000615e2d82615e34565b9050919050565b6000615e3f82615de6565b9050919050565b6000615e5182615e58565b9050919050565b6000615e6382615de6565b9050919050565b82818337600083830152505050565b60005b83811015615e97578082015181840152602081019050615e7c565b83811115615ea6576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b615ec881615dc8565b8114615ed357600080fd5b50565b615edf81615dda565b8114615eea57600080fd5b50565b615ef681615e06565b8114615f0157600080fd5b5056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212205d052da7a2ecf9c00a8cbe7845c6e041ce78aa14564e8991e319b5b7517faa6464736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7760806040523480156200001157600080fd5b506040516200410d3803806200410d833981810160405260408110156200003757600080fd5b8101908080519060200190929190805190602001909291905050506001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015620000c55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090620001a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001695780820151818401526020810190506200014c565b50505050905090810190601f168015620001975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f93f515b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025057600080fd5b505afa15801562000265573d6000803e3d6000fd5b505050506040513d60208110156200027c57600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050613ded80620003206000396000f3fe60806040526004361061019c5760003560e01c8063ad5c4648116100ec578063d06ca61f1161008a578063f305d71911610064578063f305d719146112cc578063f887ea401461137a578063f93f515b146113bb578063fb3bdb41146113fc5761019c565b8063d06ca61f1461101f578063ded9382a14611104578063e8e33700146111e65761019c565b8063b6f9de95116100c6578063b6f9de9514610e1c578063baa2abde14610ec9578063c12c21c014610f9d578063c45a015514610fde5761019c565b8063ad5c464814610ccb578063ad615dec14610d0c578063af2979eb14610d6f5761019c565b80634a25d94a11610159578063791ac94711610133578063791ac947146109895780637ff36ab514610a4d57806385f8c25914610b4f5780638803dbee14610bb25761019c565b80634a25d94a146106d15780635b0d5984146107ea5780635c11d795146108c55761019c565b806302751cec146101a1578063054d50d41461025557806318cbafe5146102b85780631f00ca74146103d15780632195995c146104b657806338ed1739146105b8575b600080fd5b3480156101ad57600080fd5b50610238600480360360c08110156101c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114fe565b604051808381526020018281526020019250505060405180910390f35b34801561026157600080fd5b506102a26004803603606081101561027857600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506115d8565b6040518082815260200191505060405180910390f35b3480156102c457600080fd5b5061037a600480360360a08110156102db57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561030c57600080fd5b82018360208201111561031e57600080fd5b8035906020019184602083028401116401000000008311171561034057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103bd5780820151818401526020810190506103a2565b505050509050019250505060405180910390f35b3480156103dd57600080fd5b5061045f600480360360408110156103f457600080fd5b81019080803590602001909291908035906020019064010000000081111561041b57600080fd5b82018360208201111561042d57600080fd5b8035906020019184602083028401116401000000008311171561044f57600080fd5b909192939192939050505061177a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104a2578082015181840152602081019050610487565b505050509050019250505060405180910390f35b3480156104c257600080fd5b5061059b60048036036101608110156104da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611904565b604051808381526020018281526020019250505060405180910390f35b3480156105c457600080fd5b5061067a600480360360a08110156105db57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561060c57600080fd5b82018360208201111561061e57600080fd5b8035906020019184602083028401116401000000008311171561064057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119de565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106bd5780820151818401526020810190506106a2565b505050509050019250505060405180910390f35b3480156106dd57600080fd5b50610793600480360360a08110156106f457600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561072557600080fd5b82018360208201111561073757600080fd5b8035906020019184602083028401116401000000008311171561075957600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612401565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107d65780820151818401526020810190506107bb565b505050509050019250505060405180910390f35b3480156107f657600080fd5b506108af600480360361014081101561080e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506124da565b6040518082815260200191505060405180910390f35b3480156108d157600080fd5b50610987600480360360a08110156108e857600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561091957600080fd5b82018360208201111561092b57600080fd5b8035906020019184602083028401116401000000008311171561094d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125b3565b005b34801561099557600080fd5b50610a4b600480360360a08110156109ac57600080fd5b810190808035906020019092919080359060200190929190803590602001906401000000008111156109dd57600080fd5b8201836020820111156109ef57600080fd5b80359060200191846020830284011164010000000083111715610a1157600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061268a565b005b610af860048036036080811015610a6357600080fd5b810190808035906020019092919080359060200190640100000000811115610a8a57600080fd5b820183602082011115610a9c57600080fd5b80359060200191846020830284011164010000000083111715610abe57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612761565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610b3b578082015181840152602081019050610b20565b505050509050019250505060405180910390f35b348015610b5b57600080fd5b50610b9c60048036036060811015610b7257600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061283a565b6040518082815260200191505060405180910390f35b348015610bbe57600080fd5b50610c74600480360360a0811015610bd557600080fd5b81019080803590602001909291908035906020019092919080359060200190640100000000811115610c0657600080fd5b820183602082011115610c1857600080fd5b80359060200191846020830284011164010000000083111715610c3a57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612903565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610cb7578082015181840152602081019050610c9c565b505050509050019250505060405180910390f35b348015610cd757600080fd5b50610ce0613326565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d1857600080fd5b50610d5960048036036060811015610d2f57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506133d0565b6040518082815260200191505060405180910390f35b348015610d7b57600080fd5b50610e06600480360360c0811015610d9257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613499565b6040518082815260200191505060405180910390f35b610ec760048036036080811015610e3257600080fd5b810190808035906020019092919080359060200190640100000000811115610e5957600080fd5b820183602082011115610e6b57600080fd5b80359060200191846020830284011164010000000083111715610e8d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613572565b005b348015610ed557600080fd5b50610f80600480360360e0811015610eec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613649565b604051808381526020018281526020019250505060405180910390f35b348015610fa957600080fd5b50610fb2613723565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fea57600080fd5b50610ff3613749565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561102b57600080fd5b506110ad6004803603604081101561104257600080fd5b81019080803590602001909291908035906020019064010000000081111561106957600080fd5b82018360208201111561107b57600080fd5b8035906020019184602083028401116401000000008311171561109d57600080fd5b90919293919293905050506137f3565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156110f05780820151818401526020810190506110d5565b505050509050019250505060405180910390f35b34801561111057600080fd5b506111c9600480360361014081101561112857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061397d565b604051808381526020018281526020019250505060405180910390f35b3480156111f257600080fd5b506112a8600480360361010081101561120a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613a57565b60405180848152602001838152602001828152602001935050505060405180910390f35b611356600480360360c08110156112e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b33565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561138657600080fd5b5061138f613c0f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156113c757600080fd5b506113d0613c35565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6114a76004803603608081101561141257600080fd5b81019080803590602001909291908035906020019064010000000081111561143957600080fd5b82018360208201111561144b57600080fd5b8035906020019184602083028401116401000000008311171561146d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613c5b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156114ea5780820151818401526020810190506114cf565b505050509050019250505060405180910390f35b6000806040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561159d578082015181840152602081019050611582565b50505050905090810190601f1680156115ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663054d50d48585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561165d57600080fd5b505afa158015611671573d6000803e3d6000fd5b505050506040513d602081101561168757600080fd5b810190808051906020019092919050505090509392505050565b60606040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561173f578082015181840152602081019050611724565b50505050905090810190601f16801561176c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca748585856040518463ffffffff1660e01b815260040180848152602001806020018281038252848482818152602001925060200280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561182657600080fd5b505afa15801561183a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561186457600080fd5b810190808051604051939291908464010000000082111561188457600080fd5b8382019150602082018581111561189a57600080fd5b82518660208202830111640100000000821117156118b757600080fd5b8083526020830192505050908051906020019060200280838360005b838110156118ee5780820151818401526020810190506118d3565b5050505090500160405250505090509392505050565b6000806040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119a3578082015181840152602081019050611988565b50505050905090810190601f1680156119d05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b606060026000541415611a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e958b704336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611aec57600080fd5b505afa158015611b00573d6000803e3d6000fd5b505050506040513d6020811015611b1657600080fd5b81019080805190602001909291905050509050600086866000818110611b3857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506000878760018a8a905003818110611b6b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663579122ab84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015611c7357600080fd5b505af1158015611c87573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cf457600080fd5b505afa158015611d08573d6000803e3d6000fd5b505050506040513d6020811015611d1e57600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d9a57600080fd5b505afa158015611dae573d6000803e3d6000fd5b505050506040513d6020811015611dc457600080fd5b8101908080519060200190929190505050905060006338ed173960e01b8d8d8d8d8a8d60405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ce4074a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611fa0578082015181840152602081019050611f85565b50505050905090810190601f168015611fcd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561202c57600080fd5b810190808051604051939291908464010000000082111561204c57600080fd5b8382019150602082018581111561206257600080fd5b825186600182028301116401000000008211171561207f57600080fd5b8083526020830192505050908051906020019080838360005b838110156120b3578082015181840152602081019050612098565b50505050905090810190601f1680156120e05780820380516001836020036101000a031916815260200191505b5060405250505080602001905160208110156120fb57600080fd5b810190808051604051939291908464010000000082111561211b57600080fd5b8382019150602082018581111561213157600080fd5b825186602082028301116401000000008211171561214e57600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561218557808201518184015260208101905061216a565b505050509050016040525050509650600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1c8ef0d8787876122898a73ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561223f57600080fd5b505afa158015612253573d6000803e3d6000fd5b505050506040513d602081101561226957600080fd5b810190808051906020019092919050505089613d3490919063ffffffff16565b61233d888b73ffffffffffffffffffffffffffffffffffffffff166370a082318f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122f457600080fd5b505afa158015612308573d6000803e3d6000fd5b505050506040513d602081101561231e57600080fd5b8101908080519060200190929190505050613d3490919063ffffffff16565b6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b1580156123d157600080fd5b505af11580156123e5573d6000803e3d6000fd5b5050505050505050505060016000819055509695505050505050565b60606040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561249f578082015181840152602081019050612484565b50505050905090810190601f1680156124cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60006040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561257857808201518184015260208101905061255d565b50505050905090810190601f1680156125a55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561264f578082015181840152602081019050612634565b50505050905090810190601f16801561267c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561272657808201518184015260208101905061270b565b50505050905090810190601f1680156127535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60606040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127ff5780820151818401526020810190506127e4565b50505050905090810190601f16801561282c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385f8c2598585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b1580156128bf57600080fd5b505afa1580156128d3573d6000803e3d6000fd5b505050506040513d60208110156128e957600080fd5b810190808051906020019092919050505090509392505050565b60606002600054141561297e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e958b704336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612a1157600080fd5b505afa158015612a25573d6000803e3d6000fd5b505050506040513d6020811015612a3b57600080fd5b81019080805190602001909291905050509050600086866000818110612a5d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1690506000878760018a8a905003818110612a9057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663579122ab84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015612b9857600080fd5b505af1158015612bac573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c1957600080fd5b505afa158015612c2d573d6000803e3d6000fd5b505050506040513d6020811015612c4357600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612cbf57600080fd5b505afa158015612cd3573d6000803e3d6000fd5b505050506040513d6020811015612ce957600080fd5b810190808051906020019092919050505090506000638803dbee60e01b8d8d8d8d8a8d60405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ce4074a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ec5578082015181840152602081019050612eaa565b50505050905090810190601f168015612ef25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015612f1357600080fd5b505af1158015612f27573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612f5157600080fd5b8101908080516040519392919084640100000000821115612f7157600080fd5b83820191506020820185811115612f8757600080fd5b8251866001820283011164010000000082111715612fa457600080fd5b8083526020830192505050908051906020019080838360005b83811015612fd8578082015181840152602081019050612fbd565b50505050905090810190601f1680156130055780820380516001836020036101000a031916815260200191505b50604052505050806020019051602081101561302057600080fd5b810190808051604051939291908464010000000082111561304057600080fd5b8382019150602082018581111561305657600080fd5b825186602082028301116401000000008211171561307357600080fd5b8083526020830192505050908051906020019060200280838360005b838110156130aa57808201518184015260208101905061308f565b505050509050016040525050509650600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1c8ef0d8787876131ae8a73ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561316457600080fd5b505afa158015613178573d6000803e3d6000fd5b505050506040513d602081101561318e57600080fd5b810190808051906020019092919050505089613d3490919063ffffffff16565b613262888b73ffffffffffffffffffffffffffffffffffffffff166370a082318f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561321957600080fd5b505afa15801561322d573d6000803e3d6000fd5b505050506040513d602081101561324357600080fd5b8101908080519060200190929190505050613d3490919063ffffffff16565b6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b5050505050505050505060016000819055509695505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561339057600080fd5b505afa1580156133a4573d6000803e3d6000fd5b505050506040513d60208110156133ba57600080fd5b8101908080519060200190929190505050905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad615dec8585856040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561345557600080fd5b505afa158015613469573d6000803e3d6000fd5b505050506040513d602081101561347f57600080fd5b810190808051906020019092919050505090509392505050565b60006040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561353757808201518184015260208101905061351c565b50505050905090810190601f1680156135645780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561360e5780820151818401526020810190506135f3565b50505050905090810190601f16801561363b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000806040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136e85780820151818401526020810190506136cd565b50505050905090810190601f1680156137155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156137b357600080fd5b505afa1580156137c7573d6000803e3d6000fd5b505050506040513d60208110156137dd57600080fd5b8101908080519060200190929190505050905090565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f8585856040518463ffffffff1660e01b815260040180848152602001806020018281038252848482818152602001925060200280828437600081840152601f19601f82011690508083019250505094505050505060006040518083038186803b15801561389f57600080fd5b505afa1580156138b3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156138dd57600080fd5b81019080805160405193929190846401000000008211156138fd57600080fd5b8382019150602082018581111561391357600080fd5b825186602082028301116401000000008211171561393057600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561396757808201518184015260208101905061394c565b5050505090500160405250505090509392505050565b6000806040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a1c578082015181840152602081019050613a01565b50505050905090810190601f168015613a495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60008060006040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613af8578082015181840152602081019050613add565b50505050905090810190601f168015613b255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60008060006040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613bd4578082015181840152602081019050613bb9565b50505050905090810190601f168015613c015780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613cf9578082015181840152602081019050613cde565b50505050905090810190601f168015613d265780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600082821115613dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b81830390509291505056fea26469706673582212200352b2490ad54d0a148a31fdf868b583bc2ee0efbed64c8f56cab18ca0cb073464736f6c6343000706003360806040523480156200001157600080fd5b5060405162003218380380620032188339818101604052810190620000379190620002c1565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000124576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200011b91906200036f565b60405180910390fd5b5081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f93f515b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001cf57600080fd5b505afa158015620001e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020a919062000302565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000472565b600081519050620002a4816200043e565b92915050565b600081519050620002bb8162000458565b92915050565b60008060408385031215620002d557600080fd5b6000620002e58582860162000293565b9250506020620002f88582860162000293565b9150509250929050565b6000602082840312156200031557600080fd5b60006200032584828501620002aa565b91505092915050565b60006200033b8262000393565b6200034781856200039e565b935062000359818560208601620003f7565b62000364816200042d565b840191505092915050565b600060208201905081810360008301526200038b81846200032e565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000620003bc82620003d7565b9050919050565b6000620003d082620003af565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b8381101562000417578082015181840152602081019050620003fa565b8381111562000427576000848401525b50505050565b6000601f19601f8301169050919050565b6200044981620003af565b81146200045557600080fd5b50565b6200046381620003c3565b81146200046f57600080fd5b50565b612d9680620004826000396000f3fe6080604052600436106100705760003560e01c8063db3e21981161004e578063db3e219814610100578063f28c049814610130578063f887ea4014610160578063f93f515b1461018b57610070565b8063414bf38914610075578063c04b8d59146100a5578063c12c21c0146100d5575b600080fd5b61008f600480360381019061008a91906124d5565b6101b6565b60405161009c9190612ac0565b60405180910390f35b6100bf60048036038101906100ba9190612494565b61088a565b6040516100cc9190612ac0565b60405180910390f35b3480156100e157600080fd5b506100ea610f75565b6040516100f79190612a29565b60405180910390f35b61011a6004803603810190610115919061256a565b610f9b565b6040516101279190612ac0565b60405180910390f35b61014a60048036038101906101459190612529565b61166f565b6040516101579190612ac0565b60405180910390f35b34801561016c57600080fd5b50610175611d5a565b6040516101829190612910565b60405180910390f35b34801561019757600080fd5b506101a0611d80565b6040516101ad9190612a0e565b60405180910390f35b600060026000541415610231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e958b704336040518263ffffffff1660e01b8152600401610296919061292b565b60206040518083038186803b1580156102ae57600080fd5b505afa1580156102c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e6919061242a565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663579122ab82600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600001602081019061035d9190612401565b6040518463ffffffff1660e01b815260040161037b93929190612984565b600060405180830381600087803b15801561039557600080fd5b505af11580156103a9573d6000803e3d6000fd5b505050506000838036038101906103c091906124ff565b905081816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600063414bf38960e01b826040516024016104159190612a66565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000826000015173ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016104b39190612910565b60206040518083038186803b1580156104cb57600080fd5b505afa1580156104df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050391906125be565b90506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016105449190612910565b60206040518083038186803b15801561055c57600080fd5b505afa158015610570573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059491906125be565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ce4074a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b815260040161061793929190612946565b600060405180830381600087803b15801561063157600080fd5b505af1158015610645573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061066e9190612453565b80602001905181019061068191906125be565b9550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1c8ef0d868960000160208101906106d59190612401565b8a60200160208101906106e89190612401565b610787896000015173ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b81526004016107289190612910565b60206040518083038186803b15801561074057600080fd5b505afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077891906125be565b88611da690919063ffffffff16565b610826878b6020015173ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b81526004016107c89190612910565b60206040518083038186803b1580156107e057600080fd5b505afa1580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081891906125be565b611da690919063ffffffff16565b6040518663ffffffff1660e01b81526004016108469594939291906129bb565b600060405180830381600087803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b5050505050505050506001600081905550919050565b600060026000541415610905576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e958b704336040518263ffffffff1660e01b815260040161096a919061292b565b60206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba919061242a565b9050600080610a1a8580600001906109d29190612adb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611e29565b91509150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663579122ab84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401610a9f93929190612984565b600060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b50505050600085610add90612c65565b905083816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008373ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401610b529190612910565b60206040518083038186803b158015610b6a57600080fd5b505afa158015610b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba291906125be565b905060008373ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401610bdf9190612910565b60206040518083038186803b158015610bf757600080fd5b505afa158015610c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2f91906125be565b9050600063c04b8d5960e01b84604051602401610c4c9190612a44565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ce4074a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610d2c93929190612946565b600060405180830381600087803b158015610d4657600080fd5b505af1158015610d5a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610d839190612453565b806020019051810190610d9691906125be565b975050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1c8ef0d878787610e758a73ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401610e169190612910565b60206040518083038186803b158015610e2e57600080fd5b505afa158015610e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6691906125be565b88611da690919063ffffffff16565b610f10878b73ffffffffffffffffffffffffffffffffffffffff166370a082318f6040518263ffffffff1660e01b8152600401610eb29190612910565b60206040518083038186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0291906125be565b611da690919063ffffffff16565b6040518663ffffffff1660e01b8152600401610f309594939291906129bb565b600060405180830381600087803b158015610f4a57600080fd5b505af1158015610f5e573d6000803e3d6000fd5b505050505050505050506001600081905550919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060026000541415611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e958b704336040518263ffffffff1660e01b815260040161107b919061292b565b60206040518083038186803b15801561109357600080fd5b505afa1580156110a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cb919061242a565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663579122ab82600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660000160208101906111429190612401565b6040518463ffffffff1660e01b815260040161116093929190612984565b600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b505050506000838036038101906111a59190612594565b905081816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600063db3e219860e01b826040516024016111fa9190612aa4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000826000015173ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016112989190612910565b60206040518083038186803b1580156112b057600080fd5b505afa1580156112c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e891906125be565b90506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016113299190612910565b60206040518083038186803b15801561134157600080fd5b505afa158015611355573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137991906125be565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ce4074a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b81526004016113fc93929190612946565b600060405180830381600087803b15801561141657600080fd5b505af115801561142a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114539190612453565b80602001905181019061146691906125be565b9550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1c8ef0d868960000160208101906114ba9190612401565b8a60200160208101906114cd9190612401565b61156c896000015173ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b815260040161150d9190612910565b60206040518083038186803b15801561152557600080fd5b505afa158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d91906125be565b88611da690919063ffffffff16565b61160b878b6020015173ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b81526004016115ad9190612910565b60206040518083038186803b1580156115c557600080fd5b505afa1580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd91906125be565b611da690919063ffffffff16565b6040518663ffffffff1660e01b815260040161162b9594939291906129bb565b600060405180830381600087803b15801561164557600080fd5b505af1158015611659573d6000803e3d6000fd5b5050505050505050506001600081905550919050565b6000600260005414156116ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e958b704336040518263ffffffff1660e01b815260040161174f919061292b565b60206040518083038186803b15801561176757600080fd5b505afa15801561177b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179f919061242a565b90506000806117ff8580600001906117b79190612adb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611e29565b91509150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663579122ab84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161188493929190612984565b600060405180830381600087803b15801561189e57600080fd5b505af11580156118b2573d6000803e3d6000fd5b505050506000856118c290612c78565b905083816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016119379190612910565b60206040518083038186803b15801561194f57600080fd5b505afa158015611963573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198791906125be565b905060008473ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016119c49190612910565b60206040518083038186803b1580156119dc57600080fd5b505afa1580156119f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1491906125be565b9050600063f28c049860e01b84604051602401611a319190612a82565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ce4074a33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401611b1193929190612946565b600060405180830381600087803b158015611b2b57600080fd5b505af1158015611b3f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b689190612453565b806020019051810190611b7b91906125be565b975050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1c8ef0d878688611c5a8973ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401611bfb9190612910565b60206040518083038186803b158015611c1357600080fd5b505afa158015611c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4b91906125be565b88611da690919063ffffffff16565b611cf5878c73ffffffffffffffffffffffffffffffffffffffff166370a082318f6040518263ffffffff1660e01b8152600401611c979190612910565b60206040518083038186803b158015611caf57600080fd5b505afa158015611cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce791906125be565b611da690919063ffffffff16565b6040518663ffffffff1660e01b8152600401611d159594939291906129bb565b600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b505050505050505050506001600081905550919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115611e1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600080611e40600084611e6090919063ffffffff16565b9150611e59601484510384611e6090919063ffffffff16565b9050915091565b600081601483011015611edb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f746f416464726573735f6f766572666c6f77000000000000000000000000000081525060200191505060405180910390fd5b6014820183511015611f55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f746f416464726573735f6f75744f66426f756e6473000000000000000000000081525060200191505060405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6000611f8c611f8784612b63565b612b32565b905082815260208101848484011115611fa457600080fd5b611faf848285612caf565b509392505050565b6000611fca611fc584612b63565b612b32565b905082815260208101848484011115611fe257600080fd5b611fed848285612cbe565b509392505050565b60008135905061200481612d04565b92915050565b60008151905061201981612d04565b92915050565b600082601f83011261203057600080fd5b8135612040848260208601611f79565b91505092915050565b600082601f83011261205a57600080fd5b815161206a848260208601611fb7565b91505092915050565b600060a0828403121561208557600080fd5b81905092915050565b600060a082840312156120a057600080fd5b6120aa60a0612b32565b9050600082013567ffffffffffffffff8111156120c657600080fd5b6120d28482850161201f565b60008301525060206120e684828501611ff5565b60208301525060406120fa848285016123d7565b604083015250606061210e848285016123d7565b6060830152506080612122848285016123d7565b60808301525092915050565b6000610100828403121561214157600080fd5b81905092915050565b6000610100828403121561215d57600080fd5b612168610100612b32565b9050600061217884828501611ff5565b600083015250602061218c84828501611ff5565b60208301525060406121a0848285016123c2565b60408301525060606121b484828501611ff5565b60608301525060806121c8848285016123d7565b60808301525060a06121dc848285016123d7565b60a08301525060c06121f0848285016123d7565b60c08301525060e0612204848285016123ad565b60e08301525092915050565b600060a0828403121561222257600080fd5b81905092915050565b600060a0828403121561223d57600080fd5b61224760a0612b32565b9050600082013567ffffffffffffffff81111561226357600080fd5b61226f8482850161201f565b600083015250602061228384828501611ff5565b6020830152506040612297848285016123d7565b60408301525060606122ab848285016123d7565b60608301525060806122bf848285016123d7565b60808301525092915050565b600061010082840312156122de57600080fd5b81905092915050565b600061010082840312156122fa57600080fd5b612305610100612b32565b9050600061231584828501611ff5565b600083015250602061232984828501611ff5565b602083015250604061233d848285016123c2565b604083015250606061235184828501611ff5565b6060830152506080612365848285016123d7565b60808301525060a0612379848285016123d7565b60a08301525060c061238d848285016123d7565b60c08301525060e06123a1848285016123ad565b60e08301525092915050565b6000813590506123bc81612d1b565b92915050565b6000813590506123d181612d32565b92915050565b6000813590506123e681612d49565b92915050565b6000815190506123fb81612d49565b92915050565b60006020828403121561241357600080fd5b600061242184828501611ff5565b91505092915050565b60006020828403121561243c57600080fd5b600061244a8482850161200a565b91505092915050565b60006020828403121561246557600080fd5b600082015167ffffffffffffffff81111561247f57600080fd5b61248b84828501612049565b91505092915050565b6000602082840312156124a657600080fd5b600082013567ffffffffffffffff8111156124c057600080fd5b6124cc84828501612073565b91505092915050565b600061010082840312156124e857600080fd5b60006124f68482850161212e565b91505092915050565b6000610100828403121561251257600080fd5b60006125208482850161214a565b91505092915050565b60006020828403121561253b57600080fd5b600082013567ffffffffffffffff81111561255557600080fd5b61256184828501612210565b91505092915050565b6000610100828403121561257d57600080fd5b600061258b848285016122cb565b91505092915050565b600061010082840312156125a757600080fd5b60006125b5848285016122e7565b91505092915050565b6000602082840312156125d057600080fd5b60006125de848285016123ec565b91505092915050565b6125f081612c0b565b82525050565b6125ff81612bc0565b82525050565b61260e81612bc0565b82525050565b600061261f82612b93565b6126298185612b9e565b9350612639818560208601612cbe565b61264281612cf3565b840191505092915050565b600061265882612b93565b6126628185612baf565b9350612672818560208601612cbe565b61267b81612cf3565b840191505092915050565b61268f81612c1d565b82525050565b61269e81612c41565b82525050565b600060a08301600083015184820360008601526126c18282612614565b91505060208301516126d660208601826125f6565b5060408301516126e960408601826128f2565b5060608301516126fc60608601826128f2565b50608083015161270f60808601826128f2565b508091505092915050565b6101008201600082015161273160008501826125f6565b50602082015161274460208501826125f6565b50604082015161275760408501826128e3565b50606082015161276a60608501826125f6565b50608082015161277d60808501826128f2565b5060a082015161279060a08501826128f2565b5060c08201516127a360c08501826128f2565b5060e08201516127b660e08501826128d4565b50505050565b600060a08301600083015184820360008601526127d98282612614565b91505060208301516127ee60208601826125f6565b50604083015161280160408601826128f2565b50606083015161281460608601826128f2565b50608083015161282760808601826128f2565b508091505092915050565b6101008201600082015161284960008501826125f6565b50602082015161285c60208501826125f6565b50604082015161286f60408501826128e3565b50606082015161288260608501826125f6565b50608082015161289560808501826128f2565b5060a08201516128a860a08501826128f2565b5060c08201516128bb60c08501826128f2565b5060e08201516128ce60e08501826128d4565b50505050565b6128dd81612bd2565b82525050565b6128ec81612bf2565b82525050565b6128fb81612c01565b82525050565b61290a81612c01565b82525050565b60006020820190506129256000830184612605565b92915050565b600060208201905061294060008301846125e7565b92915050565b600060608201905061295b60008301866125e7565b6129686020830185612605565b818103604083015261297a818461264d565b9050949350505050565b60006060820190506129996000830186612605565b6129a66020830185612605565b6129b36040830184612605565b949350505050565b600060a0820190506129d06000830188612605565b6129dd6020830187612605565b6129ea6040830186612605565b6129f76060830185612901565b612a046080830184612901565b9695505050505050565b6000602082019050612a236000830184612686565b92915050565b6000602082019050612a3e6000830184612695565b92915050565b60006020820190508181036000830152612a5e81846126a4565b905092915050565b600061010082019050612a7c600083018461271a565b92915050565b60006020820190508181036000830152612a9c81846127bc565b905092915050565b600061010082019050612aba6000830184612832565b92915050565b6000602082019050612ad56000830184612901565b92915050565b60008083356001602003843603038112612af457600080fd5b80840192508235915067ffffffffffffffff821115612b1257600080fd5b602083019250600182023603831315612b2a57600080fd5b509250929050565b6000604051905081810181811067ffffffffffffffff82111715612b5957612b58612cf1565b5b8060405250919050565b600067ffffffffffffffff821115612b7e57612b7d612cf1565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612bcb82612bd2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b6000612c1682612c8b565b9050919050565b6000612c2882612c2f565b9050919050565b6000612c3a82612bd2565b9050919050565b6000612c4c82612c53565b9050919050565b6000612c5e82612bd2565b9050919050565b6000612c71368361208e565b9050919050565b6000612c84368361222b565b9050919050565b6000612c9682612c9d565b9050919050565b6000612ca882612bd2565b9050919050565b82818337600083830152505050565b60005b83811015612cdc578082015181840152602081019050612cc1565b83811115612ceb576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b612d0d81612bc0565b8114612d1857600080fd5b50565b612d2481612bd2565b8114612d2f57600080fd5b50565b612d3b81612bf2565b8114612d4657600080fd5b50565b612d5281612c01565b8114612d5d57600080fd5b5056fea264697066735822122053493504c0673b2e9851202fd148a5e789fdc096fcd804b0b782e75b2e8f75ce64736f6c63430007060033608060405234801561001057600080fd5b5060405161154d38038061154d8339818101604052604081101561003357600080fd5b8101908080519060200190929190805190602001909291905050506001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156100c05750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509061019c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610161578082015181840152602081019050610146565b50505050905090810190601f16801561018e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f93f515b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561024657600080fd5b505afa15801561025a573d6000803e3d6000fd5b505050506040513d602081101561027057600080fd5b8101908080519060200190929190505050600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061123a806103136000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6417ed611610066578063a6417ed6146101d6578063bb7b8b8014610228578063c12c21c014610246578063c66106571461027a578063f93f515b146102d257610093565b806307211ef714610098578063218751b2146100f45780633df02124146101285780635e0d443f1461017a575b600080fd5b6100de600480360360608110156100ae57600080fd5b810190808035600f0b90602001909291908035600f0b906020019092919080359060200190929190505050610306565b6040518082815260200191505060405180910390f35b6100fc6103d5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101786004803603608081101561013e57600080fd5b810190808035600f0b90602001909291908035600f0b906020019092919080359060200190929190803590602001909291905050506103fb565b005b6101c06004803603606081101561019057600080fd5b810190808035600f0b90602001909291908035600f0b906020019092919080359060200190929190505050610e2e565b6040518082815260200191505060405180910390f35b610226600480360360808110156101ec57600080fd5b810190808035600f0b90602001909291908035600f0b90602001909291908035906020019092919080359060200190929190505050610efd565b005b610230610fd4565b6040518082815260200191505060405180910390f35b61024e61107e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a66004803603602081101561029057600080fd5b81019080803590602001909291905050506110a4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102da61115b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307211ef78585856040518463ffffffff1660e01b81526004018084600f0b815260200183600f0b8152602001828152602001935050505060206040518083038186803b15801561039157600080fd5b505afa1580156103a5573d6000803e3d6000fd5b505050506040513d60208110156103bb57600080fd5b810190808051906020019092919050505090509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026000541415610474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e958b704336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561050757600080fd5b505afa15801561051b573d6000803e3d6000fd5b505050506040513d602081101561053157600080fd5b810190808051906020019092919050505090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c661065787600f0b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156105bc57600080fd5b505afa1580156105d0573d6000803e3d6000fd5b505050506040513d60208110156105e657600080fd5b810190808051906020019092919050505090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c661065787600f0b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561067157600080fd5b505afa158015610685573d6000803e3d6000fd5b505050506040513d602081101561069b57600080fd5b81019080805190602001909291905050509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663579122ab84600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15801561079757600080fd5b505af11580156107ab573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561081857600080fd5b505afa15801561082c573d6000803e3d6000fd5b505050506040513d602081101561084257600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108be57600080fd5b505afa1580156108d2573d6000803e3d6000fd5b505050506040513d60208110156108e857600080fd5b810190808051906020019092919050505090506000633df0212460e01b8a8a8a8a6040516024018085600f0b815260200184600f0b8152602001838152602001828152602001945050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ce4074a33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a7d578082015181840152602081019050610a62565b50505050905090810190601f168015610aaa5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015610b0957600080fd5b8101908080516040519392919084640100000000821115610b2957600080fd5b83820191506020820185811115610b3f57600080fd5b8251866001820283011164010000000082111715610b5c57600080fd5b8083526020830192505050908051906020019080838360005b83811015610b90578082015181840152602081019050610b75565b50505050905090810190601f168015610bbd5780820380516001836020036101000a031916815260200191505b5060405250505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1c8ef0d878787610cba8a73ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d6020811015610c9a57600080fd5b81019080805190602001909291905050508961118190919063ffffffff16565b610d6e888b73ffffffffffffffffffffffffffffffffffffffff166370a082318f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d2557600080fd5b505afa158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b810190808051906020019092919050505061118190919063ffffffff16565b6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b158015610e0257600080fd5b505af1158015610e16573d6000803e3d6000fd5b50505050505050505050600160008190555050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635e0d443f8585856040518463ffffffff1660e01b81526004018084600f0b815260200183600f0b8152602001828152602001935050505060206040518083038186803b158015610eb957600080fd5b505afa158015610ecd573d6000803e3d6000fd5b505050506040513d6020811015610ee357600080fd5b810190808051906020019092919050505090509392505050565b6040518060400160405280600281526020017f4e490000000000000000000000000000000000000000000000000000000000008152506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f99578082015181840152602081019050610f7e565b50505050905090810190601f168015610fc65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb7b8b806040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d602081101561106857600080fd5b8101908080519060200190929190505050905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6610657836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561111957600080fd5b505afa15801561112d573d6000803e3d6000fd5b505050506040513d602081101561114357600080fd5b81019080805190602001909291905050509050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000828211156111f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b81830390509291505056fea26469706673582212209ca58f486ff786218217be7d428585928fbd6748b920bb528580ff4b19bffd8464736f6c63430007060033";
|
|
221
|
+
var Deployer__factory = /** @class */ (function (_super) {
|
|
222
|
+
__extends(Deployer__factory, _super);
|
|
223
|
+
function Deployer__factory(signer) {
|
|
224
|
+
return _super.call(this, _abi, _bytecode, signer) || this;
|
|
225
|
+
}
|
|
226
|
+
Deployer__factory.prototype.deploy = function (opts, overrides) {
|
|
227
|
+
return _super.prototype.deploy.call(this, opts, overrides || {});
|
|
228
|
+
};
|
|
229
|
+
Deployer__factory.prototype.getDeployTransaction = function (opts, overrides) {
|
|
230
|
+
return _super.prototype.getDeployTransaction.call(this, opts, overrides || {});
|
|
231
|
+
};
|
|
232
|
+
Deployer__factory.prototype.attach = function (address) {
|
|
233
|
+
return _super.prototype.attach.call(this, address);
|
|
234
|
+
};
|
|
235
|
+
Deployer__factory.prototype.connect = function (signer) {
|
|
236
|
+
return _super.prototype.connect.call(this, signer);
|
|
237
|
+
};
|
|
238
|
+
Deployer__factory.createInterface = function () {
|
|
239
|
+
return new ethers_1.utils.Interface(_abi);
|
|
240
|
+
};
|
|
241
|
+
Deployer__factory.connect = function (address, signerOrProvider) {
|
|
242
|
+
return new ethers_1.Contract(address, _abi, signerOrProvider);
|
|
243
|
+
};
|
|
244
|
+
Deployer__factory.bytecode = _bytecode;
|
|
245
|
+
Deployer__factory.abi = _abi;
|
|
246
|
+
return Deployer__factory;
|
|
247
|
+
}(ethers_1.ContractFactory));
|
|
248
|
+
exports.Deployer__factory = Deployer__factory;
|