@gearbox-protocol/sdk 0.0.109 → 1.0.1-next.1
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/README.md +1 -0
- package/lib/apy/convexAPY.d.ts +9 -5
- package/lib/apy/convexAPY.js +35 -75
- package/lib/apy/curveAPY.d.ts +4 -0
- package/lib/apy/curveAPY.js +94 -0
- package/lib/apy/index.d.ts +6 -0
- package/lib/apy/index.js +20 -0
- package/lib/apy/lidoAPY.d.ts +1 -1
- package/lib/apy/lidoAPY.js +10 -10
- package/lib/apy/yearnAPY.d.ts +4 -0
- package/lib/apy/yearnAPY.js +90 -0
- package/lib/contracts/adapters.js +1 -1
- package/lib/contracts/contracts.d.ts +5 -5
- package/lib/contracts/contracts.js +66 -71
- package/lib/contracts/contractsRegister.js +3 -2
- package/lib/contracts/protocols.js +6 -6
- package/lib/core/constants.d.ts +3 -2
- package/lib/core/constants.js +6 -5
- package/lib/core/creditAccount.d.ts +4 -3
- package/lib/core/creditAccount.js +19 -12
- package/lib/core/creditManager.d.ts +3 -1
- package/lib/core/creditManager.js +25 -11
- package/lib/core/creditSession.d.ts +1 -1
- package/lib/core/creditSession.js +1 -1
- package/lib/core/errors.d.ts +1 -1
- package/lib/core/eventOrTx.d.ts +2 -2
- package/lib/core/eventOrTx.js +1 -1
- package/lib/core/events.d.ts +1 -1
- package/lib/core/events.js +32 -31
- package/lib/core/history.d.ts +2 -2
- package/lib/core/pool.js +5 -5
- package/lib/core/strategy.d.ts +5 -3
- package/lib/core/strategy.js +6 -4
- package/lib/core/tokenDistributor.js +1 -1
- package/lib/core/transactions.js +22 -22
- package/lib/index.d.ts +30 -30
- package/lib/index.js +38 -37
- package/lib/oracles/oracles.d.ts +5 -6
- package/lib/oracles/priceFeeds.d.ts +1 -1
- package/lib/oracles/priceFeeds.js +292 -194
- package/lib/pathfinder/contracts.js +4 -4
- package/lib/pathfinder/curveLP.d.ts +2 -2
- package/lib/pathfinder/curveLP.js +4 -4
- package/lib/pathfinder/path.d.ts +3 -3
- package/lib/pathfinder/path.js +7 -7
- package/lib/pathfinder/tradeTypes.d.ts +2 -2
- package/lib/pathfinder/yVault.d.ts +3 -3
- package/lib/pathfinder/yVault.js +5 -5
- package/lib/strategies/convex.js +13 -13
- package/lib/strategies/creditFacade.js +6 -6
- package/lib/strategies/curve.js +13 -13
- package/lib/strategies/lido.d.ts +1 -1
- package/lib/strategies/lido.js +3 -3
- package/lib/strategies/uniswapV2.js +3 -3
- package/lib/strategies/uniswapV3.js +6 -6
- package/lib/strategies/yearn.js +7 -7
- package/lib/tokens/connectors.js +1 -1
- package/lib/tokens/convex.d.ts +5 -2
- package/lib/tokens/convex.js +92 -66
- package/lib/tokens/curveLP.d.ts +2 -1
- package/lib/tokens/curveLP.js +41 -37
- package/lib/tokens/gear.d.ts +1 -1
- package/lib/tokens/gear.js +6 -6
- package/lib/tokens/normal.d.ts +1 -0
- package/lib/tokens/normal.js +181 -177
- package/lib/tokens/token.d.ts +10 -5
- package/lib/tokens/token.js +74 -65
- package/lib/tokens/tokenData.d.ts +1 -1
- package/lib/tokens/tokenData.js +6 -7
- package/lib/tokens/yearn.d.ts +2 -1
- package/lib/tokens/yearn.js +30 -26
- package/lib/utils/extracter.d.ts +11 -0
- package/lib/utils/extracter.js +19 -0
- package/lib/utils/formatter.js +19 -12
- package/lib/utils/mappers.d.ts +3 -3
- package/lib/utils/mappers.js +1 -1
- package/lib/utils/multicall.js +2 -2
- package/lib/utils/network.js +3 -3
- package/lib/utils/price.d.ts +8 -0
- package/lib/utils/price.js +26 -0
- package/lib/utils/repeater.js +6 -6
- package/package.json +30 -23
- package/.eslintignore +0 -5
- package/.eslintrc.js +0 -52
- package/.husky/pre-push +0 -4
- package/.idea/gearbox-sdk.iml +0 -12
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/.prettierrc +0 -10
- package/lib/core/price.d.ts +0 -2
- package/lib/core/price.js +0 -14
- package/lib/types/@chainlink/contracts/src/v0.6/index.d.ts +0 -2
- package/lib/types/@chainlink/contracts/src/v0.6/index.js +0 -2
- package/lib/types/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.d.ts +0 -146
- package/lib/types/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.js +0 -2
- package/lib/types/@chainlink/contracts/src/v0.6/interfaces/index.d.ts +0 -1
- package/lib/types/@chainlink/contracts/src/v0.6/interfaces/index.js +0 -2
- package/lib/types/contracts/integrations/lido/IstETH.d.ts +0 -154
- package/lib/types/contracts/integrations/lido/IstETH.js +0 -2
- package/lib/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeBalanceChecker.d.ts +0 -50
- package/lib/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeBalanceChecker.js +0 -2
- package/lib/types/contracts/pathfinder/Balances.sol/BalanceOps.d.ts +0 -27
- package/lib/types/contracts/pathfinder/Balances.sol/BalanceOps.js +0 -2
- package/lib/types/contracts/pathfinder/Balances.sol/index.d.ts +0 -1
- package/lib/types/contracts/pathfinder/Balances.sol/index.js +0 -2
- package/lib/types/contracts/pathfinder/NormalTokenPathFinder.sol/PathFinder.d.ts +0 -269
- package/lib/types/contracts/pathfinder/NormalTokenPathFinder.sol/PathFinder.js +0 -2
- package/lib/types/contracts/pathfinder/NormalTokenPathFinder.sol/index.d.ts +0 -1
- package/lib/types/contracts/pathfinder/NormalTokenPathFinder.sol/index.js +0 -2
- package/lib/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/VirtualBalanceWrapper.d.ts +0 -58
- package/lib/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/VirtualBalanceWrapper.js +0 -2
- package/lib/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderAdapterTest.d.ts +0 -528
- package/lib/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderAdapterTest.js +0 -2
- package/lib/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderAdapterTest.d.ts +0 -528
- package/lib/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderAdapterTest.js +0 -2
- package/lib/types/factories/@chainlink/contracts/src/v0.6/index.d.ts +0 -1
- package/lib/types/factories/@chainlink/contracts/src/v0.6/index.js +0 -30
- package/lib/types/factories/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface__factory.d.ts +0 -22
- package/lib/types/factories/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface__factory.js +0 -133
- package/lib/types/factories/@chainlink/contracts/src/v0.6/interfaces/index.d.ts +0 -1
- package/lib/types/factories/@chainlink/contracts/src/v0.6/interfaces/index.js +0 -8
- package/lib/types/factories/contracts/integrations/lido/IstETH__factory.d.ts +0 -35
- package/lib/types/factories/contracts/integrations/lido/IstETH__factory.js +0 -224
- package/lib/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeBalanceChecker__factory.d.ts +0 -18
- package/lib/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeBalanceChecker__factory.js +0 -40
- package/lib/types/factories/contracts/pathfinder/Balances.sol/BalanceOps__factory.d.ts +0 -28
- package/lib/types/factories/contracts/pathfinder/Balances.sol/BalanceOps__factory.js +0 -76
- package/lib/types/factories/contracts/pathfinder/Balances.sol/index.d.ts +0 -1
- package/lib/types/factories/contracts/pathfinder/Balances.sol/index.js +0 -8
- package/lib/types/factories/contracts/pathfinder/NormalTokenPathFinder.sol/PathFinder__factory.d.ts +0 -144
- package/lib/types/factories/contracts/pathfinder/NormalTokenPathFinder.sol/PathFinder__factory.js +0 -522
- package/lib/types/factories/contracts/pathfinder/NormalTokenPathFinder.sol/index.d.ts +0 -1
- package/lib/types/factories/contracts/pathfinder/NormalTokenPathFinder.sol/index.js +0 -8
- package/lib/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/VirtualBalanceWrapper__factory.d.ts +0 -34
- package/lib/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/VirtualBalanceWrapper__factory.js +0 -110
- package/lib/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderAdapterTest__factory.d.ts +0 -65
- package/lib/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderAdapterTest__factory.js +0 -775
- package/lib/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderAdapterTest__factory.d.ts +0 -65
- package/lib/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderAdapterTest__factory.js +0 -775
- package/lib/types/hardhat.d.ts +0 -2715
- package/src/abi/adapters/YearnV2.sol/YearnAdapter.dbg.json +0 -4
- package/src/abi/adapters/YearnV2.sol/YearnAdapter.json +0 -455
- package/src/abi/core/ACL.sol/ACL.dbg.json +0 -4
- package/src/abi/core/ACL.sol/ACL.json +0 -262
- package/src/abi/core/ACLTrait.sol/ACLTrait.dbg.json +0 -4
- package/src/abi/core/ACLTrait.sol/ACLTrait.json +0 -64
- package/src/abi/core/AccountMining.sol/AccountMining.dbg.json +0 -4
- package/src/abi/core/AccountMining.sol/AccountMining.json +0 -150
- package/src/abi/core/AddressProvider.sol/AddressProvider.dbg.json +0 -4
- package/src/abi/core/AddressProvider.sol/AddressProvider.json +0 -496
- package/src/abi/core/ContractsRegister.sol/ContractsRegister.dbg.json +0 -4
- package/src/abi/core/ContractsRegister.sol/ContractsRegister.json +0 -255
- package/src/abi/credit/LeverageActions.sol/LeveragedActions.dbg.json +0 -4
- package/src/abi/credit/LeverageActions.sol/LeveragedActions.json +0 -514
- package/src/abi/deployer/AdaptersDeployer.sol/AdaptersDeployer.dbg.json +0 -4
- package/src/abi/deployer/AdaptersDeployer.sol/AdaptersDeployer.json +0 -160
- package/src/abi/deployer/GenesisDeployer.sol/GenesisDeployer.dbg.json +0 -4
- package/src/abi/deployer/GenesisDeployer.sol/GenesisDeployer.json +0 -189
- package/src/abi/deployer/PoolDeployer.sol/PoolDeployer.dbg.json +0 -4
- package/src/abi/deployer/PoolDeployer.sol/PoolDeployer.json +0 -215
- package/src/abi/fuzzing/FuzzHarness.sol/FuzzHarness.dbg.json +0 -4
- package/src/abi/fuzzing/FuzzHarness.sol/FuzzHarness.json +0 -50
- package/src/abi/integrations/yearn/IYVault.sol/IYVault.dbg.json +0 -4
- package/src/abi/integrations/yearn/IYVault.sol/IYVault.json +0 -400
- package/src/abi/interfaces/IGearToken.sol/IGearToken.dbg.json +0 -4
- package/src/abi/interfaces/IGearToken.sol/IGearToken.json +0 -331
- package/src/abi/interfaces/IMerkleDistributor.sol/IMerkleDistributor.dbg.json +0 -4
- package/src/abi/interfaces/IMerkleDistributor.sol/IMerkleDistributor.json +0 -98
- package/src/abi/mocks/core/ACLTraitTest.sol/ACLTraitTest.dbg.json +0 -4
- package/src/abi/mocks/core/ACLTraitTest.sol/ACLTraitTest.json +0 -96
- package/src/abi/mocks/credit/ExecutorMock.sol/ExecutorMock.dbg.json +0 -4
- package/src/abi/mocks/credit/ExecutorMock.sol/ExecutorMock.json +0 -61
- package/src/abi/mocks/integrations/CurveMock.sol/CurveMock.dbg.json +0 -4
- package/src/abi/mocks/integrations/CurveMock.sol/CurveMock.json +0 -168
- package/src/abi/mocks/integrations/YearnMock.sol/YearnMock.dbg.json +0 -4
- package/src/abi/mocks/integrations/YearnMock.sol/YearnMock.json +0 -556
- package/src/abi/mocks/oracles/ChainlinkPriceFeedMock.sol/ChainlinkPriceFeedMock.dbg.json +0 -4
- package/src/abi/mocks/oracles/ChainlinkPriceFeedMock.sol/ChainlinkPriceFeedMock.json +0 -151
- package/src/abi/mocks/pool/CreditManagerMockForPoolTest.sol/CreditManagerMockForPoolTest.dbg.json +0 -4
- package/src/abi/mocks/pool/CreditManagerMockForPoolTest.sol/CreditManagerMockForPoolTest.json +0 -89
- package/src/abi/mocks/tokens/ERC20Blocking.sol/ERC20BlockingMock.dbg.json +0 -4
- package/src/abi/mocks/tokens/ERC20Blocking.sol/ERC20BlockingMock.json +0 -387
- package/src/abi/mocks/tokens/ERC20Fee.sol/TokenFeeMock.dbg.json +0 -4
- package/src/abi/mocks/tokens/ERC20Fee.sol/TokenFeeMock.json +0 -385
- package/src/abi/oracles/YearnPriceFeed.sol/YearnPriceFeed.dbg.json +0 -4
- package/src/abi/oracles/YearnPriceFeed.sol/YearnPriceFeed.json +0 -321
- package/src/abi/support/PathFinder.sol/PathFinder.dbg.json +0 -4
- package/src/abi/support/PathFinder.sol/PathFinder.json +0 -189
- package/src/abi/tokens/GearNFT.sol/GearBeta.dbg.json +0 -4
- package/src/abi/tokens/GearNFT.sol/GearBeta.json +0 -485
- package/src/abi/tokens/TokenDistributor.sol/TokenDistributor.dbg.json +0 -4
- package/src/abi/tokens/TokenDistributor.sol/TokenDistributor.json +0 -439
- package/src/abi/tokens/Vesting.sol/StepVesting.dbg.json +0 -4
- package/src/abi/tokens/Vesting.sol/StepVesting.json +0 -254
- package/src/apy/convexAPY.ts +0 -250
- package/src/apy/lidoAPY.ts +0 -89
- package/src/config.ts +0 -2
- package/src/contracts/adapters.ts +0 -18
- package/src/contracts/contracts.ts +0 -438
- package/src/contracts/contractsRegister.ts +0 -67
- package/src/contracts/protocols.ts +0 -40
- package/src/core/constants.ts +0 -51
- package/src/core/creditAccount.ts +0 -152
- package/src/core/creditManager.ts +0 -284
- package/src/core/creditOperation.ts +0 -9
- package/src/core/creditSession.ts +0 -87
- package/src/core/errors.ts +0 -70
- package/src/core/eventOrTx.ts +0 -97
- package/src/core/events.ts +0 -1259
- package/src/core/history.ts +0 -55
- package/src/core/multicall.ts +0 -6
- package/src/core/operations.ts +0 -41
- package/src/core/pool.ts +0 -81
- package/src/core/price.ts +0 -13
- package/src/core/strategy.ts +0 -134
- package/src/core/tokenDistributor.ts +0 -14
- package/src/core/transactions.ts +0 -492
- package/src/index.ts +0 -64
- package/src/oracles/oracles.ts +0 -48
- package/src/oracles/priceFeeds.ts +0 -546
- package/src/pathfinder/contracts.ts +0 -19
- package/src/pathfinder/convexLP.ts +0 -37
- package/src/pathfinder/curveLP.ts +0 -75
- package/src/pathfinder/path.ts +0 -174
- package/src/pathfinder/priority.ts +0 -14
- package/src/pathfinder/trade.ts +0 -90
- package/src/pathfinder/tradeTypes.ts +0 -105
- package/src/pathfinder/yVault.ts +0 -90
- package/src/payload/creditAccount.ts +0 -7
- package/src/payload/creditManager.ts +0 -24
- package/src/payload/creditSession.ts +0 -24
- package/src/payload/graphPayload.ts +0 -10
- package/src/payload/pool.ts +0 -3
- package/src/payload/token.ts +0 -5
- package/src/strategies/convex.ts +0 -414
- package/src/strategies/creditFacade.ts +0 -119
- package/src/strategies/curve.ts +0 -478
- package/src/strategies/lido.ts +0 -88
- package/src/strategies/uniswapV2.ts +0 -109
- package/src/strategies/uniswapV3.ts +0 -127
- package/src/strategies/yearn.ts +0 -219
- package/src/tokens/connectors.ts +0 -8
- package/src/tokens/convex.ts +0 -335
- package/src/tokens/curveLP.ts +0 -188
- package/src/tokens/gear.ts +0 -58
- package/src/tokens/normal.ts +0 -809
- package/src/tokens/token.ts +0 -238
- package/src/tokens/tokenData.ts +0 -87
- package/src/tokens/tokenType.ts +0 -12
- package/src/tokens/yearn.ts +0 -143
- package/src/types/@chainlink/contracts/index.ts +0 -5
- package/src/types/@chainlink/contracts/src/index.ts +0 -5
- package/src/types/@chainlink/contracts/src/v0.8/index.ts +0 -5
- package/src/types/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.ts +0 -228
- package/src/types/@chainlink/contracts/src/v0.8/interfaces/index.ts +0 -4
- package/src/types/@chainlink/index.ts +0 -5
- package/src/types/@openzeppelin/contracts/access/Ownable.ts +0 -175
- package/src/types/@openzeppelin/contracts/access/index.ts +0 -4
- package/src/types/@openzeppelin/contracts/index.ts +0 -11
- package/src/types/@openzeppelin/contracts/security/Pausable.ts +0 -111
- package/src/types/@openzeppelin/contracts/security/index.ts +0 -4
- package/src/types/@openzeppelin/contracts/token/ERC20/ERC20.ts +0 -444
- package/src/types/@openzeppelin/contracts/token/ERC20/IERC20.ts +0 -322
- package/src/types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +0 -364
- package/src/types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +0 -4
- package/src/types/@openzeppelin/contracts/token/ERC20/index.ts +0 -7
- package/src/types/@openzeppelin/contracts/token/ERC721/ERC721.ts +0 -578
- package/src/types/@openzeppelin/contracts/token/ERC721/IERC721.ts +0 -527
- package/src/types/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts +0 -120
- package/src/types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +0 -581
- package/src/types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +0 -4
- package/src/types/@openzeppelin/contracts/token/ERC721/index.ts +0 -8
- package/src/types/@openzeppelin/contracts/token/index.ts +0 -7
- package/src/types/@openzeppelin/contracts/utils/index.ts +0 -5
- package/src/types/@openzeppelin/contracts/utils/introspection/ERC165.ts +0 -102
- package/src/types/@openzeppelin/contracts/utils/introspection/IERC165.ts +0 -102
- package/src/types/@openzeppelin/contracts/utils/introspection/index.ts +0 -5
- package/src/types/@openzeppelin/index.ts +0 -5
- package/src/types/common.ts +0 -44
- package/src/types/contracts/adapters/AbstractAdapter.ts +0 -174
- package/src/types/contracts/adapters/UniversalAdapter.ts +0 -258
- package/src/types/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/ConvexV1BaseRewardPoolAdapter.ts +0 -1079
- package/src/types/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/index.ts +0 -4
- package/src/types/contracts/adapters/convex/ConvexV1_Booster.sol/ConvexV1BoosterAdapter.ts +0 -676
- package/src/types/contracts/adapters/convex/ConvexV1_Booster.sol/index.ts +0 -4
- package/src/types/contracts/adapters/convex/ConvexV1_ClaimZap.sol/ConvexV1ClaimZapAdapter.ts +0 -290
- package/src/types/contracts/adapters/convex/ConvexV1_ClaimZap.sol/index.ts +0 -4
- package/src/types/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/ConvexStakedPositionToken.ts +0 -393
- package/src/types/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/index.ts +0 -4
- package/src/types/contracts/adapters/convex/index.ts +0 -11
- package/src/types/contracts/adapters/curve/CurveV1_2.sol/CurveV1Adapter2Assets.ts +0 -1679
- package/src/types/contracts/adapters/curve/CurveV1_2.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_3.sol/CurveV1Adapter3Assets.ts +0 -1685
- package/src/types/contracts/adapters/curve/CurveV1_3.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_4.sol/CurveV1Adapter4Assets.ts +0 -1694
- package/src/types/contracts/adapters/curve/CurveV1_4.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_Base.sol/CurveV1AdapterBase.ts +0 -1394
- package/src/types/contracts/adapters/curve/CurveV1_Base.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_DepositZap.sol/CurveV1AdapterDeposit.ts +0 -1394
- package/src/types/contracts/adapters/curve/CurveV1_DepositZap.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_stETH.sol/CurveV1AdapterStETH.ts +0 -1679
- package/src/types/contracts/adapters/curve/CurveV1_stETH.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/CurveV1_stETHGateway.sol/CurveV1StETHPoolGateway.ts +0 -1232
- package/src/types/contracts/adapters/curve/CurveV1_stETHGateway.sol/index.ts +0 -4
- package/src/types/contracts/adapters/curve/index.ts +0 -17
- package/src/types/contracts/adapters/index.ts +0 -15
- package/src/types/contracts/adapters/lido/LidoV1.sol/LidoV1Adapter.ts +0 -689
- package/src/types/contracts/adapters/lido/LidoV1.sol/index.ts +0 -4
- package/src/types/contracts/adapters/lido/LidoV1_WETHGateway.sol/LidoV1Gateway.ts +0 -400
- package/src/types/contracts/adapters/lido/LidoV1_WETHGateway.sol/index.ts +0 -4
- package/src/types/contracts/adapters/lido/index.ts +0 -7
- package/src/types/contracts/adapters/uniswap/UniswapV2.sol/UniswapV2Adapter.ts +0 -1575
- package/src/types/contracts/adapters/uniswap/UniswapV2.sol/index.ts +0 -4
- package/src/types/contracts/adapters/uniswap/UniswapV3.sol/UniswapV3Adapter.ts +0 -532
- package/src/types/contracts/adapters/uniswap/UniswapV3.sol/index.ts +0 -4
- package/src/types/contracts/adapters/uniswap/index.ts +0 -7
- package/src/types/contracts/adapters/yearn/YearnV2.sol/YearnV2Adapter.ts +0 -744
- package/src/types/contracts/adapters/yearn/YearnV2.sol/index.ts +0 -4
- package/src/types/contracts/adapters/yearn/index.ts +0 -5
- package/src/types/contracts/core/ACL.ts +0 -564
- package/src/types/contracts/core/ACLTrait.ts +0 -170
- package/src/types/contracts/core/AccountFactory.ts +0 -680
- package/src/types/contracts/core/AddressProvider.ts +0 -706
- package/src/types/contracts/core/ContractsRegister.ts +0 -456
- package/src/types/contracts/core/DataCompressor.ts +0 -625
- package/src/types/contracts/core/WETHGateway.ts +0 -263
- package/src/types/contracts/core/index.ts +0 -10
- package/src/types/contracts/credit/CreditAccount.ts +0 -406
- package/src/types/contracts/credit/CreditConfigurator.ts +0 -1297
- package/src/types/contracts/credit/CreditFacade.ts +0 -1654
- package/src/types/contracts/credit/CreditManager.ts +0 -1834
- package/src/types/contracts/credit/index.ts +0 -7
- package/src/types/contracts/factories/CreditManagerFactory.ts +0 -539
- package/src/types/contracts/factories/GenesisFactory.ts +0 -274
- package/src/types/contracts/factories/PoolFactory.ts +0 -350
- package/src/types/contracts/factories/index.ts +0 -6
- package/src/types/contracts/index.ts +0 -29
- package/src/types/contracts/integrations/convex/IBaseRewardPool.ts +0 -856
- package/src/types/contracts/integrations/convex/IBooster.ts +0 -407
- package/src/types/contracts/integrations/convex/IClaimZap.ts +0 -183
- package/src/types/contracts/integrations/convex/IConvexToken.ts +0 -407
- package/src/types/contracts/integrations/convex/IRewards.sol/IBasicRewards.ts +0 -225
- package/src/types/contracts/integrations/convex/IRewards.sol/IRewards.ts +0 -395
- package/src/types/contracts/integrations/convex/IRewards.sol/index.ts +0 -5
- package/src/types/contracts/integrations/convex/Interfaces.sol/ICrvDeposit.ts +0 -128
- package/src/types/contracts/integrations/convex/Interfaces.sol/ICurveGauge.ts +0 -242
- package/src/types/contracts/integrations/convex/Interfaces.sol/ICurveVoteEscrow.ts +0 -227
- package/src/types/contracts/integrations/convex/Interfaces.sol/IDeposit.ts +0 -371
- package/src/types/contracts/integrations/convex/Interfaces.sol/IFeeDistro.ts +0 -104
- package/src/types/contracts/integrations/convex/Interfaces.sol/IMinter.ts +0 -95
- package/src/types/contracts/integrations/convex/Interfaces.sol/IPools.ts +0 -290
- package/src/types/contracts/integrations/convex/Interfaces.sol/IRegistry.ts +0 -189
- package/src/types/contracts/integrations/convex/Interfaces.sol/IRewardFactory.ts +0 -310
- package/src/types/contracts/integrations/convex/Interfaces.sol/IRewards.ts +0 -395
- package/src/types/contracts/integrations/convex/Interfaces.sol/IStaker.ts +0 -652
- package/src/types/contracts/integrations/convex/Interfaces.sol/IStash.ts +0 -209
- package/src/types/contracts/integrations/convex/Interfaces.sol/IStashFactory.ts +0 -120
- package/src/types/contracts/integrations/convex/Interfaces.sol/ITokenFactory.ts +0 -104
- package/src/types/contracts/integrations/convex/Interfaces.sol/ITokenMinter.ts +0 -143
- package/src/types/contracts/integrations/convex/Interfaces.sol/IVestedEscrow.ts +0 -107
- package/src/types/contracts/integrations/convex/Interfaces.sol/IVoting.ts +0 -220
- package/src/types/contracts/integrations/convex/Interfaces.sol/IWalletChecker.ts +0 -84
- package/src/types/contracts/integrations/convex/Interfaces.sol/index.ts +0 -21
- package/src/types/contracts/integrations/convex/index.ts +0 -11
- package/src/types/contracts/integrations/curve/ICRVToken.ts +0 -422
- package/src/types/contracts/integrations/curve/ICurvePool.ts +0 -894
- package/src/types/contracts/integrations/curve/ICurvePoolStETH.ts +0 -772
- package/src/types/contracts/integrations/curve/ICurvePool_2.sol/ICurvePool2Assets.ts +0 -1179
- package/src/types/contracts/integrations/curve/ICurvePool_2.sol/index.ts +0 -4
- package/src/types/contracts/integrations/curve/ICurvePool_3.sol/ICurvePool3Assets.ts +0 -1185
- package/src/types/contracts/integrations/curve/ICurvePool_3.sol/index.ts +0 -4
- package/src/types/contracts/integrations/curve/ICurvePool_4.sol/ICurvePool4Assets.ts +0 -1194
- package/src/types/contracts/integrations/curve/ICurvePool_4.sol/index.ts +0 -4
- package/src/types/contracts/integrations/curve/ICurveRegistry.ts +0 -148
- package/src/types/contracts/integrations/curve/index.ts +0 -13
- package/src/types/contracts/integrations/index.ts +0 -13
- package/src/types/contracts/integrations/lido/ILidoOracle.ts +0 -115
- package/src/types/contracts/integrations/lido/IstETH.sol/IstETH.ts +0 -534
- package/src/types/contracts/integrations/lido/IstETH.sol/IstETHGetters.ts +0 -507
- package/src/types/contracts/integrations/lido/IstETH.sol/index.ts +0 -5
- package/src/types/contracts/integrations/lido/index.ts +0 -6
- package/src/types/contracts/integrations/uniswap/IQuoter.ts +0 -263
- package/src/types/contracts/integrations/uniswap/IUniswapV2Router01.ts +0 -1128
- package/src/types/contracts/integrations/uniswap/IUniswapV2Router02.ts +0 -1446
- package/src/types/contracts/integrations/uniswap/IUniswapV3.sol/ISwapRouter.ts +0 -318
- package/src/types/contracts/integrations/uniswap/IUniswapV3.sol/index.ts +0 -4
- package/src/types/contracts/integrations/uniswap/IUniswapV3SwapCallback.ts +0 -117
- package/src/types/contracts/integrations/uniswap/index.ts +0 -9
- package/src/types/contracts/integrations/yearn/IYVault.ts +0 -640
- package/src/types/contracts/integrations/yearn/index.ts +0 -4
- package/src/types/contracts/interfaces/IACL.sol/IACL.ts +0 -261
- package/src/types/contracts/interfaces/IACL.sol/IACLEvents.ts +0 -135
- package/src/types/contracts/interfaces/IACL.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactory.ts +0 -396
- package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactoryEvents.ts +0 -158
- package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactoryGetters.ts +0 -198
- package/src/types/contracts/interfaces/IAccountFactory.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/IAddressProvider.sol/IAddressProvider.ts +0 -290
- package/src/types/contracts/interfaces/IAddressProvider.sol/IAddressProviderEvents.ts +0 -79
- package/src/types/contracts/interfaces/IAddressProvider.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IContractsRegister.sol/IContractsRegister.ts +0 -305
- package/src/types/contracts/interfaces/IContractsRegister.sol/IContractsRegisterEvents.ts +0 -89
- package/src/types/contracts/interfaces/IContractsRegister.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/ICreditAccount.sol/ICrediAccountExceptions.ts +0 -55
- package/src/types/contracts/interfaces/ICreditAccount.sol/ICreditAccount.ts +0 -406
- package/src/types/contracts/interfaces/ICreditAccount.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfigurator.ts +0 -666
- package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorEvents.ts +0 -384
- package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorExceptions.ts +0 -56
- package/src/types/contracts/interfaces/ICreditConfigurator.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacade.ts +0 -1236
- package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeEvents.ts +0 -358
- package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExceptions.ts +0 -55
- package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended.ts +0 -143
- package/src/types/contracts/interfaces/ICreditFacade.sol/index.ts +0 -7
- package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2.ts +0 -1534
- package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Events.ts +0 -98
- package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Exceptions.ts +0 -55
- package/src/types/contracts/interfaces/ICreditManagerV2.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/IDataCompressor.sol/IDataCompressor.ts +0 -516
- package/src/types/contracts/interfaces/IDataCompressor.sol/IDataCompressorExceptions.ts +0 -55
- package/src/types/contracts/interfaces/IDataCompressor.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IDegenNFT.sol/IDegenNFT.ts +0 -209
- package/src/types/contracts/interfaces/IDegenNFT.sol/IDegenNFTExceptions.ts +0 -55
- package/src/types/contracts/interfaces/IDegenNFT.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IGearToken.ts +0 -560
- package/src/types/contracts/interfaces/IInterestRateModel.ts +0 -123
- package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeed.ts +0 -379
- package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedEvents.ts +0 -80
- package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedExceptions.ts +0 -55
- package/src/types/contracts/interfaces/ILPPriceFeed.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/IMerkleDistributor.ts +0 -200
- package/src/types/contracts/interfaces/IPhantomERC20.ts +0 -381
- package/src/types/contracts/interfaces/IPoolService.sol/IPoolService.ts +0 -901
- package/src/types/contracts/interfaces/IPoolService.sol/IPoolServiceEvents.ts +0 -277
- package/src/types/contracts/interfaces/IPoolService.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/IPriceFeedAddress.ts +0 -177
- package/src/types/contracts/interfaces/IPriceFeedType.ts +0 -108
- package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2.ts +0 -387
- package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Events.ts +0 -79
- package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Exceptions.ts +0 -55
- package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Ext.ts +0 -429
- package/src/types/contracts/interfaces/IPriceOracle.sol/index.ts +0 -7
- package/src/types/contracts/interfaces/IVersion.ts +0 -81
- package/src/types/contracts/interfaces/IWETHGateway.ts +0 -201
- package/src/types/contracts/interfaces/V1/ICreditFilter.ts +0 -1288
- package/src/types/contracts/interfaces/V1/ICreditManager.ts +0 -1194
- package/src/types/contracts/interfaces/V1/IPriceOracle.sol/IPriceOracleV2.ts +0 -220
- package/src/types/contracts/interfaces/V1/IPriceOracle.sol/index.ts +0 -4
- package/src/types/contracts/interfaces/V1/index.ts +0 -7
- package/src/types/contracts/interfaces/adapters/IAdapter.sol/IAdapter.ts +0 -174
- package/src/types/contracts/interfaces/adapters/IAdapter.sol/IAdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/IAdapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapter.ts +0 -258
- package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapter.ts +0 -1088
- package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapterErrors.ts +0 -56
- package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/convex/IConvexV1BoosterAdapter.ts +0 -553
- package/src/types/contracts/interfaces/adapters/convex/index.ts +0 -6
- package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1Adapter.ts +0 -1397
- package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1AdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/curve/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/index.ts +0 -15
- package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1Adapter.ts +0 -486
- package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterEvents.ts +0 -69
- package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/index.ts +0 -6
- package/src/types/contracts/interfaces/adapters/lido/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV2Adapter.ts +0 -1595
- package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3Adapter.ts +0 -532
- package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3AdapterExceptions.ts +0 -55
- package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/index.ts +0 -5
- package/src/types/contracts/interfaces/adapters/uniswap/index.ts +0 -6
- package/src/types/contracts/interfaces/external/IWETH.ts +0 -159
- package/src/types/contracts/interfaces/external/index.ts +0 -4
- package/src/types/contracts/interfaces/index.ts +0 -43
- package/src/types/contracts/libraries/Errors.ts +0 -894
- package/src/types/contracts/libraries/index.ts +0 -4
- package/src/types/contracts/oracles/LPPriceFeed.ts +0 -451
- package/src/types/contracts/oracles/PriceFeedChecker.ts +0 -55
- package/src/types/contracts/oracles/PriceOracle.ts +0 -535
- package/src/types/contracts/oracles/ZeroPriceFeed.ts +0 -244
- package/src/types/contracts/oracles/curve/AbstractCurveLPPriceFeed.ts +0 -485
- package/src/types/contracts/oracles/curve/CurveLP2PriceFeed.ts +0 -519
- package/src/types/contracts/oracles/curve/CurveLP3PriceFeed.ts +0 -536
- package/src/types/contracts/oracles/curve/CurveLP4PriceFeed.ts +0 -553
- package/src/types/contracts/oracles/curve/index.ts +0 -7
- package/src/types/contracts/oracles/index.ts +0 -11
- package/src/types/contracts/oracles/yearn/YearnPriceFeed.ts +0 -499
- package/src/types/contracts/oracles/yearn/index.ts +0 -4
- package/src/types/contracts/pathfinder/ConvexPathFinder.ts +0 -211
- package/src/types/contracts/pathfinder/CurveLPPathFinder.ts +0 -335
- package/src/types/contracts/pathfinder/CurvePathFinder.ts +0 -514
- package/src/types/contracts/pathfinder/ISwapper.ts +0 -208
- package/src/types/contracts/pathfinder/NormalTokenPathFinder.ts +0 -526
- package/src/types/contracts/pathfinder/SwapPathFinder.ts +0 -424
- package/src/types/contracts/pathfinder/UniswapV2PathFinder.ts +0 -422
- package/src/types/contracts/pathfinder/UniswapV3PathFinder.ts +0 -559
- package/src/types/contracts/pathfinder/YearnPathFinder.ts +0 -200
- package/src/types/contracts/pathfinder/data/Balances.sol/BalanceOps.ts +0 -55
- package/src/types/contracts/pathfinder/data/Balances.sol/index.ts +0 -4
- package/src/types/contracts/pathfinder/data/index.ts +0 -5
- package/src/types/contracts/pathfinder/index.ts +0 -14
- package/src/types/contracts/pool/LinearInterestRateModel.ts +0 -276
- package/src/types/contracts/pool/PoolService.ts +0 -1314
- package/src/types/contracts/pool/index.ts +0 -5
- package/src/types/contracts/support/ContractUpgrader.ts +0 -284
- package/src/types/contracts/support/MerkleDistributor.ts +0 -200
- package/src/types/contracts/support/MultiCall.sol/Multicall2.ts +0 -451
- package/src/types/contracts/support/MultiCall.sol/index.ts +0 -4
- package/src/types/contracts/support/PauseMulticall.ts +0 -286
- package/src/types/contracts/support/index.ts +0 -8
- package/src/types/contracts/test/Playground.t.sol/PlaygroundTest.ts +0 -425
- package/src/types/contracts/test/Playground.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/AbstractAdapter.t.sol/AbstractAdapterTest.ts +0 -1196
- package/src/types/contracts/test/adapters/AbstractAdapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/AdapterTestHelper.ts +0 -814
- package/src/types/contracts/test/adapters/ConvexAdapterHelper.ts +0 -1351
- package/src/types/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/ConvexV1AdapterBasePoolTest.ts +0 -1701
- package/src/types/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/ConvexV1_Booster.t.sol/ConvexV1AdapterBoosterTest.ts +0 -1583
- package/src/types/contracts/test/adapters/ConvexV1_Booster.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/ConvexV1ClaimZapAdapterTest.ts +0 -1551
- package/src/types/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/CurveV1AdapterBaseMetaPoolTest.ts +0 -1021
- package/src/types/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/CurveV1AdapterBaseTest.ts +0 -1325
- package/src/types/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1AdapterHelper.ts +0 -814
- package/src/types/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/CurveV1Adapter2AssetsTest.ts +0 -1080
- package/src/types/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/CurveV1Adapter3AssetsTest.ts +0 -1080
- package/src/types/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/CurveV1Adapter4AssetsTest.ts +0 -1110
- package/src/types/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/CurveV1StETHTest.t.sol/CurveV1StEthAdapterTest.ts +0 -1100
- package/src/types/contracts/test/adapters/CurveV1StETHTest.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/LidoV1Adapter.t.sol/LidoV1AdapterTest.ts +0 -1146
- package/src/types/contracts/test/adapters/LidoV1Adapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/UniswapV2Adapter.t.sol/UniswapV2AdapterTest.ts +0 -1210
- package/src/types/contracts/test/adapters/UniswapV2Adapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/UniswapV3Adapter.t.sol/UniswapV3AdapterTest.ts +0 -1124
- package/src/types/contracts/test/adapters/UniswapV3Adapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/YearnV2Adapter.t.sol/YearnV2AdapterTest.ts +0 -1408
- package/src/types/contracts/test/adapters/YearnV2Adapter.t.sol/index.ts +0 -4
- package/src/types/contracts/test/adapters/index.ts +0 -34
- package/src/types/contracts/test/core/ACL.t.sol/ACLTest.ts +0 -659
- package/src/types/contracts/test/core/ACL.t.sol/index.ts +0 -4
- package/src/types/contracts/test/core/AddressProvider.t.sol/AddressProviderTest.ts +0 -783
- package/src/types/contracts/test/core/AddressProvider.t.sol/index.ts +0 -4
- package/src/types/contracts/test/core/index.ts +0 -7
- package/src/types/contracts/test/credit/CreditConfigurator.t.sol/CreditConfiguratorTest.ts +0 -1958
- package/src/types/contracts/test/credit/CreditConfigurator.t.sol/index.ts +0 -4
- package/src/types/contracts/test/credit/CreditFacade.t.sol/CreditFacadeTest.ts +0 -2860
- package/src/types/contracts/test/credit/CreditFacade.t.sol/index.ts +0 -4
- package/src/types/contracts/test/credit/CreditManager.t.sol/CreditManagerTest.ts +0 -2480
- package/src/types/contracts/test/credit/CreditManager.t.sol/index.ts +0 -4
- package/src/types/contracts/test/credit/index.ts +0 -9
- package/src/types/contracts/test/index.ts +0 -31
- package/src/types/contracts/test/lib/cheatCodes.sol/CheatCodes.ts +0 -926
- package/src/types/contracts/test/lib/cheatCodes.sol/index.ts +0 -4
- package/src/types/contracts/test/lib/constants.sol/Roles.ts +0 -375
- package/src/types/contracts/test/lib/constants.sol/index.ts +0 -4
- package/src/types/contracts/test/lib/index.ts +0 -9
- package/src/types/contracts/test/lib/test.sol/DSTest.ts +0 -375
- package/src/types/contracts/test/lib/test.sol/index.ts +0 -4
- package/src/types/contracts/test/mainnet/MainnetTokens.sol/MainnetTokensTestSuite.ts +0 -346
- package/src/types/contracts/test/mainnet/MainnetTokens.sol/index.ts +0 -4
- package/src/types/contracts/test/mainnet/TotalValueCalculator.ts +0 -104
- package/src/types/contracts/test/mainnet/index.ts +0 -6
- package/src/types/contracts/test/mocks/adapters/AdapterMock.ts +0 -458
- package/src/types/contracts/test/mocks/adapters/TargetContractMock.ts +0 -81
- package/src/types/contracts/test/mocks/adapters/index.ts +0 -5
- package/src/types/contracts/test/mocks/core/ACLTraitTest.ts +0 -238
- package/src/types/contracts/test/mocks/core/AddressProviderACLMock.ts +0 -186
- package/src/types/contracts/test/mocks/core/index.ts +0 -5
- package/src/types/contracts/test/mocks/credit/CreditManagerInternal.ts +0 -2197
- package/src/types/contracts/test/mocks/credit/index.ts +0 -4
- package/src/types/contracts/test/mocks/dao/TreasuryMock.ts +0 -69
- package/src/types/contracts/test/mocks/dao/index.ts +0 -4
- package/src/types/contracts/test/mocks/index.ts +0 -21
- package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/BaseRewardPoolMock.ts +0 -1069
- package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/IBaseRewardPoolMockEvents.ts +0 -140
- package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/BoosterMock.ts +0 -1002
- package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/IBoosterMockEvents.ts +0 -122
- package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/ClaimZapMock.ts +0 -209
- package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/IBasicRewards.ts +0 -225
- package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/ExtraRewardPoolMock.ts +0 -731
- package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/IExtraRewardPoolMockEvents.ts +0 -141
- package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/VirtualBalanceWrapper.ts +0 -203
- package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/index.ts +0 -6
- package/src/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/TokenRewardContractMock.ts +0 -425
- package/src/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/index.ts +0 -4
- package/src/types/contracts/test/mocks/integrations/CurveV1MetapoolMock.ts +0 -1101
- package/src/types/contracts/test/mocks/integrations/CurveV1Mock.ts +0 -1124
- package/src/types/contracts/test/mocks/integrations/CurveV1Mock_2Assets.ts +0 -1409
- package/src/types/contracts/test/mocks/integrations/CurveV1Mock_3Assets.ts +0 -1415
- package/src/types/contracts/test/mocks/integrations/CurveV1Mock_4Assets.ts +0 -1424
- package/src/types/contracts/test/mocks/integrations/CurveV1StETHMock.ts +0 -880
- package/src/types/contracts/test/mocks/integrations/LidoMock.sol/ILidoMockEvents.ts +0 -82
- package/src/types/contracts/test/mocks/integrations/LidoMock.sol/LidoMock.ts +0 -747
- package/src/types/contracts/test/mocks/integrations/LidoMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/integrations/UniswapV2Mock.ts +0 -1553
- package/src/types/contracts/test/mocks/integrations/UniswapV3Mock.ts +0 -953
- package/src/types/contracts/test/mocks/integrations/YearnV2Mock.ts +0 -898
- package/src/types/contracts/test/mocks/integrations/index.ts +0 -24
- package/src/types/contracts/test/mocks/libraries/PercentageMathTest.ts +0 -143
- package/src/types/contracts/test/mocks/libraries/WadRayMathTest.ts +0 -315
- package/src/types/contracts/test/mocks/libraries/index.ts +0 -5
- package/src/types/contracts/test/mocks/oracles/LPPriceFeedMock.ts +0 -486
- package/src/types/contracts/test/mocks/oracles/PriceFeedMock.ts +0 -368
- package/src/types/contracts/test/mocks/oracles/index.ts +0 -5
- package/src/types/contracts/test/mocks/pool/CreditManagerMockForPoolTest.ts +0 -285
- package/src/types/contracts/test/mocks/pool/PoolServiceMock.ts +0 -1401
- package/src/types/contracts/test/mocks/pool/TestPoolService.ts +0 -1439
- package/src/types/contracts/test/mocks/pool/index.ts +0 -6
- package/src/types/contracts/test/mocks/token/CERC20Mock.ts +0 -635
- package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedFalse.ts +0 -544
- package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedRevert.ts +0 -544
- package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/token/ERC20Blocking.sol/ERC20BlockingMock.ts +0 -620
- package/src/types/contracts/test/mocks/token/ERC20Blocking.sol/index.ts +0 -4
- package/src/types/contracts/test/mocks/token/ERC20Fee.sol/TokenFeeMock.ts +0 -595
- package/src/types/contracts/test/mocks/token/ERC20Fee.sol/index.ts +0 -4
- package/src/types/contracts/test/mocks/token/ERC20Mock.ts +0 -695
- package/src/types/contracts/test/mocks/token/ERC20NonCompliant.sol/NonCompliantERC20.ts +0 -105
- package/src/types/contracts/test/mocks/token/ERC20NonCompliant.sol/index.ts +0 -4
- package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/ERC721ReceiverMock.ts +0 -118
- package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/IERC721Receiver.ts +0 -120
- package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/index.ts +0 -5
- package/src/types/contracts/test/mocks/token/StETHMock.ts +0 -618
- package/src/types/contracts/test/mocks/token/WETHMock.ts +0 -488
- package/src/types/contracts/test/mocks/token/index.ts +0 -17
- package/src/types/contracts/test/oracles/CurveLPPriceFeed.t.sol/CurveLPPriceFeedTest.ts +0 -749
- package/src/types/contracts/test/oracles/CurveLPPriceFeed.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/LPPriceFeed.t.sol/LPPriceFeedTest.ts +0 -617
- package/src/types/contracts/test/oracles/LPPriceFeed.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/PriceOracle.t.sol/PriceOracleTest.ts +0 -758
- package/src/types/contracts/test/oracles/PriceOracle.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/YearnPriceFeed.t.sol/YearnFeedTest.ts +0 -595
- package/src/types/contracts/test/oracles/YearnPriceFeed.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/ZeroPriceFeed.t.sol/ZeroFeedTest.ts +0 -503
- package/src/types/contracts/test/oracles/ZeroPriceFeed.t.sol/index.ts +0 -4
- package/src/types/contracts/test/oracles/index.ts +0 -13
- package/src/types/contracts/test/pathfinder/CurveLPPathFinder.t.sol/CurveLPPathFinderTest.ts +0 -897
- package/src/types/contracts/test/pathfinder/CurveLPPathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/CurvePathFinder.t.sol/CurvePathFinderTest.ts +0 -1058
- package/src/types/contracts/test/pathfinder/CurvePathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/NormalTokenPathFinderTest.ts +0 -1243
- package/src/types/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/PathFinderTestHelper.ts +0 -815
- package/src/types/contracts/test/pathfinder/SwapPathFinder.t.sol/SwapPathFinderTest.ts +0 -1328
- package/src/types/contracts/test/pathfinder/SwapPathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderTest.ts +0 -1108
- package/src/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderTest.ts +0 -1142
- package/src/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/YearnPathFinder.t.sol/YearnPathFinderTest.ts +0 -927
- package/src/types/contracts/test/pathfinder/YearnPathFinder.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pathfinder/index.ts +0 -18
- package/src/types/contracts/test/pool/PoolService.t.sol/PoolServiceTest.ts +0 -1671
- package/src/types/contracts/test/pool/PoolService.t.sol/index.ts +0 -4
- package/src/types/contracts/test/pool/index.ts +0 -5
- package/src/types/contracts/test/sigp/AttackingContractNonPayable.sol/AttackContractNonPayable.ts +0 -81
- package/src/types/contracts/test/sigp/AttackingContractNonPayable.sol/index.ts +0 -4
- package/src/types/contracts/test/sigp/DummyMulticallTarget.ts +0 -175
- package/src/types/contracts/test/sigp/FlashLoanAttacker2.ts +0 -240
- package/src/types/contracts/test/sigp/Interfaces.sol/ICrvDeposit.ts +0 -128
- package/src/types/contracts/test/sigp/Interfaces.sol/ICurveGauge.ts +0 -242
- package/src/types/contracts/test/sigp/Interfaces.sol/ICurveVoteEscrow.ts +0 -227
- package/src/types/contracts/test/sigp/Interfaces.sol/IDeposit.ts +0 -371
- package/src/types/contracts/test/sigp/Interfaces.sol/IFeeDistro.ts +0 -104
- package/src/types/contracts/test/sigp/Interfaces.sol/IMinter.ts +0 -95
- package/src/types/contracts/test/sigp/Interfaces.sol/IPools.ts +0 -290
- package/src/types/contracts/test/sigp/Interfaces.sol/IRegistry.ts +0 -189
- package/src/types/contracts/test/sigp/Interfaces.sol/IRewardFactory.ts +0 -310
- package/src/types/contracts/test/sigp/Interfaces.sol/IRewards.ts +0 -395
- package/src/types/contracts/test/sigp/Interfaces.sol/IStaker.ts +0 -652
- package/src/types/contracts/test/sigp/Interfaces.sol/IStash.ts +0 -209
- package/src/types/contracts/test/sigp/Interfaces.sol/IStashFactory.ts +0 -120
- package/src/types/contracts/test/sigp/Interfaces.sol/ITokenFactory.ts +0 -104
- package/src/types/contracts/test/sigp/Interfaces.sol/ITokenMinter.ts +0 -143
- package/src/types/contracts/test/sigp/Interfaces.sol/IVestedEscrow.ts +0 -107
- package/src/types/contracts/test/sigp/Interfaces.sol/IVoting.ts +0 -220
- package/src/types/contracts/test/sigp/Interfaces.sol/IWalletChecker.ts +0 -84
- package/src/types/contracts/test/sigp/Interfaces.sol/index.ts +0 -21
- package/src/types/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/NewBaseRewardPoolMock.ts +0 -1069
- package/src/types/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/index.ts +0 -4
- package/src/types/contracts/test/sigp/NewConvexBoosterMock.sol/NewBoosterMock.ts +0 -1002
- package/src/types/contracts/test/sigp/NewConvexBoosterMock.sol/index.ts +0 -4
- package/src/types/contracts/test/sigp/NewCreditConfigurator.ts +0 -1262
- package/src/types/contracts/test/sigp/UniswapHelper.sol/UniswapV3AdapterTestHelper.ts +0 -326
- package/src/types/contracts/test/sigp/UniswapHelper.sol/index.ts +0 -4
- package/src/types/contracts/test/sigp/index.ts +0 -20
- package/src/types/contracts/test/sigp/interfaces/ILockedCvx.ts +0 -832
- package/src/types/contracts/test/sigp/interfaces/index.ts +0 -4
- package/src/types/contracts/test/sigp/stETHMock.sol/StETHMockERC20.ts +0 -725
- package/src/types/contracts/test/sigp/stETHMock.sol/index.ts +0 -4
- package/src/types/contracts/test/suites/BalanceHelper.ts +0 -375
- package/src/types/contracts/test/suites/BaseCreditTestSuite.ts +0 -649
- package/src/types/contracts/test/suites/CreditFacadeHelper.ts +0 -472
- package/src/types/contracts/test/suites/CreditFacadeTestSuite.ts +0 -821
- package/src/types/contracts/test/suites/CreditManagerTestSuite.ts +0 -748
- package/src/types/contracts/test/suites/PoolServiceTestSuite.ts +0 -209
- package/src/types/contracts/test/suites/TokensTestSuite.ts +0 -980
- package/src/types/contracts/test/suites/index.ts +0 -10
- package/src/types/contracts/test/support/PauseMulticall.t.sol/PauseMulticallTest.ts +0 -551
- package/src/types/contracts/test/support/PauseMulticall.t.sol/index.ts +0 -4
- package/src/types/contracts/test/support/index.ts +0 -5
- package/src/types/contracts/test/tokens/DegenNFT.t.sol/DegenNFTTest.ts +0 -970
- package/src/types/contracts/test/tokens/DegenNFT.t.sol/index.ts +0 -4
- package/src/types/contracts/test/tokens/index.ts +0 -5
- package/src/types/contracts/tokens/DegenNFT.ts +0 -967
- package/src/types/contracts/tokens/DieselToken.ts +0 -618
- package/src/types/contracts/tokens/GearToken.ts +0 -994
- package/src/types/contracts/tokens/PhantomERC20.ts +0 -379
- package/src/types/contracts/tokens/index.ts +0 -7
- package/src/types/factories/@chainlink/contracts/index.ts +0 -4
- package/src/types/factories/@chainlink/contracts/src/index.ts +0 -4
- package/src/types/factories/@chainlink/contracts/src/v0.8/index.ts +0 -4
- package/src/types/factories/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface__factory.ts +0 -141
- package/src/types/factories/@chainlink/contracts/src/v0.8/interfaces/index.ts +0 -4
- package/src/types/factories/@chainlink/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +0 -78
- package/src/types/factories/@openzeppelin/contracts/access/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/index.ts +0 -7
- package/src/types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +0 -65
- package/src/types/factories/@openzeppelin/contracts/security/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +0 -349
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +0 -206
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +0 -248
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/token/ERC20/index.ts +0 -6
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +0 -409
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts +0 -60
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.ts +0 -311
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +0 -356
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/token/ERC721/index.ts +0 -7
- package/src/types/factories/@openzeppelin/contracts/token/index.ts +0 -5
- package/src/types/factories/@openzeppelin/contracts/utils/index.ts +0 -4
- package/src/types/factories/@openzeppelin/contracts/utils/introspection/ERC165__factory.ts +0 -42
- package/src/types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts +0 -45
- package/src/types/factories/@openzeppelin/contracts/utils/introspection/index.ts +0 -5
- package/src/types/factories/@openzeppelin/index.ts +0 -4
- package/src/types/factories/contracts/adapters/AbstractAdapter__factory.ts +0 -107
- package/src/types/factories/contracts/adapters/UniversalAdapter__factory.ts +0 -230
- package/src/types/factories/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/ConvexV1BaseRewardPoolAdapter__factory.ts +0 -806
- package/src/types/factories/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/convex/ConvexV1_Booster.sol/ConvexV1BoosterAdapter__factory.ts +0 -533
- package/src/types/factories/contracts/adapters/convex/ConvexV1_Booster.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/convex/ConvexV1_ClaimZap.sol/ConvexV1ClaimZapAdapter__factory.ts +0 -254
- package/src/types/factories/contracts/adapters/convex/ConvexV1_ClaimZap.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/ConvexStakedPositionToken__factory.ts +0 -338
- package/src/types/factories/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/convex/index.ts +0 -7
- package/src/types/factories/contracts/adapters/curve/CurveV1_2.sol/CurveV1Adapter2Assets__factory.ts +0 -1137
- package/src/types/factories/contracts/adapters/curve/CurveV1_2.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_3.sol/CurveV1Adapter3Assets__factory.ts +0 -1137
- package/src/types/factories/contracts/adapters/curve/CurveV1_3.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_4.sol/CurveV1Adapter4Assets__factory.ts +0 -1137
- package/src/types/factories/contracts/adapters/curve/CurveV1_4.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_Base.sol/CurveV1AdapterBase__factory.ts +0 -1003
- package/src/types/factories/contracts/adapters/curve/CurveV1_Base.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_DepositZap.sol/CurveV1AdapterDeposit__factory.ts +0 -998
- package/src/types/factories/contracts/adapters/curve/CurveV1_DepositZap.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_stETH.sol/CurveV1AdapterStETH__factory.ts +0 -1124
- package/src/types/factories/contracts/adapters/curve/CurveV1_stETH.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/CurveV1_stETHGateway.sol/CurveV1StETHPoolGateway__factory.ts +0 -855
- package/src/types/factories/contracts/adapters/curve/CurveV1_stETHGateway.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/curve/index.ts +0 -10
- package/src/types/factories/contracts/adapters/index.ts +0 -10
- package/src/types/factories/contracts/adapters/lido/LidoV1.sol/LidoV1Adapter__factory.ts +0 -558
- package/src/types/factories/contracts/adapters/lido/LidoV1.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/lido/LidoV1_WETHGateway.sol/LidoV1Gateway__factory.ts +0 -336
- package/src/types/factories/contracts/adapters/lido/LidoV1_WETHGateway.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/lido/index.ts +0 -5
- package/src/types/factories/contracts/adapters/uniswap/UniswapV2.sol/UniswapV2Adapter__factory.ts +0 -1152
- package/src/types/factories/contracts/adapters/uniswap/UniswapV2.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/uniswap/UniswapV3.sol/UniswapV3Adapter__factory.ts +0 -473
- package/src/types/factories/contracts/adapters/uniswap/UniswapV3.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/uniswap/index.ts +0 -5
- package/src/types/factories/contracts/adapters/yearn/YearnV2.sol/YearnV2Adapter__factory.ts +0 -556
- package/src/types/factories/contracts/adapters/yearn/YearnV2.sol/index.ts +0 -4
- package/src/types/factories/contracts/adapters/yearn/index.ts +0 -4
- package/src/types/factories/contracts/core/ACLTrait__factory.ts +0 -107
- package/src/types/factories/contracts/core/ACL__factory.ts +0 -320
- package/src/types/factories/contracts/core/AccountFactory__factory.ts +0 -479
- package/src/types/factories/contracts/core/AddressProvider__factory.ts +0 -404
- package/src/types/factories/contracts/core/ContractsRegister__factory.ts +0 -357
- package/src/types/factories/contracts/core/DataCompressor__factory.ts +0 -910
- package/src/types/factories/contracts/core/WETHGateway__factory.ts +0 -191
- package/src/types/factories/contracts/core/index.ts +0 -10
- package/src/types/factories/contracts/credit/CreditAccount__factory.ts +0 -263
- package/src/types/factories/contracts/credit/CreditConfigurator__factory.ts +0 -931
- package/src/types/factories/contracts/credit/CreditFacade__factory.ts +0 -1254
- package/src/types/factories/contracts/credit/CreditManager__factory.ts +0 -1180
- package/src/types/factories/contracts/credit/index.ts +0 -7
- package/src/types/factories/contracts/factories/CreditManagerFactory__factory.ts +0 -392
- package/src/types/factories/contracts/factories/GenesisFactory__factory.ts +0 -202
- package/src/types/factories/contracts/factories/PoolFactory__factory.ts +0 -248
- package/src/types/factories/contracts/factories/index.ts +0 -6
- package/src/types/factories/contracts/index.ts +0 -16
- package/src/types/factories/contracts/integrations/convex/IBaseRewardPool__factory.ts +0 -541
- package/src/types/factories/contracts/integrations/convex/IBooster__factory.ts +0 -277
- package/src/types/factories/contracts/integrations/convex/IClaimZap__factory.ts +0 -105
- package/src/types/factories/contracts/integrations/convex/IConvexToken__factory.ts +0 -274
- package/src/types/factories/contracts/integrations/convex/IRewards.sol/IBasicRewards__factory.ts +0 -93
- package/src/types/factories/contracts/integrations/convex/IRewards.sol/IRewards__factory.ts +0 -190
- package/src/types/factories/contracts/integrations/convex/IRewards.sol/index.ts +0 -5
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICrvDeposit__factory.ts +0 -57
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICurveGauge__factory.ts +0 -123
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICurveVoteEscrow__factory.ts +0 -90
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IDeposit__factory.ts +0 -230
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IFeeDistro__factory.ts +0 -46
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IMinter__factory.ts +0 -39
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IPools__factory.ts +0 -189
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRegistry__factory.ts +0 -114
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRewardFactory__factory.ts +0 -164
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRewards__factory.ts +0 -190
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStaker__factory.ts +0 -324
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStashFactory__factory.ts +0 -60
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStash__factory.ts +0 -95
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ITokenFactory__factory.ts +0 -45
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ITokenMinter__factory.ts +0 -62
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IVestedEscrow__factory.ts +0 -50
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IVoting__factory.ts +0 -131
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IWalletChecker__factory.ts +0 -45
- package/src/types/factories/contracts/integrations/convex/Interfaces.sol/index.ts +0 -21
- package/src/types/factories/contracts/integrations/convex/index.ts +0 -9
- package/src/types/factories/contracts/integrations/curve/ICRVToken__factory.ts +0 -270
- package/src/types/factories/contracts/integrations/curve/ICurvePoolStETH__factory.ts +0 -478
- package/src/types/factories/contracts/integrations/curve/ICurvePool_2.sol/ICurvePool2Assets__factory.ts +0 -717
- package/src/types/factories/contracts/integrations/curve/ICurvePool_2.sol/index.ts +0 -4
- package/src/types/factories/contracts/integrations/curve/ICurvePool_3.sol/ICurvePool3Assets__factory.ts +0 -717
- package/src/types/factories/contracts/integrations/curve/ICurvePool_3.sol/index.ts +0 -4
- package/src/types/factories/contracts/integrations/curve/ICurvePool_4.sol/ICurvePool4Assets__factory.ts +0 -717
- package/src/types/factories/contracts/integrations/curve/ICurvePool_4.sol/index.ts +0 -4
- package/src/types/factories/contracts/integrations/curve/ICurvePool__factory.ts +0 -571
- package/src/types/factories/contracts/integrations/curve/ICurveRegistry__factory.ts +0 -83
- package/src/types/factories/contracts/integrations/curve/index.ts +0 -10
- package/src/types/factories/contracts/integrations/index.ts +0 -8
- package/src/types/factories/contracts/integrations/lido/ILidoOracle__factory.ts +0 -49
- package/src/types/factories/contracts/integrations/lido/IstETH.sol/IstETHGetters__factory.ts +0 -344
- package/src/types/factories/contracts/integrations/lido/IstETH.sol/IstETH__factory.ts +0 -360
- package/src/types/factories/contracts/integrations/lido/IstETH.sol/index.ts +0 -5
- package/src/types/factories/contracts/integrations/lido/index.ts +0 -5
- package/src/types/factories/contracts/integrations/uniswap/IQuoter__factory.ts +0 -152
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV2Router01__factory.ts +0 -775
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV2Router02__factory.ts +0 -977
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV3.sol/ISwapRouter__factory.ts +0 -240
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV3.sol/index.ts +0 -4
- package/src/types/factories/contracts/integrations/uniswap/IUniswapV3SwapCallback__factory.ts +0 -53
- package/src/types/factories/contracts/integrations/uniswap/index.ts +0 -8
- package/src/types/factories/contracts/integrations/yearn/IYVault__factory.ts +0 -415
- package/src/types/factories/contracts/integrations/yearn/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/IACL.sol/IACLEvents__factory.ts +0 -78
- package/src/types/factories/contracts/interfaces/IACL.sol/IACL__factory.ts +0 -145
- package/src/types/factories/contracts/interfaces/IACL.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactoryEvents__factory.ts +0 -107
- package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactoryGetters__factory.ts +0 -120
- package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactory__factory.ts +0 -243
- package/src/types/factories/contracts/interfaces/IAccountFactory.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/IAddressProvider.sol/IAddressProviderEvents__factory.ts +0 -49
- package/src/types/factories/contracts/interfaces/IAddressProvider.sol/IAddressProvider__factory.ts +0 -175
- package/src/types/factories/contracts/interfaces/IAddressProvider.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IContractsRegister.sol/IContractsRegisterEvents__factory.ts +0 -56
- package/src/types/factories/contracts/interfaces/IContractsRegister.sol/IContractsRegister__factory.ts +0 -193
- package/src/types/factories/contracts/interfaces/IContractsRegister.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/ICreditAccount.sol/ICrediAccountExceptions__factory.ts +0 -40
- package/src/types/factories/contracts/interfaces/ICreditAccount.sol/ICreditAccount__factory.ts +0 -227
- package/src/types/factories/contracts/interfaces/ICreditAccount.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorEvents__factory.ts +0 -293
- package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorExceptions__factory.ts +0 -90
- package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfigurator__factory.ts +0 -495
- package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeEvents__factory.ts +0 -302
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExceptions__factory.ts +0 -176
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended__factory.ts +0 -61
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacade__factory.ts +0 -972
- package/src/types/factories/contracts/interfaces/ICreditFacade.sol/index.ts +0 -7
- package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Events__factory.ts +0 -62
- package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Exceptions__factory.ts +0 -95
- package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2__factory.ts +0 -928
- package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/IDataCompressor.sol/IDataCompressorExceptions__factory.ts +0 -40
- package/src/types/factories/contracts/interfaces/IDataCompressor.sol/IDataCompressor__factory.ts +0 -790
- package/src/types/factories/contracts/interfaces/IDataCompressor.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IDegenNFT.sol/IDegenNFTExceptions__factory.ts +0 -46
- package/src/types/factories/contracts/interfaces/IDegenNFT.sol/IDegenNFT__factory.ts +0 -134
- package/src/types/factories/contracts/interfaces/IDegenNFT.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IGearToken__factory.ts +0 -346
- package/src/types/factories/contracts/interfaces/IInterestRateModel__factory.ts +0 -63
- package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedEvents__factory.ts +0 -45
- package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedExceptions__factory.ts +0 -40
- package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeed__factory.ts +0 -244
- package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/IMerkleDistributor__factory.ts +0 -124
- package/src/types/factories/contracts/interfaces/IPhantomERC20__factory.ts +0 -261
- package/src/types/factories/contracts/interfaces/IPoolService.sol/IPoolServiceEvents__factory.ts +0 -222
- package/src/types/factories/contracts/interfaces/IPoolService.sol/IPoolService__factory.ts +0 -581
- package/src/types/factories/contracts/interfaces/IPoolService.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/IPriceFeedAddress__factory.ts +0 -104
- package/src/types/factories/contracts/interfaces/IPriceFeedType__factory.ts +0 -52
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Events__factory.ts +0 -49
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Exceptions__factory.ts +0 -45
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Ext__factory.ts +0 -274
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2__factory.ts +0 -256
- package/src/types/factories/contracts/interfaces/IPriceOracle.sol/index.ts +0 -7
- package/src/types/factories/contracts/interfaces/IVersion__factory.ts +0 -39
- package/src/types/factories/contracts/interfaces/IWETHGateway__factory.ts +0 -90
- package/src/types/factories/contracts/interfaces/V1/ICreditFilter__factory.ts +0 -704
- package/src/types/factories/contracts/interfaces/V1/ICreditManager__factory.ts +0 -773
- package/src/types/factories/contracts/interfaces/V1/IPriceOracle.sol/IPriceOracleV2__factory.ts +0 -116
- package/src/types/factories/contracts/interfaces/V1/IPriceOracle.sol/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/V1/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/IAdapterExceptions__factory.ts +0 -37
- package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/IAdapter__factory.ts +0 -102
- package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapterExceptions__factory.ts +0 -46
- package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapter__factory.ts +0 -173
- package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapterErrors__factory.ts +0 -43
- package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapter__factory.ts +0 -723
- package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BoosterAdapter__factory.ts +0 -377
- package/src/types/factories/contracts/interfaces/adapters/convex/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1AdapterExceptions__factory.ts +0 -35
- package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1Adapter__factory.ts +0 -900
- package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/curve/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/adapters/index.ts +0 -9
- package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterEvents__factory.ts +0 -43
- package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterExceptions__factory.ts +0 -35
- package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1Adapter__factory.ts +0 -324
- package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/index.ts +0 -6
- package/src/types/factories/contracts/interfaces/adapters/lido/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV2Adapter__factory.ts +0 -1082
- package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3AdapterExceptions__factory.ts +0 -35
- package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.ts +0 -408
- package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/adapters/uniswap/index.ts +0 -5
- package/src/types/factories/contracts/interfaces/external/IWETH__factory.ts +0 -67
- package/src/types/factories/contracts/interfaces/external/index.ts +0 -4
- package/src/types/factories/contracts/interfaces/index.ts +0 -27
- package/src/types/factories/contracts/libraries/Errors__factory.ts +0 -488
- package/src/types/factories/contracts/libraries/index.ts +0 -4
- package/src/types/factories/contracts/oracles/LPPriceFeed__factory.ts +0 -350
- package/src/types/factories/contracts/oracles/PriceFeedChecker__factory.ts +0 -77
- package/src/types/factories/contracts/oracles/PriceOracle__factory.ts +0 -458
- package/src/types/factories/contracts/oracles/ZeroPriceFeed__factory.ts +0 -204
- package/src/types/factories/contracts/oracles/curve/AbstractCurveLPPriceFeed__factory.ts +0 -380
- package/src/types/factories/contracts/oracles/curve/CurveLP2PriceFeed__factory.ts +0 -493
- package/src/types/factories/contracts/oracles/curve/CurveLP3PriceFeed__factory.ts +0 -515
- package/src/types/factories/contracts/oracles/curve/CurveLP4PriceFeed__factory.ts +0 -537
- package/src/types/factories/contracts/oracles/curve/index.ts +0 -7
- package/src/types/factories/contracts/oracles/index.ts +0 -9
- package/src/types/factories/contracts/oracles/yearn/YearnPriceFeed__factory.ts +0 -462
- package/src/types/factories/contracts/oracles/yearn/index.ts +0 -4
- package/src/types/factories/contracts/pathfinder/ConvexPathFinder__factory.ts +0 -224
- package/src/types/factories/contracts/pathfinder/CurveLPPathFinder__factory.ts +0 -323
- package/src/types/factories/contracts/pathfinder/CurvePathFinder__factory.ts +0 -443
- package/src/types/factories/contracts/pathfinder/ISwapper__factory.ts +0 -226
- package/src/types/factories/contracts/pathfinder/NormalTokenPathFinder__factory.ts +0 -623
- package/src/types/factories/contracts/pathfinder/SwapPathFinder__factory.ts +0 -443
- package/src/types/factories/contracts/pathfinder/UniswapV2PathFinder__factory.ts +0 -395
- package/src/types/factories/contracts/pathfinder/UniswapV3PathFinder__factory.ts +0 -516
- package/src/types/factories/contracts/pathfinder/YearnPathFinder__factory.ts +0 -181
- package/src/types/factories/contracts/pathfinder/data/Balances.sol/BalanceOps__factory.ts +0 -73
- package/src/types/factories/contracts/pathfinder/data/Balances.sol/index.ts +0 -4
- package/src/types/factories/contracts/pathfinder/data/index.ts +0 -4
- package/src/types/factories/contracts/pathfinder/index.ts +0 -13
- package/src/types/factories/contracts/pool/LinearInterestRateModel__factory.ts +0 -249
- package/src/types/factories/contracts/pool/PoolService__factory.ts +0 -917
- package/src/types/factories/contracts/pool/index.ts +0 -5
- package/src/types/factories/contracts/support/ContractUpgrader__factory.ts +0 -130
- package/src/types/factories/contracts/support/MerkleDistributor__factory.ts +0 -191
- package/src/types/factories/contracts/support/MultiCall.sol/Multicall2__factory.ts +0 -373
- package/src/types/factories/contracts/support/MultiCall.sol/index.ts +0 -4
- package/src/types/factories/contracts/support/PauseMulticall__factory.ts +0 -206
- package/src/types/factories/contracts/support/index.ts +0 -7
- package/src/types/factories/contracts/test/Playground.t.sol/PlaygroundTest__factory.ts +0 -370
- package/src/types/factories/contracts/test/Playground.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/AbstractAdapter.t.sol/AbstractAdapterTest__factory.ts +0 -966
- package/src/types/factories/contracts/test/adapters/AbstractAdapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/AdapterTestHelper__factory.ts +0 -740
- package/src/types/factories/contracts/test/adapters/ConvexAdapterHelper__factory.ts +0 -1190
- package/src/types/factories/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/ConvexV1AdapterBasePoolTest__factory.ts +0 -1280
- package/src/types/factories/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/ConvexV1_Booster.t.sol/ConvexV1AdapterBoosterTest__factory.ts +0 -1250
- package/src/types/factories/contracts/test/adapters/ConvexV1_Booster.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/ConvexV1ClaimZapAdapterTest__factory.ts +0 -1245
- package/src/types/factories/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/CurveV1AdapterBaseMetaPoolTest__factory.ts +0 -819
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/CurveV1AdapterBaseTest__factory.ts +0 -899
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1AdapterHelper__factory.ts +0 -749
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/CurveV1Adapter2AssetsTest__factory.ts +0 -831
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/CurveV1Adapter3AssetsTest__factory.ts +0 -831
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/CurveV1Adapter4AssetsTest__factory.ts +0 -838
- package/src/types/factories/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/CurveV1StETHTest.t.sol/CurveV1StEthAdapterTest__factory.ts +0 -850
- package/src/types/factories/contracts/test/adapters/CurveV1StETHTest.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/LidoV1Adapter.t.sol/LidoV1AdapterTest__factory.ts +0 -884
- package/src/types/factories/contracts/test/adapters/LidoV1Adapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/UniswapV2Adapter.t.sol/UniswapV2AdapterTest__factory.ts +0 -913
- package/src/types/factories/contracts/test/adapters/UniswapV2Adapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/UniswapV3Adapter.t.sol/UniswapV3AdapterTest__factory.ts +0 -846
- package/src/types/factories/contracts/test/adapters/UniswapV3Adapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/YearnV2Adapter.t.sol/YearnV2AdapterTest__factory.ts +0 -918
- package/src/types/factories/contracts/test/adapters/YearnV2Adapter.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/adapters/index.ts +0 -20
- package/src/types/factories/contracts/test/core/ACL.t.sol/ACLTest__factory.ts +0 -457
- package/src/types/factories/contracts/test/core/ACL.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/core/AddressProvider.t.sol/AddressProviderTest__factory.ts +0 -466
- package/src/types/factories/contracts/test/core/AddressProvider.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/core/index.ts +0 -5
- package/src/types/factories/contracts/test/credit/CreditConfigurator.t.sol/CreditConfiguratorTest__factory.ts +0 -1048
- package/src/types/factories/contracts/test/credit/CreditConfigurator.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/credit/CreditFacade.t.sol/CreditFacadeTest__factory.ts +0 -1368
- package/src/types/factories/contracts/test/credit/CreditFacade.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/credit/CreditManager.t.sol/CreditManagerTest__factory.ts +0 -1003
- package/src/types/factories/contracts/test/credit/CreditManager.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/credit/index.ts +0 -6
- package/src/types/factories/contracts/test/index.ts +0 -17
- package/src/types/factories/contracts/test/lib/cheatCodes.sol/CheatCodes__factory.ts +0 -472
- package/src/types/factories/contracts/test/lib/cheatCodes.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/lib/constants.sol/Roles__factory.ts +0 -358
- package/src/types/factories/contracts/test/lib/constants.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/lib/index.ts +0 -6
- package/src/types/factories/contracts/test/lib/test.sol/DSTest__factory.ts +0 -353
- package/src/types/factories/contracts/test/lib/test.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mainnet/MainnetTokens.sol/MainnetTokensTestSuite__factory.ts +0 -237
- package/src/types/factories/contracts/test/mainnet/MainnetTokens.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mainnet/TotalValueCalculator__factory.ts +0 -95
- package/src/types/factories/contracts/test/mainnet/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/adapters/AdapterMock__factory.ts +0 -373
- package/src/types/factories/contracts/test/mocks/adapters/TargetContractMock__factory.ts +0 -84
- package/src/types/factories/contracts/test/mocks/adapters/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/core/ACLTraitTest__factory.ts +0 -185
- package/src/types/factories/contracts/test/mocks/core/AddressProviderACLMock__factory.ts +0 -153
- package/src/types/factories/contracts/test/mocks/core/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/credit/CreditManagerInternal__factory.ts +0 -1395
- package/src/types/factories/contracts/test/mocks/credit/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/dao/TreasuryMock__factory.ts +0 -79
- package/src/types/factories/contracts/test/mocks/dao/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/index.ts +0 -12
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/BaseRewardPoolMock__factory.ts +0 -763
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/IBaseRewardPoolMockEvents__factory.ts +0 -105
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/BoosterMock__factory.ts +0 -776
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/IBoosterMockEvents__factory.ts +0 -94
- package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/ClaimZapMock__factory.ts +0 -187
- package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/IBasicRewards__factory.ts +0 -93
- package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/ExtraRewardPoolMock__factory.ts +0 -558
- package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/IExtraRewardPoolMockEvents__factory.ts +0 -105
- package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/VirtualBalanceWrapper__factory.ts +0 -186
- package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/index.ts +0 -6
- package/src/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/TokenRewardContractMock__factory.ts +0 -345
- package/src/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1MetapoolMock__factory.ts +0 -747
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_2Assets__factory.ts +0 -902
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_3Assets__factory.ts +0 -902
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_4Assets__factory.ts +0 -902
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock__factory.ts +0 -756
- package/src/types/factories/contracts/test/mocks/integrations/CurveV1StETHMock__factory.ts +0 -594
- package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/ILidoMockEvents__factory.ts +0 -51
- package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/LidoMock__factory.ts +0 -525
- package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/integrations/UniswapV2Mock__factory.ts +0 -1060
- package/src/types/factories/contracts/test/mocks/integrations/UniswapV3Mock__factory.ts +0 -776
- package/src/types/factories/contracts/test/mocks/integrations/YearnV2Mock__factory.ts +0 -609
- package/src/types/factories/contracts/test/mocks/integrations/index.ts +0 -18
- package/src/types/factories/contracts/test/mocks/libraries/PercentageMathTest__factory.ts +0 -110
- package/src/types/factories/contracts/test/mocks/libraries/WadRayMathTest__factory.ts +0 -248
- package/src/types/factories/contracts/test/mocks/libraries/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/oracles/LPPriceFeedMock__factory.ts +0 -449
- package/src/types/factories/contracts/test/mocks/oracles/PriceFeedMock__factory.ts +0 -297
- package/src/types/factories/contracts/test/mocks/oracles/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/pool/CreditManagerMockForPoolTest__factory.ts +0 -194
- package/src/types/factories/contracts/test/mocks/pool/PoolServiceMock__factory.ts +0 -899
- package/src/types/factories/contracts/test/mocks/pool/TestPoolService__factory.ts +0 -976
- package/src/types/factories/contracts/test/mocks/pool/index.ts +0 -6
- package/src/types/factories/contracts/test/mocks/token/CERC20Mock__factory.ts +0 -486
- package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedFalse__factory.ts +0 -395
- package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedRevert__factory.ts +0 -395
- package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/token/ERC20Blocking.sol/ERC20BlockingMock__factory.ts +0 -446
- package/src/types/factories/contracts/test/mocks/token/ERC20Blocking.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/token/ERC20Fee.sol/TokenFeeMock__factory.ts +0 -454
- package/src/types/factories/contracts/test/mocks/token/ERC20Fee.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/token/ERC20Mock__factory.ts +0 -526
- package/src/types/factories/contracts/test/mocks/token/ERC20NonCompliant.sol/NonCompliantERC20__factory.ts +0 -86
- package/src/types/factories/contracts/test/mocks/token/ERC20NonCompliant.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/ERC721ReceiverMock__factory.ts +0 -96
- package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/IERC721Receiver__factory.ts +0 -60
- package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/index.ts +0 -5
- package/src/types/factories/contracts/test/mocks/token/StETHMock__factory.ts +0 -441
- package/src/types/factories/contracts/test/mocks/token/WETHMock__factory.ts +0 -364
- package/src/types/factories/contracts/test/mocks/token/index.ts +0 -12
- package/src/types/factories/contracts/test/oracles/CurveLPPriceFeed.t.sol/CurveLPPriceFeedTest__factory.ts +0 -543
- package/src/types/factories/contracts/test/oracles/CurveLPPriceFeed.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/LPPriceFeed.t.sol/LPPriceFeedTest__factory.ts +0 -480
- package/src/types/factories/contracts/test/oracles/LPPriceFeed.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/PriceOracle.t.sol/PriceOracleTest__factory.ts +0 -511
- package/src/types/factories/contracts/test/oracles/PriceOracle.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/YearnPriceFeed.t.sol/YearnFeedTest__factory.ts +0 -474
- package/src/types/factories/contracts/test/oracles/YearnPriceFeed.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/ZeroPriceFeed.t.sol/ZeroFeedTest__factory.ts +0 -422
- package/src/types/factories/contracts/test/oracles/ZeroPriceFeed.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/oracles/index.ts +0 -8
- package/src/types/factories/contracts/test/pathfinder/CurveLPPathFinder.t.sol/CurveLPPathFinderTest__factory.ts +0 -673
- package/src/types/factories/contracts/test/pathfinder/CurveLPPathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/CurvePathFinder.t.sol/CurvePathFinderTest__factory.ts +0 -750
- package/src/types/factories/contracts/test/pathfinder/CurvePathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/NormalTokenPathFinderTest__factory.ts +0 -839
- package/src/types/factories/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/PathFinderTestHelper__factory.ts +0 -652
- package/src/types/factories/contracts/test/pathfinder/SwapPathFinder.t.sol/SwapPathFinderTest__factory.ts +0 -912
- package/src/types/factories/contracts/test/pathfinder/SwapPathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderTest__factory.ts +0 -806
- package/src/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderTest__factory.ts +0 -826
- package/src/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/YearnPathFinder.t.sol/YearnPathFinderTest__factory.ts +0 -676
- package/src/types/factories/contracts/test/pathfinder/YearnPathFinder.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pathfinder/index.ts +0 -11
- package/src/types/factories/contracts/test/pool/PoolService.t.sol/PoolServiceTest__factory.ts +0 -804
- package/src/types/factories/contracts/test/pool/PoolService.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/pool/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/AttackingContractNonPayable.sol/AttackContractNonPayable__factory.ts +0 -88
- package/src/types/factories/contracts/test/sigp/AttackingContractNonPayable.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/DummyMulticallTarget__factory.ts +0 -131
- package/src/types/factories/contracts/test/sigp/FlashLoanAttacker2__factory.ts +0 -164
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICrvDeposit__factory.ts +0 -57
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICurveGauge__factory.ts +0 -123
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICurveVoteEscrow__factory.ts +0 -90
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IDeposit__factory.ts +0 -230
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IFeeDistro__factory.ts +0 -46
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IMinter__factory.ts +0 -39
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IPools__factory.ts +0 -189
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRegistry__factory.ts +0 -114
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRewardFactory__factory.ts +0 -164
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRewards__factory.ts +0 -190
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStaker__factory.ts +0 -324
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStashFactory__factory.ts +0 -60
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStash__factory.ts +0 -95
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ITokenFactory__factory.ts +0 -45
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/ITokenMinter__factory.ts +0 -62
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IVestedEscrow__factory.ts +0 -50
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IVoting__factory.ts +0 -131
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/IWalletChecker__factory.ts +0 -45
- package/src/types/factories/contracts/test/sigp/Interfaces.sol/index.ts +0 -21
- package/src/types/factories/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/NewBaseRewardPoolMock__factory.ts +0 -767
- package/src/types/factories/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/NewConvexBoosterMock.sol/NewBoosterMock__factory.ts +0 -776
- package/src/types/factories/contracts/test/sigp/NewConvexBoosterMock.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/NewCreditConfigurator__factory.ts +0 -922
- package/src/types/factories/contracts/test/sigp/UniswapHelper.sol/UniswapV3AdapterTestHelper__factory.ts +0 -244
- package/src/types/factories/contracts/test/sigp/UniswapHelper.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/index.ts +0 -13
- package/src/types/factories/contracts/test/sigp/interfaces/ILockedCvx__factory.ts +0 -442
- package/src/types/factories/contracts/test/sigp/interfaces/index.ts +0 -4
- package/src/types/factories/contracts/test/sigp/stETHMock.sol/StETHMockERC20__factory.ts +0 -482
- package/src/types/factories/contracts/test/sigp/stETHMock.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/suites/BalanceHelper__factory.ts +0 -356
- package/src/types/factories/contracts/test/suites/BaseCreditTestSuite__factory.ts +0 -589
- package/src/types/factories/contracts/test/suites/CreditFacadeHelper__factory.ts +0 -421
- package/src/types/factories/contracts/test/suites/CreditFacadeTestSuite__factory.ts +0 -685
- package/src/types/factories/contracts/test/suites/CreditManagerTestSuite__factory.ts +0 -677
- package/src/types/factories/contracts/test/suites/PoolServiceTestSuite__factory.ts +0 -186
- package/src/types/factories/contracts/test/suites/TokensTestSuite__factory.ts +0 -744
- package/src/types/factories/contracts/test/suites/index.ts +0 -10
- package/src/types/factories/contracts/test/support/PauseMulticall.t.sol/PauseMulticallTest__factory.ts +0 -398
- package/src/types/factories/contracts/test/support/PauseMulticall.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/support/index.ts +0 -4
- package/src/types/factories/contracts/test/tokens/DegenNFT.t.sol/DegenNFTTest__factory.ts +0 -560
- package/src/types/factories/contracts/test/tokens/DegenNFT.t.sol/index.ts +0 -4
- package/src/types/factories/contracts/test/tokens/index.ts +0 -4
- package/src/types/factories/contracts/tokens/DegenNFT__factory.ts +0 -699
- package/src/types/factories/contracts/tokens/DieselToken__factory.ts +0 -464
- package/src/types/factories/contracts/tokens/GearToken__factory.ts +0 -719
- package/src/types/factories/contracts/tokens/PhantomERC20__factory.ts +0 -261
- package/src/types/factories/contracts/tokens/index.ts +0 -7
- package/src/types/factories/index.ts +0 -6
- package/src/types/hardhat.d.ts +0 -2715
- package/src/types/index.ts +0 -562
- package/src/utils/errors.ts +0 -11
- package/src/utils/formatter.ts +0 -146
- package/src/utils/loading.ts +0 -17
- package/src/utils/mappers.ts +0 -32
- package/src/utils/math.ts +0 -42
- package/src/utils/multicall.ts +0 -80
- package/src/utils/network.ts +0 -28
- package/src/utils/repeater.ts +0 -18
- package/src/utils/types.ts +0 -7
- package/src/utils/validate.ts +0 -8
- package/tsconfig.json +0 -62
package/src/types/factories/contracts/test/credit/CreditManager.t.sol/CreditManagerTest__factory.ts
DELETED
|
@@ -1,1003 +0,0 @@
|
|
|
1
|
-
/* Autogenerated file. Do not edit manually. */
|
|
2
|
-
/* tslint:disable */
|
|
3
|
-
/* eslint-disable */
|
|
4
|
-
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
|
|
5
|
-
import type { Provider, TransactionRequest } from "@ethersproject/providers";
|
|
6
|
-
import type {
|
|
7
|
-
CreditManagerTest,
|
|
8
|
-
CreditManagerTestInterface,
|
|
9
|
-
} from "../../../../../contracts/test/credit/CreditManager.t.sol/CreditManagerTest";
|
|
10
|
-
|
|
11
|
-
const _abi = [
|
|
12
|
-
{
|
|
13
|
-
inputs: [],
|
|
14
|
-
name: "AdaptersOrCreditFacadeOnlyException",
|
|
15
|
-
type: "error",
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
inputs: [],
|
|
19
|
-
name: "AllowanceFailedExpcetion",
|
|
20
|
-
type: "error",
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
inputs: [],
|
|
24
|
-
name: "CreditConfiguratorOnlyException",
|
|
25
|
-
type: "error",
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
inputs: [],
|
|
29
|
-
name: "CreditFacadeOnlyException",
|
|
30
|
-
type: "error",
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
inputs: [],
|
|
34
|
-
name: "HasNoOpenedAccountException",
|
|
35
|
-
type: "error",
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
inputs: [],
|
|
39
|
-
name: "NotEnoughCollateralException",
|
|
40
|
-
type: "error",
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
inputs: [],
|
|
44
|
-
name: "ReentrancyLockException",
|
|
45
|
-
type: "error",
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
inputs: [],
|
|
49
|
-
name: "TargetContractNotAllowedExpcetion",
|
|
50
|
-
type: "error",
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
inputs: [],
|
|
54
|
-
name: "TokenAlreadyAddedException",
|
|
55
|
-
type: "error",
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
inputs: [],
|
|
59
|
-
name: "TokenNotAllowedException",
|
|
60
|
-
type: "error",
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
inputs: [],
|
|
64
|
-
name: "TooMuchEnabledTokensException",
|
|
65
|
-
type: "error",
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
inputs: [],
|
|
69
|
-
name: "TooMuchTokensException",
|
|
70
|
-
type: "error",
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
inputs: [],
|
|
74
|
-
name: "ZeroAddressOrUserAlreadyHasAccountException",
|
|
75
|
-
type: "error",
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
anonymous: false,
|
|
79
|
-
inputs: [
|
|
80
|
-
{
|
|
81
|
-
indexed: true,
|
|
82
|
-
internalType: "address",
|
|
83
|
-
name: "borrower",
|
|
84
|
-
type: "address",
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
indexed: true,
|
|
88
|
-
internalType: "address",
|
|
89
|
-
name: "target",
|
|
90
|
-
type: "address",
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
name: "ExecuteOrder",
|
|
94
|
-
type: "event",
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
anonymous: false,
|
|
98
|
-
inputs: [
|
|
99
|
-
{
|
|
100
|
-
indexed: true,
|
|
101
|
-
internalType: "address",
|
|
102
|
-
name: "newConfigurator",
|
|
103
|
-
type: "address",
|
|
104
|
-
},
|
|
105
|
-
],
|
|
106
|
-
name: "NewConfigurator",
|
|
107
|
-
type: "event",
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
anonymous: false,
|
|
111
|
-
inputs: [
|
|
112
|
-
{
|
|
113
|
-
indexed: false,
|
|
114
|
-
internalType: "string",
|
|
115
|
-
name: "",
|
|
116
|
-
type: "string",
|
|
117
|
-
},
|
|
118
|
-
],
|
|
119
|
-
name: "log",
|
|
120
|
-
type: "event",
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
anonymous: false,
|
|
124
|
-
inputs: [
|
|
125
|
-
{
|
|
126
|
-
indexed: false,
|
|
127
|
-
internalType: "address",
|
|
128
|
-
name: "",
|
|
129
|
-
type: "address",
|
|
130
|
-
},
|
|
131
|
-
],
|
|
132
|
-
name: "log_address",
|
|
133
|
-
type: "event",
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
anonymous: false,
|
|
137
|
-
inputs: [
|
|
138
|
-
{
|
|
139
|
-
indexed: false,
|
|
140
|
-
internalType: "bytes",
|
|
141
|
-
name: "",
|
|
142
|
-
type: "bytes",
|
|
143
|
-
},
|
|
144
|
-
],
|
|
145
|
-
name: "log_bytes",
|
|
146
|
-
type: "event",
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
anonymous: false,
|
|
150
|
-
inputs: [
|
|
151
|
-
{
|
|
152
|
-
indexed: false,
|
|
153
|
-
internalType: "bytes32",
|
|
154
|
-
name: "",
|
|
155
|
-
type: "bytes32",
|
|
156
|
-
},
|
|
157
|
-
],
|
|
158
|
-
name: "log_bytes32",
|
|
159
|
-
type: "event",
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
anonymous: false,
|
|
163
|
-
inputs: [
|
|
164
|
-
{
|
|
165
|
-
indexed: false,
|
|
166
|
-
internalType: "int256",
|
|
167
|
-
name: "",
|
|
168
|
-
type: "int256",
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
name: "log_int",
|
|
172
|
-
type: "event",
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
anonymous: false,
|
|
176
|
-
inputs: [
|
|
177
|
-
{
|
|
178
|
-
indexed: false,
|
|
179
|
-
internalType: "string",
|
|
180
|
-
name: "key",
|
|
181
|
-
type: "string",
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
indexed: false,
|
|
185
|
-
internalType: "address",
|
|
186
|
-
name: "val",
|
|
187
|
-
type: "address",
|
|
188
|
-
},
|
|
189
|
-
],
|
|
190
|
-
name: "log_named_address",
|
|
191
|
-
type: "event",
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
anonymous: false,
|
|
195
|
-
inputs: [
|
|
196
|
-
{
|
|
197
|
-
indexed: false,
|
|
198
|
-
internalType: "string",
|
|
199
|
-
name: "key",
|
|
200
|
-
type: "string",
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
indexed: false,
|
|
204
|
-
internalType: "bytes",
|
|
205
|
-
name: "val",
|
|
206
|
-
type: "bytes",
|
|
207
|
-
},
|
|
208
|
-
],
|
|
209
|
-
name: "log_named_bytes",
|
|
210
|
-
type: "event",
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
anonymous: false,
|
|
214
|
-
inputs: [
|
|
215
|
-
{
|
|
216
|
-
indexed: false,
|
|
217
|
-
internalType: "string",
|
|
218
|
-
name: "key",
|
|
219
|
-
type: "string",
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
indexed: false,
|
|
223
|
-
internalType: "bytes32",
|
|
224
|
-
name: "val",
|
|
225
|
-
type: "bytes32",
|
|
226
|
-
},
|
|
227
|
-
],
|
|
228
|
-
name: "log_named_bytes32",
|
|
229
|
-
type: "event",
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
anonymous: false,
|
|
233
|
-
inputs: [
|
|
234
|
-
{
|
|
235
|
-
indexed: false,
|
|
236
|
-
internalType: "string",
|
|
237
|
-
name: "key",
|
|
238
|
-
type: "string",
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
indexed: false,
|
|
242
|
-
internalType: "int256",
|
|
243
|
-
name: "val",
|
|
244
|
-
type: "int256",
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
indexed: false,
|
|
248
|
-
internalType: "uint256",
|
|
249
|
-
name: "decimals",
|
|
250
|
-
type: "uint256",
|
|
251
|
-
},
|
|
252
|
-
],
|
|
253
|
-
name: "log_named_decimal_int",
|
|
254
|
-
type: "event",
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
anonymous: false,
|
|
258
|
-
inputs: [
|
|
259
|
-
{
|
|
260
|
-
indexed: false,
|
|
261
|
-
internalType: "string",
|
|
262
|
-
name: "key",
|
|
263
|
-
type: "string",
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
indexed: false,
|
|
267
|
-
internalType: "uint256",
|
|
268
|
-
name: "val",
|
|
269
|
-
type: "uint256",
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
indexed: false,
|
|
273
|
-
internalType: "uint256",
|
|
274
|
-
name: "decimals",
|
|
275
|
-
type: "uint256",
|
|
276
|
-
},
|
|
277
|
-
],
|
|
278
|
-
name: "log_named_decimal_uint",
|
|
279
|
-
type: "event",
|
|
280
|
-
},
|
|
281
|
-
{
|
|
282
|
-
anonymous: false,
|
|
283
|
-
inputs: [
|
|
284
|
-
{
|
|
285
|
-
indexed: false,
|
|
286
|
-
internalType: "string",
|
|
287
|
-
name: "key",
|
|
288
|
-
type: "string",
|
|
289
|
-
},
|
|
290
|
-
{
|
|
291
|
-
indexed: false,
|
|
292
|
-
internalType: "int256",
|
|
293
|
-
name: "val",
|
|
294
|
-
type: "int256",
|
|
295
|
-
},
|
|
296
|
-
],
|
|
297
|
-
name: "log_named_int",
|
|
298
|
-
type: "event",
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
anonymous: false,
|
|
302
|
-
inputs: [
|
|
303
|
-
{
|
|
304
|
-
indexed: false,
|
|
305
|
-
internalType: "string",
|
|
306
|
-
name: "key",
|
|
307
|
-
type: "string",
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
indexed: false,
|
|
311
|
-
internalType: "string",
|
|
312
|
-
name: "val",
|
|
313
|
-
type: "string",
|
|
314
|
-
},
|
|
315
|
-
],
|
|
316
|
-
name: "log_named_string",
|
|
317
|
-
type: "event",
|
|
318
|
-
},
|
|
319
|
-
{
|
|
320
|
-
anonymous: false,
|
|
321
|
-
inputs: [
|
|
322
|
-
{
|
|
323
|
-
indexed: false,
|
|
324
|
-
internalType: "string",
|
|
325
|
-
name: "key",
|
|
326
|
-
type: "string",
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
indexed: false,
|
|
330
|
-
internalType: "uint256",
|
|
331
|
-
name: "val",
|
|
332
|
-
type: "uint256",
|
|
333
|
-
},
|
|
334
|
-
],
|
|
335
|
-
name: "log_named_uint",
|
|
336
|
-
type: "event",
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
anonymous: false,
|
|
340
|
-
inputs: [
|
|
341
|
-
{
|
|
342
|
-
indexed: false,
|
|
343
|
-
internalType: "string",
|
|
344
|
-
name: "",
|
|
345
|
-
type: "string",
|
|
346
|
-
},
|
|
347
|
-
],
|
|
348
|
-
name: "log_string",
|
|
349
|
-
type: "event",
|
|
350
|
-
},
|
|
351
|
-
{
|
|
352
|
-
anonymous: false,
|
|
353
|
-
inputs: [
|
|
354
|
-
{
|
|
355
|
-
indexed: false,
|
|
356
|
-
internalType: "uint256",
|
|
357
|
-
name: "",
|
|
358
|
-
type: "uint256",
|
|
359
|
-
},
|
|
360
|
-
],
|
|
361
|
-
name: "log_uint",
|
|
362
|
-
type: "event",
|
|
363
|
-
},
|
|
364
|
-
{
|
|
365
|
-
anonymous: false,
|
|
366
|
-
inputs: [
|
|
367
|
-
{
|
|
368
|
-
indexed: false,
|
|
369
|
-
internalType: "bytes",
|
|
370
|
-
name: "",
|
|
371
|
-
type: "bytes",
|
|
372
|
-
},
|
|
373
|
-
],
|
|
374
|
-
name: "logs",
|
|
375
|
-
type: "event",
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
inputs: [],
|
|
379
|
-
name: "IS_TEST",
|
|
380
|
-
outputs: [
|
|
381
|
-
{
|
|
382
|
-
internalType: "bool",
|
|
383
|
-
name: "",
|
|
384
|
-
type: "bool",
|
|
385
|
-
},
|
|
386
|
-
],
|
|
387
|
-
stateMutability: "view",
|
|
388
|
-
type: "function",
|
|
389
|
-
},
|
|
390
|
-
{
|
|
391
|
-
inputs: [],
|
|
392
|
-
name: "failed",
|
|
393
|
-
outputs: [
|
|
394
|
-
{
|
|
395
|
-
internalType: "bool",
|
|
396
|
-
name: "",
|
|
397
|
-
type: "bool",
|
|
398
|
-
},
|
|
399
|
-
],
|
|
400
|
-
stateMutability: "nonpayable",
|
|
401
|
-
type: "function",
|
|
402
|
-
},
|
|
403
|
-
{
|
|
404
|
-
inputs: [],
|
|
405
|
-
name: "setUp",
|
|
406
|
-
outputs: [],
|
|
407
|
-
stateMutability: "nonpayable",
|
|
408
|
-
type: "function",
|
|
409
|
-
},
|
|
410
|
-
{
|
|
411
|
-
inputs: [],
|
|
412
|
-
name: "test_CM_01_constructor_sets_correct_values",
|
|
413
|
-
outputs: [],
|
|
414
|
-
stateMutability: "nonpayable",
|
|
415
|
-
type: "function",
|
|
416
|
-
},
|
|
417
|
-
{
|
|
418
|
-
inputs: [],
|
|
419
|
-
name: "test_CM_02_credit_account_management_functions_revert_if_not_called_by_creditFacadeCall",
|
|
420
|
-
outputs: [],
|
|
421
|
-
stateMutability: "nonpayable",
|
|
422
|
-
type: "function",
|
|
423
|
-
},
|
|
424
|
-
{
|
|
425
|
-
inputs: [],
|
|
426
|
-
name: "test_CM_03_credit_account_execution_functions_revert_if_not_called_by_creditFacade",
|
|
427
|
-
outputs: [],
|
|
428
|
-
stateMutability: "nonpayable",
|
|
429
|
-
type: "function",
|
|
430
|
-
},
|
|
431
|
-
{
|
|
432
|
-
inputs: [],
|
|
433
|
-
name: "test_CM_04_credit_account_configurator_functions_revert_if_not_called_by_creditFacade",
|
|
434
|
-
outputs: [],
|
|
435
|
-
stateMutability: "nonpayable",
|
|
436
|
-
type: "function",
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
inputs: [],
|
|
440
|
-
name: "test_CM_05_pause_pauses_management_functions",
|
|
441
|
-
outputs: [],
|
|
442
|
-
stateMutability: "nonpayable",
|
|
443
|
-
type: "function",
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
inputs: [],
|
|
447
|
-
name: "test_CM_06_openCreditAccount_sets_correct_values_and_transfers_tokens_from_pool",
|
|
448
|
-
outputs: [],
|
|
449
|
-
stateMutability: "nonpayable",
|
|
450
|
-
type: "function",
|
|
451
|
-
},
|
|
452
|
-
{
|
|
453
|
-
inputs: [],
|
|
454
|
-
name: "test_CM_07_openCreditAccount_reverts_if_zero_address_or_address_exists",
|
|
455
|
-
outputs: [],
|
|
456
|
-
stateMutability: "nonpayable",
|
|
457
|
-
type: "function",
|
|
458
|
-
},
|
|
459
|
-
{
|
|
460
|
-
inputs: [],
|
|
461
|
-
name: "test_CM_08_openCreditAccount_sets_correct_values_and_transfers_tokens_from_pool",
|
|
462
|
-
outputs: [],
|
|
463
|
-
stateMutability: "nonpayable",
|
|
464
|
-
type: "function",
|
|
465
|
-
},
|
|
466
|
-
{
|
|
467
|
-
inputs: [],
|
|
468
|
-
name: "test_CM_09_close_credit_account_returns_credit_account_and_remove_borrower_from_map",
|
|
469
|
-
outputs: [],
|
|
470
|
-
stateMutability: "nonpayable",
|
|
471
|
-
type: "function",
|
|
472
|
-
},
|
|
473
|
-
{
|
|
474
|
-
inputs: [],
|
|
475
|
-
name: "test_CM_10_close_credit_account_returns_underlying_token_if_not_liquidated",
|
|
476
|
-
outputs: [],
|
|
477
|
-
stateMutability: "nonpayable",
|
|
478
|
-
type: "function",
|
|
479
|
-
},
|
|
480
|
-
{
|
|
481
|
-
inputs: [],
|
|
482
|
-
name: "test_CM_11_close_credit_account_charges_caller_if_underlying_token_not_enough",
|
|
483
|
-
outputs: [],
|
|
484
|
-
stateMutability: "nonpayable",
|
|
485
|
-
type: "function",
|
|
486
|
-
},
|
|
487
|
-
{
|
|
488
|
-
inputs: [],
|
|
489
|
-
name: "test_CM_12_close_credit_account_charges_caller_if_underlying_token_not_enough",
|
|
490
|
-
outputs: [],
|
|
491
|
-
stateMutability: "nonpayable",
|
|
492
|
-
type: "function",
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
inputs: [],
|
|
496
|
-
name: "test_CM_13_close_credit_account_charges_caller_if_underlying_token_not_enough",
|
|
497
|
-
outputs: [],
|
|
498
|
-
stateMutability: "nonpayable",
|
|
499
|
-
type: "function",
|
|
500
|
-
},
|
|
501
|
-
{
|
|
502
|
-
inputs: [],
|
|
503
|
-
name: "test_CM_14_close_credit_account_with_nonzero_skipTokenMask_sends_correct_tokens",
|
|
504
|
-
outputs: [],
|
|
505
|
-
stateMutability: "nonpayable",
|
|
506
|
-
type: "function",
|
|
507
|
-
},
|
|
508
|
-
{
|
|
509
|
-
inputs: [],
|
|
510
|
-
name: "test_CM_16_close_weth_credit_account_sends_eth_to_borrower",
|
|
511
|
-
outputs: [],
|
|
512
|
-
stateMutability: "nonpayable",
|
|
513
|
-
type: "function",
|
|
514
|
-
},
|
|
515
|
-
{
|
|
516
|
-
inputs: [],
|
|
517
|
-
name: "test_CM_17_close_dai_credit_account_sends_eth_to_borrower",
|
|
518
|
-
outputs: [],
|
|
519
|
-
stateMutability: "nonpayable",
|
|
520
|
-
type: "function",
|
|
521
|
-
},
|
|
522
|
-
{
|
|
523
|
-
inputs: [],
|
|
524
|
-
name: "test_CM_18_close_credit_account_sends_eth_to_liquidator_and_weth_to_borrower",
|
|
525
|
-
outputs: [],
|
|
526
|
-
stateMutability: "nonpayable",
|
|
527
|
-
type: "function",
|
|
528
|
-
},
|
|
529
|
-
{
|
|
530
|
-
inputs: [],
|
|
531
|
-
name: "test_CM_19_close_dai_credit_account_sends_eth_to_liquidator",
|
|
532
|
-
outputs: [],
|
|
533
|
-
stateMutability: "nonpayable",
|
|
534
|
-
type: "function",
|
|
535
|
-
},
|
|
536
|
-
{
|
|
537
|
-
inputs: [
|
|
538
|
-
{
|
|
539
|
-
internalType: "uint128",
|
|
540
|
-
name: "amount",
|
|
541
|
-
type: "uint128",
|
|
542
|
-
},
|
|
543
|
-
],
|
|
544
|
-
name: "test_CM_20_manageDebt_correctly_increases_debt",
|
|
545
|
-
outputs: [],
|
|
546
|
-
stateMutability: "nonpayable",
|
|
547
|
-
type: "function",
|
|
548
|
-
},
|
|
549
|
-
{
|
|
550
|
-
inputs: [
|
|
551
|
-
{
|
|
552
|
-
internalType: "uint128",
|
|
553
|
-
name: "amount",
|
|
554
|
-
type: "uint128",
|
|
555
|
-
},
|
|
556
|
-
],
|
|
557
|
-
name: "test_CM_21_manageDebt_correctly_decreases_debt",
|
|
558
|
-
outputs: [],
|
|
559
|
-
stateMutability: "nonpayable",
|
|
560
|
-
type: "function",
|
|
561
|
-
},
|
|
562
|
-
{
|
|
563
|
-
inputs: [],
|
|
564
|
-
name: "test_CM_22_add_collateral_transfers_money_and_enables_token",
|
|
565
|
-
outputs: [],
|
|
566
|
-
stateMutability: "nonpayable",
|
|
567
|
-
type: "function",
|
|
568
|
-
},
|
|
569
|
-
{
|
|
570
|
-
inputs: [],
|
|
571
|
-
name: "test_CM_23_transferAccountOwnership_reverts_if_to_equals_zero_or_account_exists",
|
|
572
|
-
outputs: [],
|
|
573
|
-
stateMutability: "nonpayable",
|
|
574
|
-
type: "function",
|
|
575
|
-
},
|
|
576
|
-
{
|
|
577
|
-
inputs: [],
|
|
578
|
-
name: "test_CM_24_transferAccountOwnership_changes_creditAccounts_map_properly",
|
|
579
|
-
outputs: [],
|
|
580
|
-
stateMutability: "nonpayable",
|
|
581
|
-
type: "function",
|
|
582
|
-
},
|
|
583
|
-
{
|
|
584
|
-
inputs: [],
|
|
585
|
-
name: "test_CM_25A_approveCreditAccount_reverts_if_the_token_is_not_added",
|
|
586
|
-
outputs: [],
|
|
587
|
-
stateMutability: "nonpayable",
|
|
588
|
-
type: "function",
|
|
589
|
-
},
|
|
590
|
-
{
|
|
591
|
-
inputs: [],
|
|
592
|
-
name: "test_CM_25_approveCreditAccount_reverts_if_adapter_isnt_connected_with_contract_or_0",
|
|
593
|
-
outputs: [],
|
|
594
|
-
stateMutability: "nonpayable",
|
|
595
|
-
type: "function",
|
|
596
|
-
},
|
|
597
|
-
{
|
|
598
|
-
inputs: [],
|
|
599
|
-
name: "test_CM_26_approveCreditAccount_approves_with_desired_allowance",
|
|
600
|
-
outputs: [],
|
|
601
|
-
stateMutability: "nonpayable",
|
|
602
|
-
type: "function",
|
|
603
|
-
},
|
|
604
|
-
{
|
|
605
|
-
inputs: [],
|
|
606
|
-
name: "test_CM_27A_approveCreditAccount_works_for_ERC20_with_approve_restrictions",
|
|
607
|
-
outputs: [],
|
|
608
|
-
stateMutability: "nonpayable",
|
|
609
|
-
type: "function",
|
|
610
|
-
},
|
|
611
|
-
{
|
|
612
|
-
inputs: [],
|
|
613
|
-
name: "test_CM_27B_approveCreditAccount_works_for_ERC20_with_approve_restrictions",
|
|
614
|
-
outputs: [],
|
|
615
|
-
stateMutability: "nonpayable",
|
|
616
|
-
type: "function",
|
|
617
|
-
},
|
|
618
|
-
{
|
|
619
|
-
inputs: [],
|
|
620
|
-
name: "test_CM_28_executeOrder_reverts_if_adapter_is_not_connected_with_target_contract",
|
|
621
|
-
outputs: [],
|
|
622
|
-
stateMutability: "nonpayable",
|
|
623
|
-
type: "function",
|
|
624
|
-
},
|
|
625
|
-
{
|
|
626
|
-
inputs: [],
|
|
627
|
-
name: "test_CM_29_executeOrder_calls_credit_account_method_and_emit_event",
|
|
628
|
-
outputs: [],
|
|
629
|
-
stateMutability: "nonpayable",
|
|
630
|
-
type: "function",
|
|
631
|
-
},
|
|
632
|
-
{
|
|
633
|
-
inputs: [],
|
|
634
|
-
name: "test_CM_30_checkAndEnableToken_reverts_for_token_for_token_not_in_list_and_for_forbidden_token",
|
|
635
|
-
outputs: [],
|
|
636
|
-
stateMutability: "nonpayable",
|
|
637
|
-
type: "function",
|
|
638
|
-
},
|
|
639
|
-
{
|
|
640
|
-
inputs: [],
|
|
641
|
-
name: "test_CM_31_checkAndEnableToken_enables_token_for_creditAccount",
|
|
642
|
-
outputs: [],
|
|
643
|
-
stateMutability: "nonpayable",
|
|
644
|
-
type: "function",
|
|
645
|
-
},
|
|
646
|
-
{
|
|
647
|
-
inputs: [],
|
|
648
|
-
name: "test_CM_32_fastCollateralCheck_enables_tokenOut_and_reverts_if_its_unkown_or_forbidden",
|
|
649
|
-
outputs: [],
|
|
650
|
-
stateMutability: "nonpayable",
|
|
651
|
-
type: "function",
|
|
652
|
-
},
|
|
653
|
-
{
|
|
654
|
-
inputs: [
|
|
655
|
-
{
|
|
656
|
-
internalType: "uint8",
|
|
657
|
-
name: "balanceAfter",
|
|
658
|
-
type: "uint8",
|
|
659
|
-
},
|
|
660
|
-
],
|
|
661
|
-
name: "test_CM_33_fastCollateralCheck_disable_tokens_with_zero_balance",
|
|
662
|
-
outputs: [],
|
|
663
|
-
stateMutability: "nonpayable",
|
|
664
|
-
type: "function",
|
|
665
|
-
},
|
|
666
|
-
{
|
|
667
|
-
inputs: [],
|
|
668
|
-
name: "test_CM_34_fastCollateralCheck_is_passed_if_collateralOut_gte_collarteralIn",
|
|
669
|
-
outputs: [],
|
|
670
|
-
stateMutability: "nonpayable",
|
|
671
|
-
type: "function",
|
|
672
|
-
},
|
|
673
|
-
{
|
|
674
|
-
inputs: [],
|
|
675
|
-
name: "test_CM_35_fastCollateralCheck_reverts_if_more_enabled_tokens_than_allowed_if_collateralOut_gte_collarteralIn_wo_lt_check",
|
|
676
|
-
outputs: [],
|
|
677
|
-
stateMutability: "nonpayable",
|
|
678
|
-
type: "function",
|
|
679
|
-
},
|
|
680
|
-
{
|
|
681
|
-
inputs: [],
|
|
682
|
-
name: "test_CM_36A_fastCollateralCheck_correctly_optimizes_enabled_tokens",
|
|
683
|
-
outputs: [],
|
|
684
|
-
stateMutability: "nonpayable",
|
|
685
|
-
type: "function",
|
|
686
|
-
},
|
|
687
|
-
{
|
|
688
|
-
inputs: [
|
|
689
|
-
{
|
|
690
|
-
internalType: "uint256",
|
|
691
|
-
name: "desiredDrop",
|
|
692
|
-
type: "uint256",
|
|
693
|
-
},
|
|
694
|
-
],
|
|
695
|
-
name: "test_CM_36_fastCollateralCheck_is_passed_with_cumulative_drop_lte_feeLiquidation",
|
|
696
|
-
outputs: [],
|
|
697
|
-
stateMutability: "nonpayable",
|
|
698
|
-
type: "function",
|
|
699
|
-
},
|
|
700
|
-
{
|
|
701
|
-
inputs: [],
|
|
702
|
-
name: "test_CM_37_fastCollateralCheck_reverts_if_more_enabled_tokens_than_allowed_if_collateralOut_lt_collarteralIn_wo_lt_check",
|
|
703
|
-
outputs: [],
|
|
704
|
-
stateMutability: "nonpayable",
|
|
705
|
-
type: "function",
|
|
706
|
-
},
|
|
707
|
-
{
|
|
708
|
-
inputs: [],
|
|
709
|
-
name: "test_CM_38_fullCollateralCheck_skips_tokens_is_they_are_not_enabled",
|
|
710
|
-
outputs: [],
|
|
711
|
-
stateMutability: "nonpayable",
|
|
712
|
-
type: "function",
|
|
713
|
-
},
|
|
714
|
-
{
|
|
715
|
-
inputs: [],
|
|
716
|
-
name: "test_CM_39_fullCollateralCheck_diables_tokens_if_they_have_zero_balance",
|
|
717
|
-
outputs: [],
|
|
718
|
-
stateMutability: "nonpayable",
|
|
719
|
-
type: "function",
|
|
720
|
-
},
|
|
721
|
-
{
|
|
722
|
-
inputs: [],
|
|
723
|
-
name: "test_CM_40_fullCollateralCheck_breaks_loop_if_total_gte_borrowAmountPlusInterestRateUSD_and_pass_the_check",
|
|
724
|
-
outputs: [],
|
|
725
|
-
stateMutability: "nonpayable",
|
|
726
|
-
type: "function",
|
|
727
|
-
},
|
|
728
|
-
{
|
|
729
|
-
inputs: [],
|
|
730
|
-
name: "test_CM_41A_fullCollateralCheck_correctly_disables_the_underlying_when_needed",
|
|
731
|
-
outputs: [],
|
|
732
|
-
stateMutability: "nonpayable",
|
|
733
|
-
type: "function",
|
|
734
|
-
},
|
|
735
|
-
{
|
|
736
|
-
inputs: [],
|
|
737
|
-
name: "test_CM_41B_fullCollateralCheck_correctly_optimizes_enabled_tokens",
|
|
738
|
-
outputs: [],
|
|
739
|
-
stateMutability: "nonpayable",
|
|
740
|
-
type: "function",
|
|
741
|
-
},
|
|
742
|
-
{
|
|
743
|
-
inputs: [],
|
|
744
|
-
name: "test_CM_41_fullCollateralCheck_reverts_if_CA_has_more_than_allowed_enabled_tokens",
|
|
745
|
-
outputs: [],
|
|
746
|
-
stateMutability: "nonpayable",
|
|
747
|
-
type: "function",
|
|
748
|
-
},
|
|
749
|
-
{
|
|
750
|
-
inputs: [
|
|
751
|
-
{
|
|
752
|
-
internalType: "uint128",
|
|
753
|
-
name: "borrowedAmount",
|
|
754
|
-
type: "uint128",
|
|
755
|
-
},
|
|
756
|
-
{
|
|
757
|
-
internalType: "uint128",
|
|
758
|
-
name: "daiBalance",
|
|
759
|
-
type: "uint128",
|
|
760
|
-
},
|
|
761
|
-
{
|
|
762
|
-
internalType: "uint128",
|
|
763
|
-
name: "usdcBalance",
|
|
764
|
-
type: "uint128",
|
|
765
|
-
},
|
|
766
|
-
{
|
|
767
|
-
internalType: "uint128",
|
|
768
|
-
name: "linkBalance",
|
|
769
|
-
type: "uint128",
|
|
770
|
-
},
|
|
771
|
-
{
|
|
772
|
-
internalType: "uint128",
|
|
773
|
-
name: "wethBalance",
|
|
774
|
-
type: "uint128",
|
|
775
|
-
},
|
|
776
|
-
{
|
|
777
|
-
internalType: "bool",
|
|
778
|
-
name: "enableUSDC",
|
|
779
|
-
type: "bool",
|
|
780
|
-
},
|
|
781
|
-
{
|
|
782
|
-
internalType: "bool",
|
|
783
|
-
name: "enableLINK",
|
|
784
|
-
type: "bool",
|
|
785
|
-
},
|
|
786
|
-
{
|
|
787
|
-
internalType: "bool",
|
|
788
|
-
name: "enableWETH",
|
|
789
|
-
type: "bool",
|
|
790
|
-
},
|
|
791
|
-
],
|
|
792
|
-
name: "test_CM_42_fullCollateralCheck_fuzzing_test",
|
|
793
|
-
outputs: [],
|
|
794
|
-
stateMutability: "nonpayable",
|
|
795
|
-
type: "function",
|
|
796
|
-
},
|
|
797
|
-
{
|
|
798
|
-
inputs: [],
|
|
799
|
-
name: "test_CM_43_calcClosePayments_test",
|
|
800
|
-
outputs: [],
|
|
801
|
-
stateMutability: "nonpayable",
|
|
802
|
-
type: "function",
|
|
803
|
-
},
|
|
804
|
-
{
|
|
805
|
-
inputs: [],
|
|
806
|
-
name: "test_CM_44_transferAssetsTo_sends_all_tokens_except_underlying_one_to_provided_address",
|
|
807
|
-
outputs: [],
|
|
808
|
-
stateMutability: "nonpayable",
|
|
809
|
-
type: "function",
|
|
810
|
-
},
|
|
811
|
-
{
|
|
812
|
-
inputs: [],
|
|
813
|
-
name: "test_CM_45_safeTokenTransfer_transfers_tokens",
|
|
814
|
-
outputs: [],
|
|
815
|
-
stateMutability: "nonpayable",
|
|
816
|
-
type: "function",
|
|
817
|
-
},
|
|
818
|
-
{
|
|
819
|
-
inputs: [],
|
|
820
|
-
name: "test_CM_46__disableToken_disabale_tokens_and_do_not_enable_it_if_called_twice",
|
|
821
|
-
outputs: [],
|
|
822
|
-
stateMutability: "nonpayable",
|
|
823
|
-
type: "function",
|
|
824
|
-
},
|
|
825
|
-
{
|
|
826
|
-
inputs: [
|
|
827
|
-
{
|
|
828
|
-
internalType: "address",
|
|
829
|
-
name: "newToken",
|
|
830
|
-
type: "address",
|
|
831
|
-
},
|
|
832
|
-
{
|
|
833
|
-
internalType: "uint16",
|
|
834
|
-
name: "newLT",
|
|
835
|
-
type: "uint16",
|
|
836
|
-
},
|
|
837
|
-
],
|
|
838
|
-
name: "test_CM_47_collateralTokens_works_as_expected",
|
|
839
|
-
outputs: [],
|
|
840
|
-
stateMutability: "nonpayable",
|
|
841
|
-
type: "function",
|
|
842
|
-
},
|
|
843
|
-
{
|
|
844
|
-
inputs: [],
|
|
845
|
-
name: "test_CM_48_getCreditAccountOrRevert_reverts_if_borrower_has_no_account",
|
|
846
|
-
outputs: [],
|
|
847
|
-
stateMutability: "nonpayable",
|
|
848
|
-
type: "function",
|
|
849
|
-
},
|
|
850
|
-
{
|
|
851
|
-
inputs: [
|
|
852
|
-
{
|
|
853
|
-
internalType: "uint128",
|
|
854
|
-
name: "amount",
|
|
855
|
-
type: "uint128",
|
|
856
|
-
},
|
|
857
|
-
],
|
|
858
|
-
name: "test_CM_49_calcCreditAccountAccruedInterest_computes_correctly",
|
|
859
|
-
outputs: [],
|
|
860
|
-
stateMutability: "nonpayable",
|
|
861
|
-
type: "function",
|
|
862
|
-
},
|
|
863
|
-
{
|
|
864
|
-
inputs: [],
|
|
865
|
-
name: "test_CM_50_getCreditAccountParameters_return_correct_values",
|
|
866
|
-
outputs: [],
|
|
867
|
-
stateMutability: "nonpayable",
|
|
868
|
-
type: "function",
|
|
869
|
-
},
|
|
870
|
-
{
|
|
871
|
-
inputs: [],
|
|
872
|
-
name: "test_CM_51_setParams_sets_configuration_properly",
|
|
873
|
-
outputs: [],
|
|
874
|
-
stateMutability: "nonpayable",
|
|
875
|
-
type: "function",
|
|
876
|
-
},
|
|
877
|
-
{
|
|
878
|
-
inputs: [],
|
|
879
|
-
name: "test_CM_52_addToken_reverts_if_token_exists_and_if_collateralTokens_more_256",
|
|
880
|
-
outputs: [],
|
|
881
|
-
stateMutability: "nonpayable",
|
|
882
|
-
type: "function",
|
|
883
|
-
},
|
|
884
|
-
{
|
|
885
|
-
inputs: [],
|
|
886
|
-
name: "test_CM_53_addToken_adds_token_and_set_tokenMaskMap_correctly",
|
|
887
|
-
outputs: [],
|
|
888
|
-
stateMutability: "nonpayable",
|
|
889
|
-
type: "function",
|
|
890
|
-
},
|
|
891
|
-
{
|
|
892
|
-
inputs: [],
|
|
893
|
-
name: "test_CM_54_setLiquidationThreshold_reverts_for_unknown_token",
|
|
894
|
-
outputs: [],
|
|
895
|
-
stateMutability: "nonpayable",
|
|
896
|
-
type: "function",
|
|
897
|
-
},
|
|
898
|
-
{
|
|
899
|
-
inputs: [],
|
|
900
|
-
name: "test_CM_55_setForbidMask_sets_forbidMask_correctly",
|
|
901
|
-
outputs: [],
|
|
902
|
-
stateMutability: "nonpayable",
|
|
903
|
-
type: "function",
|
|
904
|
-
},
|
|
905
|
-
{
|
|
906
|
-
inputs: [],
|
|
907
|
-
name: "test_CM_56_changeContractAllowance_updates_adapterToContract",
|
|
908
|
-
outputs: [],
|
|
909
|
-
stateMutability: "nonpayable",
|
|
910
|
-
type: "function",
|
|
911
|
-
},
|
|
912
|
-
{
|
|
913
|
-
inputs: [],
|
|
914
|
-
name: "test_CM_57_upgradeContracts_updates_contracts_correctly",
|
|
915
|
-
outputs: [],
|
|
916
|
-
stateMutability: "nonpayable",
|
|
917
|
-
type: "function",
|
|
918
|
-
},
|
|
919
|
-
{
|
|
920
|
-
inputs: [],
|
|
921
|
-
name: "test_CM_58_setConfigurator_sets_creditConfigurator_correctly_and_emits_event",
|
|
922
|
-
outputs: [],
|
|
923
|
-
stateMutability: "nonpayable",
|
|
924
|
-
type: "function",
|
|
925
|
-
},
|
|
926
|
-
{
|
|
927
|
-
inputs: [
|
|
928
|
-
{
|
|
929
|
-
internalType: "uint256",
|
|
930
|
-
name: "noise",
|
|
931
|
-
type: "uint256",
|
|
932
|
-
},
|
|
933
|
-
],
|
|
934
|
-
name: "test_CM_59_getMaxIndex_works_properly",
|
|
935
|
-
outputs: [],
|
|
936
|
-
stateMutability: "nonpayable",
|
|
937
|
-
type: "function",
|
|
938
|
-
},
|
|
939
|
-
{
|
|
940
|
-
inputs: [],
|
|
941
|
-
name: "test_CM_60_universal_adapter_can_call_adapter_restricted_functions",
|
|
942
|
-
outputs: [],
|
|
943
|
-
stateMutability: "nonpayable",
|
|
944
|
-
type: "function",
|
|
945
|
-
},
|
|
946
|
-
{
|
|
947
|
-
inputs: [],
|
|
948
|
-
name: "test_CM_61_setMaxEnabledTokens_works_correctly",
|
|
949
|
-
outputs: [],
|
|
950
|
-
stateMutability: "nonpayable",
|
|
951
|
-
type: "function",
|
|
952
|
-
},
|
|
953
|
-
];
|
|
954
|
-
|
|
955
|
-
const _bytecode =
|
|
956
|
-
"0x60806040526000805460ff1916600190811790915580546001600160a01b031916737109709ecfa91a80626ff3989d68f67f5b1dd12d1790553480156200004557600080fd5b50620547ec80620000576000396000f3fe6080604052348015630000001257600080fd5b506004361063000004ee5760003560e01c806386562dbc116300000291578063cbcef3f1116300000167578063e9e933e41163000000e8578063f836a3971163000000af578063fb47c1f7116300000090578063fb47c1f7146300000890578063fc1d242c14630000089c578063fcc48bed1463000008a857600080fd5b8063f836a397146300000875578063fa7626d414630000088157600080fd5b8063e9e933e4146300000845578063ec43a71a146300000851578063ece2c55714630000085d578063f3fbcebd14630000086957600080fd5b8063e423b74811630000012e578063e423b748146300000815578063e4672631146300000821578063e4f86d0a14630000082d578063e91b684314630000083957600080fd5b8063cbcef3f11463000007e5578063d735cc0a1463000007f1578063dd5bbfc21463000007fd578063deb32a1814630000080957600080fd5b80639c06719b116300000212578063b778b0681163000001d9578063ba668a6f1163000001ba578063ba668a6f1463000007b2578063c3b502931463000007be578063c676441a1463000007ca57600080fd5b8063b778b068146300000786578063ba414fa614630000079257600080fd5b80639c06719b1463000007475780639cd0b37e146300000753578063a95871dc14630000076e578063b353fcff14630000077a57600080fd5b8063950e2bbb116300000258578063950e2bbb146300000717578063957ca3b314630000072357806399d8ff2314630000072f5780639a776bce14630000073b57600080fd5b806386562dbc1463000006e7578063873a53d31463000006f35780638fa5973b1463000006ff578063930ba1eb14630000070b57600080fd5b806343c242d31163000003c8578063719142f511630000034957806374a871bf11630000031057806378f710a01163000002f157806378f710a01463000006a557806382d9cafb1463000006c0578063842140e41463000006db57600080fd5b806374a871bf14630000067e57806375a71e9614630000068a57600080fd5b8063719142f514630000064e5780637305ef9514630000065a5780637332418314630000066657806373bc56c214630000067257600080fd5b80635000489111630000038f5780635000489114630000060f5780636430791714630000061b5780636931631e1463000006275780636c9b028414630000063357600080fd5b806343c242d31463000005df5780634a1542631463000005eb5780634ede9b821463000005f75780634f1cb90e14630000060357600080fd5b80631fe2cc5a1163000004735780632c37358511630000043a57806332b34dde11630000041b57806332b34dde1463000005bb5780633a20d7fb1463000005c757806341cb5b221463000005d357600080fd5b80632c373585146300000594578063316d59df1463000005a057600080fd5b80631fe2cc5a1463000005555780632512f525146300000561578063289db64f14630000057c5780632954173f14630000058857600080fd5b80630d320ebb1163000004b95780630d320ebb14630000052557806315ac40551463000005315780631787eb5b14630000053d57806319c6d96814630000054957600080fd5b806302a1f8c71463000004f357806303514d991463000005015780630493062614630000050d5780630a9254e4146300000519575b600080fd5b63000004ff63000008b4565b005b63000004ff63000014d7565b63000004ff6300001b0a565b63000004ff63000022dd565b63000004ff63000023d1565b63000004ff63000027b7565b63000004ff6300002a7e565b63000004ff630000364f565b63000004ff6300003898565b63000004ff6300000575366004630001ad90565b6300003cc0565b63000004ff63000043a5565b63000004ff63000046c9565b63000004ff63000048ca565b63000004ff63000005b4366004630001adc9565b6300004a2a565b63000004ff6300004e25565b63000004ff630000560c565b63000004ff63000057c2565b63000004ff6300005cfb565b63000004ff63000065f9565b63000004ff630000680a565b63000004ff6300006b6c565b63000004ff63000074d5565b63000004ff6300007b0e565b63000004ff6300007ef8565b63000004ff6300000647366004630001adec565b63000081aa565b63000004ff6300009159565b63000004ff630000992e565b63000004ff6300009b9e565b63000004ff630000a17f565b63000004ff630000a6a1565b63000004ff630000069e366004630001ae17565b630000a9dd565b63000004ff63000006b9366004630001ad90565b630000b97c565b63000004ff63000006d4366004630001ad90565b630000bea8565b63000004ff630000c271565b63000004ff630000c65d565b63000004ff630000ce84565b63000004ff630000d286565b63000004ff630000d9dd565b63000004ff630000e0be565b63000004ff630000e542565b63000004ff630000ea4a565b63000004ff630000ef79565b63000004ff630000f508565b63000004ff6300000767366004630001af0e565b630000f78e565b63000004ff6300010207565b63000004ff6300010f61565b63000004ff63000116eb565b630000079e63000119df565b604051901515815260200160405180910390f35b63000004ff6300011b53565b63000004ff6300011f4e565b63000004ff63000007de366004630001adec565b6300012163565b63000004ff63000122e7565b63000004ff63000126f8565b63000004ff630001271d565b63000004ff6300012d7e565b63000004ff630001306c565b63000004ff630001352a565b63000004ff6300013a88565b63000004ff6300014678565b63000004ff630001510d565b63000004ff63000157c2565b63000004ff6300015b52565b63000004ff6300015f57565b63000004ff63000162e9565b600054630000079e9060ff1681565b63000004ff6300016645565b63000004ff6300016a08565b63000004ff6300017817565b6001546040517f06447d560000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116906306447d5690602401600060405180830381600087803b158015630000093557600080fd5b505af1158015630000094b573d6000803e3d6000fd5b50506008546040516000935073ffffffffffffffffffffffffffffffffffffffff9091169150630000097e90630001ace6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801563000009b9573d6000803e3d6000fd5b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166362eb33e36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300000a2b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300000a539190630001af51565b6040517fe26b2f6300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152919091169063e26b2f6390602401600060405180830381600087803b1580156300000ac057600080fd5b505af11580156300000ad6573d6000803e3d6000fd5b50506009546040517f11ca4fc200000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff918216602482015290841692506311ca4fc29150604401600060405180830381600087803b1580156300000b4f57600080fd5b505af11580156300000b65573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156300000bd557600080fd5b505af11580156300000beb573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff16638fe3f93f670de0b6b3a7640000614e206300000c279190630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660248201526044016020604051808303816000875af11580156300000c99573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300000cc19190630001af51565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292935073c4375b7de8af5a38a93548eb8453a498222c4ff2926201000090910473ffffffffffffffffffffffffffffffffffffffff16906367b42645906300000d3a906004908101630001b02f565b602060405180830381865afa1580156300000d59573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300000d819190630001af51565b6001546040517f06447d560000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff16906306447d5690602401600060405180830381600087803b1580156300000e0357600080fd5b505af11580156300000e19573d6000803e3d6000fd5b50506040517fd48bfca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528716925063d48bfca79150602401600060405180830381600087803b1580156300000e8857600080fd5b505af11580156300000e9e573d6000803e3d6000fd5b50506040517fd48bfca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528716925063d48bfca79150602401600060405180830381600087803b1580156300000f0d57600080fd5b505af11580156300000f23573d6000803e3d6000fd5b50506002546040517f0c75f80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808916945063a70bc542935085921690630c75f806906300000f8b906004908101630001b02f565b602060405180830381865afa1580156300000faa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300000fd29190630001b041565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015261ffff166024820152604401600060405180830381600087803b158015630000104357600080fd5b505af11580156300001059573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801563000010c957600080fd5b505af115801563000010df573d6000803e3d6000fd5b50506040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152871692506351e3f1609150604401600060405180830381600087803b158015630000115657600080fd5b505af1158015630000116c573d6000803e3d6000fd5b50506040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528481166024830152871692506351e3f1609150604401600060405180830381600087803b15801563000011e357600080fd5b505af115801563000011f9573d6000803e3d6000fd5b5050600080546040517f8a3177a300000000000000000000000000000000000000000000000000000000815291935062010000900473ffffffffffffffffffffffffffffffffffffffff169150638a3177a390630000125e906004908101630001b02f565b602060405180830381865afa158015630000127d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000012a59190630001b064565b6002546040517f0c75f80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630c75f8069063000012ff906004908101630001b02f565b602060405180830381865afa158015630000131e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000013469190630001b041565b61ffff16612710670de0b6b3a7640000630000136681614e20630001afa3565b63000013749190630001b07f565b63000013829190630001afa3565b6300001394906305f5e100630001afa3565b63000013a29190630001b0cc565b63000013b09190630001b0cc565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef90630000141590600490889086908301630001b0e6565b600060405180830381600087803b158015630000143157600080fd5b505af11580156300001447573d6000803e3d6000fd5b50506040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528816925063953730189150602401600060405180830381600087803b15801563000014b657600080fd5b505af115801563000014cc573d6000803e3d6000fd5b505050505050505050565b60008060008063000014e96300017b0b565b600080546008546040517f88327863000000000000000000000000000000000000000000000000000000008152969a50949850929650909450926201000090910473ffffffffffffffffffffffffffffffffffffffff90811692638832786392630000155e926001921690600401630001b11f565b602060405180830381865afa158015630000157d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000015a59190630001b064565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef90630000161f9060019073f39fd6e51aad88f6f4ce6ab8827279cfffb92266908a90600401630001b0e6565b600060405180830381600087803b158015630000163b57600080fd5b505af11580156300001651573d6000803e3d6000fd5b5050505060008585858863000016699190630001afa3565b63000016779190630001b0cc565b63000016859190630001b154565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa15801563000016f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000017209190630001b171565b505050509050600061271061ffff168261ffff168463000017439190630001afa3565b63000017519190630001b0cc565b90506000816300001764858b630001b07f565b63000017729190630001b07f565b60015460085460408051602481018e905260448101879052600060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fca9505e40000000000000000000000000000000000000000000000000000000017905290517fbd6af43400000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff9283169363bd6af43493630000184893169190600401630001b27c565b600060405180830381600087803b158015630000186457600080fd5b505af1158015630000187a573d6000803e3d6000fd5b50506007546040517f2362a2d80000000000000000000000000000000000000000000000000000000081526000935073ffffffffffffffffffffffffffffffffffffffff9091169150632362a2d890630000190f9073f39fd6e51aad88f6f4ce6ab8827279cfffb92266908590819083907390f79bf6eb2c4f870365e785982e1f101e93b9069083908190600401630001b2cd565b6020604051808303816000875af11580156300001930573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000019589190630001b064565b9050630000199f8160006040518060400160405280601c81526020017f52656d61696e696e672066756e6473206973206e6f74207a65726f21000000008152506300017bb8565b63000019e660018860016040518060400160405280601b81526020017f437265646974206163636f756e742062616c616e636520213d203100000000008152506300017c0a565b6008546300001a1d9060019073ffffffffffffffffffffffffffffffffffffffff166300001a16858a630001b07f565b6300017d4b565b6300001aa3600173f39fd6e51aad88f6f4ce6ab8827279cfffb9226681856300001a4a8f6002630001afa3565b6300001a589190630001b154565b6300001a669190630001b154565b6040518060400160405280601f81526020017f496e636f727265637420616d6f756e7420776572652070616964206261636b008152506300017c0a565b6300001afe60017390f79bf6eb2c4f870365e785982e1f101e93b90660006040518060400160405280601f81526020017f496e636f727265637420616d6f756e7420776572652070616964206261636b008152506300017c0a565b50505050505050505050565b60006300001b186300017b0b565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292965090945062010000900473ffffffffffffffffffffffffffffffffffffffff1692506367b4264591506300001b8090600290600401630001b02f565b602060405180830381865afa1580156300001b9f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300001bc79190630001af51565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef906300001c31906002908690633b9aca0090600401630001b0e6565b600060405180830381600087803b1580156300001c4d57600080fd5b505af11580156300001c63573d6000803e3d6000fd5b505050506300001c77600260006300017d6a565b60075473ffffffffffffffffffffffffffffffffffffffff1663654a9eda8383806300001cab633b9aca006002630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401529216604482015260648101919091526000608482015260a401600060405180830381600087803b1580156300001d3157600080fd5b505af11580156300001d47573d6000803e3d6000fd5b505050506300001d5b600260016300017d6a565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f700ca0af00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b1580156300001de857600080fd5b505af11580156300001dfe573d6000803e3d6000fd5b505060075473ffffffffffffffffffffffffffffffffffffffff16915063654a9eda9050838373c4375b7de8af5a38a93548eb8453a498222c4ff26300001e4c633b9aca006002630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401529216604482015260648101919091526000608482015260a401600060405180830381600087803b1580156300001ed257600080fd5b505af11580156300001ee8573d6000803e3d6000fd5b5050600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815291935062010000900473ffffffffffffffffffffffffffffffffffffffff1691506367b42645906300001f4e90600390600401630001b02f565b602060405180830381865afa1580156300001f6d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300001f959190630001af51565b6007546040517ff67c5bd000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80841660048301529293506000929091169063f67c5bd090602401602060405180830381865afa158015630000200d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000020359190630001b064565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b15801563000020b757600080fd5b505af115801563000020cd573d6000803e3d6000fd5b50506007546040517fa366f4960000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116925063a366f4969150602401600060405180830381600087803b158015630000213f57600080fd5b505af11580156300002155573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f700ca0af00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b15801563000021e657600080fd5b505af115801563000021fc573d6000803e3d6000fd5b505060075473ffffffffffffffffffffffffffffffffffffffff16915063654a9eda90508585856300002236633b9aca006002630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401529216604482015260648101919091526000608482015260a4015b600060405180830381600087803b15801563000022bd57600080fd5b505af115801563000022d3573d6000803e3d6000fd5b5050505050505050565b60405163000022ed90630001acf5565b604051809103906000f080158015630000230b573d6000803e3d6000fd5b50600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff9384168102919091179182905590041663b36ba2086300002377670de0b6b3a76400006064630001afa3565b6040518263ffffffff1660e01b81526004016000604051808303818588803b15801563000023a457600080fd5b505af115801563000023ba573d6000803e3d6000fd5b505050505063000023cf600160006300018266565b565b63000024d273c4375b7de8af5a38a93548eb8453a498222c4ff273ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300002470573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000024989190630001af51565b73ffffffffffffffffffffffffffffffffffffffff161415604051806060016040528060268152602001630005440e60269139630001893b565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630000255357600080fd5b505af11580156300002569573d6000803e3d6000fd5b5050600180546040517f491cc7c2000000000000000000000000000000000000000000000000000000008152600481019290925260006024830181905260448301819052606483015273ffffffffffffffffffffffffffffffffffffffff16925063491cc7c29150608401600060405180830381600087803b15801563000025f057600080fd5b505af11580156300002606573d6000803e3d6000fd5b505060405173c4375b7de8af5a38a93548eb8453a498222c4ff292507ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af9150600090a26007546040517f9f5f86ae00000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff90911690639f5f86ae90602401600060405180830381600087803b15801563000026ca57600080fd5b505af115801563000026e0573d6000803e3d6000fd5b5050505063000023cf600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300002758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000027809190630001af51565b73c4375b7de8af5a38a93548eb8453a498222c4ff2604051806060016040528060278152602001630005426760279139630001898a565b600060f49050630000287e81600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300002832573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000285a9190630001b064565b1415604051806060016040528060268152602001630005476e60269139630001893b565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b15801563000028ff57600080fd5b505af11580156300002915573d6000803e3d6000fd5b50506007546040517fa366f4960000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116925063a366f4969150602401600060405180830381600087803b158015630000298757600080fd5b505af1158015630000299d573d6000803e3d6000fd5b505050506300002a7b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300002a15573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300002a3d9190630001b064565b826040518060400160405280601f81526020017f466f726269644d61736b206973206e6f742073657420636f72726563746c79008152506300017bb8565b50565b600754604080517f2f7a188100000000000000000000000000000000000000000000000000000000815290516300002b239273ffffffffffffffffffffffffffffffffffffffff1691632f7a18819160048083019260209291908290030181865afa1580156300002af3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300002b1b9190630001af51565b306300018a02565b6001546040517f06447d5600000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273ffffffffffffffffffffffffffffffffffffffff909116906306447d5690602401600060405180830381600087803b1580156300002ba457600080fd5b505af11580156300002bba573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527feee4716900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b1580156300002c4b57600080fd5b505af11580156300002c61573d6000803e3d6000fd5b50506007546040517fd48bfca700000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff909116925063d48bfca79150602401600060405180830381600087803b1580156300002ce657600080fd5b505af11580156300002cfc573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527feee4716900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b1580156300002d8d57600080fd5b505af11580156300002da3573d6000803e3d6000fd5b50506007546040517f944ac59f000000000000000000000000000000000000000000000000000000008152600060048201819052602482018190526044820181905260648201819052608482015273ffffffffffffffffffffffffffffffffffffffff909116925063944ac59f915060a401600060405180830381600087803b1580156300002e3157600080fd5b505af11580156300002e47573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527feee4716900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b1580156300002ed857600080fd5b505af11580156300002eee573d6000803e3d6000fd5b50506007546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201526000602482015273ffffffffffffffffffffffffffffffffffffffff909116925063a70bc5429150604401600060405180830381600087803b1580156300002f7a57600080fd5b505af11580156300002f90573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527feee4716900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000302157600080fd5b505af11580156300003037573d6000803e3d6000fd5b50506007546040517fa366f4960000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063a366f4969150602401600060405180830381600087803b15801563000030a957600080fd5b505af115801563000030bf573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527feee4716900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000315057600080fd5b505af11580156300003166573d6000803e3d6000fd5b50506007546040517f6e98e5e400000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201819052602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b15801563000031f257600080fd5b505af11580156300003208573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527feee4716900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000329957600080fd5b505af115801563000032af573d6000803e3d6000fd5b50506007546040517f11ca4fc200000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201819052602482015273ffffffffffffffffffffffffffffffffffffffff90911692506311ca4fc29150604401600060405180830381600087803b158015630000333b57600080fd5b505af11580156300003351573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527feee4716900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b15801563000033e257600080fd5b505af115801563000033f8573d6000803e3d6000fd5b50506007546040517f9f5f86ae00000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff9091169250639f5f86ae9150602401600060405180830381600087803b158015630000347d57600080fd5b505af11580156300003493573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527feee4716900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000352457600080fd5b505af1158015630000353a573d6000803e3d6000fd5b50506007546040517fdc2b21c100000000000000000000000000000000000000000000000000000000815260ff600482015273ffffffffffffffffffffffffffffffffffffffff909116925063dc2b21c191506024015b600060405180830381600087803b15801563000035ad57600080fd5b505af115801563000035c3573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015630000363357600080fd5b505af11580156300003649573d6000803e3d6000fd5b50505050565b60075460009073ffffffffffffffffffffffffffffffffffffffff16638fe3f93f6300003688670de0b6b3a7640000614e20630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660248201526044016020604051808303816000875af115801563000036fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000037229190630001af51565b90506300003731816300018b48565b6007546040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015290911690639537301890602401600060405180830381600087803b15801563000037a057600080fd5b505af115801563000037b6573d6000803e3d6000fd5b5050505063000037ca600160006300017d6a565b6300002a7b63000037dc826300018f1b565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638345f26e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000384b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000038739190630001b32d565b60ff166040518060600160405280602281526020016300054307602291396300017bb8565b60005a60405160200163000038af91815260200190565b6040516020818303038152906040528051906020012060001c905060005b60288110156300003cbc576000600c821163000038ed57600063000038fc565b63000038fc600c83630001b154565b9050805b8281116300003ca157630000391563000022dd565b600754604080517f8345f26e000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638345f26e9160048083019260209291908290030181865afa1580156300003987573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000039af9190630001b32d565b60ff169050600c8263000039c6866001630001b07f565b63000039d49190630001b154565b111563000039e457506300003c89565b6000806300003a0363000039fa8588630001b154565b85896300019008565b915091506000806300003a166300017b0b565b6000549395509350505062010000900473ffffffffffffffffffffffffffffffffffffffff1663eebab8ef6001836300003a53866064630001afa3565b6040518463ffffffff1660e01b81526004016300003a7593929190630001b0e6565b600060405180830381600087803b1580156300003a9157600080fd5b505af11580156300003aa7573d6000803e3d6000fd5b505050506300003abc81858a8987630001926e565b50878581106300003aca5750845b868914156300003af8578581146300003af3576300003aec816001630001b07f565b6300003af5565b855b90505b600080546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff16906388327863906300003b5b906001908790600401630001b11f565b602060405180830381865afa1580156300003b7a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300003ba29190630001b064565b600754600b546040517f654a9eda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301529182166024820181905260448201526064810184905260848101849052929350169063654a9eda9060a401600060405180830381600087803b1580156300003c3257600080fd5b505af11580156300003c48573d6000803e3d6000fd5b505050506300003c816300003c5e846300018f1b565b836040518060600160405280602281526020016300054307602291396300017bb8565b505050505050505b806300003c9781630001b350565b9150506300003900565b506300003cb39050600882630001b07f565b905063000038cd565b5050565b6002546040517f7d6bc094000000000000000000000000000000000000000000000000000000008152600160048201526000918291829173ffffffffffffffffffffffffffffffffffffffff1690637d6bc094906024016080604051808303816000875af11580156300003d38573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300003d609190630001b38f565b6000546008546040517feebab8ef00000000000000000000000000000000000000000000000000000000815295985093965090945073ffffffffffffffffffffffffffffffffffffffff6201000090910481169363eebab8ef936300003dd2935060019216908990600401630001b3d6565b600060405180830381600087803b1580156300003dee57600080fd5b505af11580156300003e04573d6000803e3d6000fd5b505060085473ffffffffffffffffffffffffffffffffffffffff1691506396df5dc090506300003e37846002630001afa3565b6040518263ffffffff1660e01b81526004016300003e5791815260200190565b600060405180830381600087803b1580156300003e7357600080fd5b505af11580156300003e89573d6000803e3d6000fd5b505050506000846fffffffffffffffffffffffffffffffff168460026300003eb39190630001afa3565b6300003ec19190630001b07f565b6300003ee16fffffffffffffffffffffffffffffffff871686630001b07f565b6300003ef0856002630001afa3565b6300003efe9190630001afa3565b6300003f0c9190630001b0cc565b6007546040517f94cf073a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526fffffffffffffffffffffffffffffffff8916602483015260016044830152929350600092909116906394cf073a906064016020604051808303816000875af11580156300003fa5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300003fcd9190630001b064565b90506300004017816300003ff56fffffffffffffffffffffffffffffffff891688630001b07f565b604051806060016040528060248152602001630005457c602491396300017bb8565b63000040f2828473ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000406a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000040929190630001b064565b63000040a390620f4240630001afa3565b63000040b19190630001b0cc565b620f42406040518060400160405280601a81526020017f496e636f72726563742063756d756c617469766520696e64657800000000000081525063000194cc565b63000041aa8373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300004144573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000416c9190630001b064565b826040518060400160405280601881526020017f496e636f727265637420626f72726f776564416d6f756e7400000000000000008152506300017bb8565b63000041d560018483604051806060016040528060238152602001630005447e602391396300017c0a565b600854604080517f29f3d3b6000000000000000000000000000000000000000000000000000000008152905163000042c29273ffffffffffffffffffffffffffffffffffffffff16916329f3d3b69160048083019260209291908290030181865afa158015630000424a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000042729190630001b064565b876fffffffffffffffffffffffffffffffff166040518060400160405280601581526020017f496e636f7272656374206c656e6420616d6f756e7400000000000000000000008152506300017bb8565b600854604080517f2a3354c90000000000000000000000000000000000000000000000000000000081529051630000439d9273ffffffffffffffffffffffffffffffffffffffff1691632a3354c99160048083019260209291908290030181865afa1580156300004337573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000435f9190630001af51565b846040518060400160405280601681526020017f496e636f7272656374206c656e64206163636f756e7400000000000000000000815250630001898a565b505050505050565b60005a60405160200163000043bc91815260200190565b6040516020818303038152906040528051906020012060001c905060005b60288110156300003cbc576000600c821163000043fa5760006300004409565b6300004409600c83630001b154565b9050805b82811163000046ae57630000442263000022dd565b600754604080517f8345f26e000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638345f26e9160048083019260209291908290030181865afa1580156300004494573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000044bc9190630001b32d565b60ff169050600c8263000044d3866001630001b07f565b63000044e19190630001b154565b111563000044f157506300004696565b600080630000450763000039fa8588630001b154565b91509150600080630000451a6300017b0b565b6000549395509350505062010000900473ffffffffffffffffffffffffffffffffffffffff1663eebab8ef6001836300004557866064630001afa3565b6040518463ffffffff1660e01b8152600401630000457993929190630001b0e6565b600060405180830381600087803b158015630000459557600080fd5b505af115801563000045ab573d6000803e3d6000fd5b50505050600063000045c282868b8a88630001926e565b90508581111563000045d15750845b6007546040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015290911690639537301890602401600060405180830381600087803b158015630000464057600080fd5b505af11580156300004656573d6000803e3d6000fd5b50505050630000468f630000466c836300018f1b565b826040518060600160405280602281526020016300054307602291396300017bb8565b5050505050505b8063000046a481630001b350565b915050630000440d565b5063000046c09050600882630001b07f565b905063000043da565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630000474a57600080fd5b505af11580156300004760573d6000803e3d6000fd5b50506007546040517fdc2b21c100000000000000000000000000000000000000000000000000000000815260ff600482015273ffffffffffffffffffffffffffffffffffffffff909116925063dc2b21c19150602401600060405180830381600087803b15801563000047d257600080fd5b505af115801563000047e8573d6000803e3d6000fd5b5050505063000023cf600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638345f26e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300004860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000048889190630001b32d565b60ff1660ff6040518060400160405280601c81526020017f496e636f7272656374206d617820656e61626c656420746f6b656e73000000008152506300017bb8565b63000048d66300017b0b565b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f700ca0af00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000496757600080fd5b505af1158015630000497d573d6000803e3d6000fd5b50506007546040517f46fb371d00000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273c4375b7de8af5a38a93548eb8453a498222c4ff260248201819052604482015260648082015273ffffffffffffffffffffffffffffffffffffffff90911692506346fb371d91506084015b600060405180830381600087803b158015630000363357600080fd5b600180546040517f4c63e56200000000000000000000000000000000000000000000000000000000815260ff84169290921115600483015273ffffffffffffffffffffffffffffffffffffffff1690634c63e56290602401600060405180830381600087803b1580156300004a9e57600080fd5b505af11580156300004ab4573d6000803e3d6000fd5b5050505060006300004ac66300017b0b565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292965090945062010000900473ffffffffffffffffffffffffffffffffffffffff1692506367b4264591506300004b2e90600290600401630001b02f565b602060405180830381865afa1580156300004b4d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300004b759190630001af51565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef906300004bdb9060029086908890600401630001b424565b600060405180830381600087803b1580156300004bf757600080fd5b505af11580156300004c0d573d6000803e3d6000fd5b50506007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152858116602483015290911692506351e3f1609150604401600060405180830381600087803b1580156300004c8857600080fd5b505af11580156300004c9e573d6000803e3d6000fd5b505050506300004cb2600260016300017d6a565b6007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169263654a9eda928692869262010000909204909116906367b42645906300004d2590600190600401630001b02f565b602060405180830381865afa1580156300004d44573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300004d6c9190630001af51565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529091166044820152633b9aca0060648201526000608482015260a4015b600060405180830381600087803b1580156300004df657600080fd5b505af11580156300004e0c573d6000803e3d6000fd5b505050506300004e20600260006300017d6a565b505050565b6000806000806300004e376300017b0b565b600080546008546040517f88327863000000000000000000000000000000000000000000000000000000008152969a50949850929650909450926201000090910473ffffffffffffffffffffffffffffffffffffffff908116926388327863926300004eac926001921690600401630001b11f565b602060405180830381865afa1580156300004ecb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300004ef39190630001b064565b905060006300004f0e670de0b6b3a76400006064630001afa3565b9050600080808089896300004f258a83630001afa3565b6300004f339190630001b0cc565b6300004f419190630001b154565b90506000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156300004fb7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300004fdf9190630001b171565b50929550909350915060009050612710630000500161ffff861687630001afa3565b630000500f9190630001b0cc565b905080858f63000050229190630001b07f565b63000050309190630001b07f565b965063000050408383630001b463565b61ffff1661271063000050558b8a630001b07f565b63000050639190630001afa3565b63000050719190630001b0cc565b95506000612710630000508a61ffff861689630001afa3565b63000050989190630001b0cc565b905063000050a88189630001b07f565b975063000050b88183630001b07f565b6000546040517feebab8ef000000000000000000000000000000000000000000000000000000008152919a5062010000900473ffffffffffffffffffffffffffffffffffffffff16965063eebab8ef95506300005138945060019350733c44cdddb6a900fa2b585dd299e03d12fa4293bc9250879150600401630001b0e6565b600060405180830381600087803b158015630000515457600080fd5b505af1158015630000516a573d6000803e3d6000fd5b5050505063000051c9600173f39fd6e51aad88f6f4ce6ab8827279cfffb9226660006040518060400160405280601981526020017f5553455220686173206e6f6e2d7a65726f2062616c616e6365000000000000008152506300017c0a565b630000522460017390f79bf6eb2c4f870365e785982e1f101e93b90660006040518060400160405280601b81526020017f465249454e4420686173206e6f6e2d7a65726f2062616c616e636500000000008152506300017c0a565b63000052636001733c44cdddb6a900fa2b585dd299e03d12fa4293bc8360405180606001604052806028815260200163000542bc602891396300017c0a565b630000528e6001878b6040518060600160405280602b8152602001630005462e602b91396300017c0a565b60015460085460408051602481018d905260448101879052600060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fca9505e40000000000000000000000000000000000000000000000000000000017905290517fbd6af43400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169363bd6af43493630000536193911691600401630001b27c565b600060405180830381600087803b158015630000537d57600080fd5b505af11580156300005393573d6000803e3d6000fd5b50506007546040517f2362a2d80000000000000000000000000000000000000000000000000000000081526000935073ffffffffffffffffffffffffffffffffffffffff9091169150632362a2d890630000543d9073f39fd6e51aad88f6f4ce6ab8827279cfffb92266906001908790733c44cdddb6a900fa2b585dd299e03d12fa4293bc907390f79bf6eb2c4f870365e785982e1f101e93b9069089908190600401630001b2cd565b6020604051808303816000875af1158015630000545e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000054869190630001b064565b905063000054da630000549b8287630001b154565b60026040518060400160405280601981526020017f496e636f72726563742072656d61696e696e672066756e64730000000000000081525063000194cc565b630000552160018860016040518060400160405280601b81526020017f437265646974206163636f756e742062616c616e636520213d203100000000008152506300017c0a565b6300005560600173f39fd6e51aad88f6f4ce6ab8827279cfffb92266836040518060600160405280602b81526020016300054659602b91396300017c0a565b60085463000055909060019073ffffffffffffffffffffffffffffffffffffffff166300001a16868a630001b07f565b6300001afe6001733c44cdddb6a900fa2b585dd299e03d12fa4293bc600184878f8863000055c09190630001b07f565b63000055ce9190630001b154565b63000055dc9190630001b154565b63000055ea9190630001b154565b6040518060600160405280602a8152602001630005439a602a91396300017c0a565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630000568d57600080fd5b505af115801563000056a3573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f700ca0af00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000573457600080fd5b505af1158015630000574a573d6000803e3d6000fd5b50506007546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201526104b0602482015273ffffffffffffffffffffffffffffffffffffffff909116925063a70bc54291506044016300004a0e565b63000057ce6300017b0b565b50506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b158015630000585357600080fd5b505af11580156300005869573d6000803e3d6000fd5b50506007546040517f6e98e5e400000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201527390f79bf6eb2c4f870365e785982e1f101e93b906602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b158015630000590857600080fd5b505af1158015630000591e573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fad40d9e900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b15801563000059af57600080fd5b505af115801563000059c5573d6000803e3d6000fd5b50506001546040517fca669fa700000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b1580156300005a4a57600080fd5b505af11580156300005a60573d6000803e3d6000fd5b50506007546040517f46fb371d00000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273c4375b7de8af5a38a93548eb8453a498222c4ff260248201819052604482015260648082015273ffffffffffffffffffffffffffffffffffffffff90911692506346fb371d9150608401600060405180830381600087803b1580156300005b0c57600080fd5b505af11580156300005b22573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fad40d9e900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b1580156300005bb357600080fd5b505af11580156300005bc9573d6000803e3d6000fd5b50506001546040517fca669fa700000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b1580156300005c4e57600080fd5b505af11580156300005c64573d6000803e3d6000fd5b50506007546040517f46fb371d00000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048201526000602482015273c4375b7de8af5a38a93548eb8453a498222c4ff2604482015260648082015273ffffffffffffffffffffffffffffffffffffffff90911692506346fb371d91506084016300004a0e565b600754604080517f2f7a188100000000000000000000000000000000000000000000000000000000815290516300005d709273ffffffffffffffffffffffffffffffffffffffff1691632f7a18819160048083019260209291908290030181865afa1580156300002af3573d6000803e3d6000fd5b6001546040517f06447d5600000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273ffffffffffffffffffffffffffffffffffffffff909116906306447d5690602401600060405180830381600087803b1580156300005df157600080fd5b505af11580156300005e07573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd8026b2200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b1580156300005e9857600080fd5b505af11580156300005eae573d6000803e3d6000fd5b50506007546040517f8fe3f93f00000000000000000000000000000000000000000000000000000000815262030d40600482015230602482015273ffffffffffffffffffffffffffffffffffffffff9091169250638fe3f93f91506044016020604051808303816000875af11580156300005f2d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300005f559190630001af51565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd8026b2200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b1580156300005fe357600080fd5b505af11580156300005ff9573d6000803e3d6000fd5b50506007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632362a2d8915063000060999073c4375b7de8af5a38a93548eb8453a498222c4ff290600190600090839081907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908490600401630001b2cd565b6020604051808303816000875af115801563000060ba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000060e29190630001b064565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd8026b2200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b158015630000617057600080fd5b505af11580156300006186573d6000803e3d6000fd5b50506007546040517f94cf073a00000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201526064602482018190526001604483015273ffffffffffffffffffffffffffffffffffffffff90921693506394cf073a9250016020604051808303816000875af1158015630000621e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000062469190630001b064565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd8026b2200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b15801563000062d457600080fd5b505af115801563000062ea573d6000803e3d6000fd5b50506007546040517f830aa74500000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff26004820181905260248201819052604482015260648082015273ffffffffffffffffffffffffffffffffffffffff909116925063830aa7459150608401600060405180830381600087803b158015630000638357600080fd5b505af11580156300006399573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd8026b2200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000642a57600080fd5b505af11580156300006440573d6000803e3d6000fd5b50506007546040517fe1998cf900000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201819052602482015273ffffffffffffffffffffffffffffffffffffffff909116925063e1998cf99150604401600060405180830381600087803b15801563000064cc57600080fd5b505af115801563000064e2573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fd8026b2200000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000657357600080fd5b505af11580156300006589573d6000803e3d6000fd5b50506007546040517f29df0b9300000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff90911692506329df0b9391506024016300003591565b600063000066076300017b0b565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292965090945062010000900473ffffffffffffffffffffffffffffffffffffffff1692506367b426459150630000666f90600290600401630001b02f565b602060405180830381865afa158015630000668e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000066b69190630001af51565b905063000066c8600260006300017d6a565b6007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152909116906351e3f16090604401600060405180830381600087803b158015630000673f57600080fd5b505af11580156300006755573d6000803e3d6000fd5b505050506300006769600260016300017d6a565b6007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152909116906351e3f16090604401600060405180830381600087803b15801563000067e057600080fd5b505af115801563000067f6573d6000803e3d6000fd5b505050506300003cbc600260016300017d6a565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015261221d916104d1916104c4916104c591611e619173ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b158015630000689d57600080fd5b505af115801563000068b3573d6000803e3d6000fd5b50506007546040517f944ac59f00000000000000000000000000000000000000000000000000000000815261ffff808a1660048301528089166024830152808816604483015280871660648301528516608482015273ffffffffffffffffffffffffffffffffffffffff909116925063944ac59f915060a401600060405180830381600087803b158015630000694857600080fd5b505af1158015630000695e573d6000803e3d6000fd5b505050506000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa15801563000069d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300006a019190630001b171565b945094509450945094506300006a578561ffff168b61ffff166040518060400160405280601581526020017f496e636f727265637420666565496e74657265737400000000000000000000008152506300017bb8565b6300006aa38461ffff168a61ffff166040518060400160405280601881526020017f496e636f7272656374206665654c69717569646174696f6e00000000000000008152506300017bb8565b6300006aef8361ffff168961ffff166040518060400160405280601d81526020017f496e636f7272656374206c69717569646174696f6e446973636f756e740000008152506300017bb8565b6300006b3b8261ffff168861ffff166040518060400160405280601f81526020017f496e636f7272656374206665654c69717569646174696f6e45787069726564008152506300017bb8565b6300001afe8161ffff168761ffff1660405180606001604052806023815260200163000542e4602391396300017bb8565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb5ba4c4d00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b1580156300006bf957600080fd5b505af11580156300006c0f573d6000803e3d6000fd5b50506007546040517fe958b70400000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273ffffffffffffffffffffffffffffffffffffffff909116925063e958b7049150602401602060405180830381865afa1580156300006c97573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300006cbf9190630001af51565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb5ba4c4d00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b1580156300006d4d57600080fd5b505af11580156300006d63573d6000803e3d6000fd5b50506007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632362a2d891506300006e179073f39fd6e51aad88f6f4ce6ab8827279cfffb922669060019060009073c4375b7de8af5a38a93548eb8453a498222c4ff29081907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908490600401630001b2cd565b6020604051808303816000875af11580156300006e38573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300006e609190630001b064565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb5ba4c4d00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b1580156300006eee57600080fd5b505af11580156300006f04573d6000803e3d6000fd5b50506007546040517fe1998cf900000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273c4375b7de8af5a38a93548eb8453a498222c4ff2602482015273ffffffffffffffffffffffffffffffffffffffff909116925063e1998cf99150604401600060405180830381600087803b1580156300006fa357600080fd5b505af11580156300006fb9573d6000803e3d6000fd5b5050600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815291935062010000900473ffffffffffffffffffffffffffffffffffffffff1691506367b4264590630000701f90600190600401630001b02f565b602060405180830381865afa158015630000703e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000070669190630001af51565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb5ba4c4d00000000000000000000000000000000000000000000000000000000600482015291925073ffffffffffffffffffffffffffffffffffffffff169063c31eb0e090602401600060405180830381600087803b15801563000070f457600080fd5b505af1158015630000710a573d6000803e3d6000fd5b50506007546040517f46fb371d00000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273c4375b7de8af5a38a93548eb8453a498222c4ff2602482015273ffffffffffffffffffffffffffffffffffffffff858116604483015260648083015290911692506346fb371d9150608401600060405180830381600087803b15801563000071b757600080fd5b505af115801563000071cd573d6000803e3d6000fd5b50506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b158015630000725257600080fd5b505af11580156300007268573d6000803e3d6000fd5b50506007546040517f6e98e5e400000000000000000000000000000000000000000000000000000000815230600482015273c4375b7de8af5a38a93548eb8453a498222c4ff2602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b15801563000072f357600080fd5b505af11580156300007309573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb5ba4c4d00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000739a57600080fd5b505af115801563000073b0573d6000803e3d6000fd5b5050600754604080518082018252600281527f6464000000000000000000000000000000000000000000000000000000000000602082015290517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169350636ce4074a9250630000746a9173f39fd6e51aad88f6f4ce6ab8827279cfffb922669173c4375b7de8af5a38a93548eb8453a498222c4ff291600401630001b48c565b6000604051808303816000875af1158015630000748b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526300003cbc9190810190630001b59c565b600063000074e36300017b0b565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292965090945062010000900473ffffffffffffffffffffffffffffffffffffffff1692506367b426459150630000754b90600290600401630001b02f565b602060405180830381865afa158015630000756a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000075929190630001af51565b600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152929350600092909116906370a0823190602401602060405180830381865afa158015630000760a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000076329190630001b064565b6007546040517f3e8297ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015292935063000076fa9290911690633e8297ca906024015b602060405180830381865afa15801563000076ae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000076d69190630001b064565b60006040518060600160405280602281526020016300054329602291396300017bb8565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630000777b57600080fd5b505af11580156300007791573d6000803e3d6000fd5b50506007546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152610fa06024830152909116925063a70bc5429150604401600060405180830381600087803b158015630000780c57600080fd5b505af11580156300007822573d6000803e3d6000fd5b50506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b15801563000078a757600080fd5b505af115801563000078bd573d6000803e3d6000fd5b5050600754600b546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261138860248201529116925063a70bc5429150604401600060405180830381600087803b158015630000793a57600080fd5b505af11580156300007950573d6000803e3d6000fd5b5050600754600b5473ffffffffffffffffffffffffffffffffffffffff918216935063654a9eda9250869186911664012a05f200630000799c670de0b6b3a7640000610fa0630001afa3565b63000079aa9088630001b154565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015293851660248501529390911660448301526064820152608481019190915260a401600060405180830381600087803b1580156300007a3057600080fd5b505af11580156300007a46573d6000803e3d6000fd5b50506007546040517f3e8297ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526300004e2094509091169150633e8297ca90602401602060405180830381865afa1580156300007ac2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300007aea9190630001b064565b60006040518060600160405280602581526020016300054723602591396300017bb8565b6000806300007b1d6300017b0b565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815294965090945062010000900473ffffffffffffffffffffffffffffffffffffffff169263eebab8ef92506300007b88915060019085908790600401630001b0e6565b600060405180830381600087803b1580156300007ba457600080fd5b505af11580156300007bba573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff16915063eebab8ef90506003836300007bfd670de0b6b3a764000083630001afa3565b6040518463ffffffff1660e01b81526004016300007c1f93929190630001b0e6565b600060405180830381600087803b1580156300007c3b57600080fd5b505af11580156300007c51573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350859262010000909204909116906367b42645906300007cc690600390600401630001b02f565b602060405180830381865afa1580156300007ce5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300007d0d9190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1580156300007d7c57600080fd5b505af11580156300007d92573d6000803e3d6000fd5b50506007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632362a2d891506300007e3a9073f39fd6e51aad88f6f4ce6ab8827279cfffb92266906001908790733c44cdddb6a900fa2b585dd299e03d12fa4293bc907390f79bf6eb2c4f870365e785982e1f101e93b906906000908590600401630001b2cd565b6020604051808303816000875af11580156300007e5b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300007e839190630001b064565b506300007e9560038260016300017d4b565b6300003cbc7390f79bf6eb2c4f870365e785982e1f101e93b90660016300007ec8670de0b6b3a76400006003630001afa3565b6300007ed69190630001b154565b60405180606001604052806037815260200163000545f760379139630001951f565b60006300007f066300017b0b565b6000546040517f6a72bde700000000000000000000000000000000000000000000000000000000815291955062010000900473ffffffffffffffffffffffffffffffffffffffff169350636a72bde792506300007f869150600190859073c4375b7de8af5a38a93548eb8453a498222c4ff29060c890600401630001b5ef565b600060405180830381600087803b1580156300007fa257600080fd5b505af11580156300007fb8573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506346fb371d935073f39fd6e51aad88f6f4ce6ab8827279cfffb922669273c4375b7de8af5a38a93548eb8453a498222c4ff29262010000900416906367b4264590630000805490600190600401630001b02f565b602060405180830381865afa1580156300008073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000809b9190630001af51565b600263000080b5670de0b6b3a7640000614e20630001afa3565b63000080c39190630001b0cc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b158015630000814257600080fd5b505af11580156300008158573d6000803e3d6000fd5b505050506300002a7b60018273c4375b7de8af5a38a93548eb8453a498222c4ff26002670de0b6b3a7640000614e2063000081959190630001afa3565b63000081a39190630001b0cc565b63000195cb565b600754604080517f9af1d35a000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691639af1d35a9160048083019260a09291908290030181865afa158015630000821c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000082449190630001b171565b50506001549193505073ffffffffffffffffffffffffffffffffffffffff169050634c63e562831580159063000082a457506127106300008293670de0b6b3a764000061ffff8616630001afa3565b63000082a19190630001b0cc565b84105b6040518263ffffffff1660e01b815260040163000082c6911515815260200190565b600060405180830381600087803b15801563000082e257600080fd5b505af115801563000082f8573d6000803e3d6000fd5b505050506000630000830a6300017b0b565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292965090945062010000900473ffffffffffffffffffffffffffffffffffffffff1692506367b426459150630000837290600290600401630001b02f565b602060405180830381865afa1580156300008391573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000083b99190630001af51565b600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156300008431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000084599190630001b064565b600754600b546040517f7832743800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152929350600092911690637832743890602401602060405180830381865afa15801563000084d3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000084fb9190630001b041565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b158015630000857d57600080fd5b505af11580156300008593573d6000803e3d6000fd5b50506007546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015261ffff86166024830152909116925063a70bc5429150604401600060405180830381600087803b158015630000861057600080fd5b505af11580156300008626573d6000803e3d6000fd5b505050506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000869b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000086c39190630001af51565b600b546040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff918216602482015291169063f9a6503090604401602060405180830381865afa158015630000873b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000087639190630001b064565b905060006b033b2e3c9fd0803ce80000008263000087838a83630001b154565b63000087919190630001afa3565b630000879f9190630001b0cc565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300008812573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000883a9190630001af51565b6040517f7afb01040000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff88811660248301529190911690637afb010490604401602060405180830381865afa15801563000088b1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000088d99190630001b064565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef90630000893f906002908b908690600401630001b0e6565b600060405180830381600087803b158015630000895b57600080fd5b505af11580156300008971573d6000803e3d6000fd5b5050600054600754604080517f2630c12f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff620100009094048416955063eebab8ef94506004938d931691632630c12f918186019160209190819003870181865afa15801563000089fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300008a229190630001af51565b6000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831692637afb0104928d9262010000909104909116906367b42645906300008a8f906004908101630001b02f565b602060405180830381865afa1580156300008aae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300008ad69190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa1580156300008b47573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300008b6f9190630001b064565b6040518463ffffffff1660e01b81526004016300008b9193929190630001b0e6565b600060405180830381600087803b1580156300008bad57600080fd5b505af11580156300008bc3573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f16093508b9262010000909204909116906367b42645906300008c37906004908101630001b02f565b602060405180830381865afa1580156300008c56573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300008c7e9190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1580156300008ced57600080fd5b505af11580156300008d03573d6000803e3d6000fd5b50505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300008d76573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300008d9e9190630001af51565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff8881166024830152919091169063f9a6503090604401602060405180830381865afa1580156300008e15573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300008e3d9190630001b064565b9150826300008e5a6b033b2e3c9fd0803ce800000084630001afa3565b6300008e689190630001b0cc565b6300008e82906b033b2e3c9fd0803ce8000000630001b154565b6000546040517f8eb86e8b000000000000000000000000000000000000000000000000000000008152919a5062010000900473ffffffffffffffffffffffffffffffffffffffff1690638eb86e8b906300008ee8906001908b908a90600401630001b0e6565b600060405180830381600087803b1580156300008f0457600080fd5b505af11580156300008f1a573d6000803e3d6000fd5b505050506000898961ffff166300008f349190630001b0cc565b6300008f43906002630001b07f565b90506000805b82811015630000914b576300008f618c83630001b07f565b91506127106300008f846b033b2e3c9fd0803ce800000061ffff8e16630001afa3565b6300008f929190630001b0cc565b8211156300008fac576300008fa763000195eb565b600191505b600754600b546040517f654a9eda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d8116600483015291821660248201528b82166044820152606481018b90526000608482015291169063654a9eda9060a401600060405180830381600087803b158015630000903b57600080fd5b505af11580156300009051573d6000803e3d6000fd5b50506007546040517f3e8297ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e81166004830152630000913394509091169150633e8297ca90602401602060405180830381865afa15801563000090cd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000090f59190630001b064565b836040518060400160405280601981526020017f496e636f72726563742063756d756c61746976652064726f70000000000000008152506300017bb8565b80630000914181630001b350565b9150506300008f49565b505050505050505050505050565b600754604080517f2f7a1881000000000000000000000000000000000000000000000000000000008152905163000091ce9273ffffffffffffffffffffffffffffffffffffffff1691632f7a18819160048083019260209291908290030181865afa1580156300002af3573d6000803e3d6000fd5b6001546040517f06447d5600000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273ffffffffffffffffffffffffffffffffffffffff909116906306447d5690602401600060405180830381600087803b158015630000924f57600080fd5b505af11580156300009265573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fad40d9e900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b15801563000092f657600080fd5b505af1158015630000930c573d6000803e3d6000fd5b50506007546040517f46fb371d00000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff26004820181905260248201819052604482015260648082015273ffffffffffffffffffffffffffffffffffffffff90911692506346fb371d9150608401600060405180830381600087803b15801563000093a557600080fd5b505af115801563000093bb573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f5d2e3a7400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000944c57600080fd5b505af11580156300009462573d6000803e3d6000fd5b5050600754604080518082018252600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169350636ce4074a925063000095089173c4375b7de8af5a38a93548eb8453a498222c4ff2918291600401630001b48c565b6000604051808303816000875af11580156300009529573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405263000095739190810190630001b59c565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fad40d9e900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b158015630000960157600080fd5b505af11580156300009617573d6000803e3d6000fd5b50506007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201819052602482015273ffffffffffffffffffffffffffffffffffffffff90911692506351e3f1609150604401600060405180830381600087803b15801563000096a357600080fd5b505af115801563000096b9573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fad40d9e900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000974a57600080fd5b505af11580156300009760573d6000803e3d6000fd5b50506007546040517f654a9eda00000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201819052602482018190526044820152600060648201819052608482015273ffffffffffffffffffffffffffffffffffffffff909116925063654a9eda915060a401600060405180830381600087803b158015630000980157600080fd5b505af11580156300009817573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fad40d9e900000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b15801563000098a857600080fd5b505af115801563000098be573d6000803e3d6000fd5b50506007546040517f9537301800000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff9091169250639537301891506024016300003591565b630000993d6001806300018266565b6000630000994b6300017b0b565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292965090945062010000900473ffffffffffffffffffffffffffffffffffffffff1692506367b42645915063000099b390600290600401630001b02f565b602060405180830381865afa15801563000099d2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000099fa9190630001af51565b6007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015280841660248301529293509116906351e3f16090604401600060405180830381600087803b1580156300009a7357600080fd5b505af11580156300009a89573d6000803e3d6000fd5b505050506300009a9d600260016300017d6a565b6007546040517f0d8f9cee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152909116908190630d8f9cee90604401600060405180830381600087803b1580156300009b1657600080fd5b505af11580156300009b2c573d6000803e3d6000fd5b505050506300009b40600260006300017d6a565b6040517f0d8f9cee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152821690630d8f9cee906044016300004dda565b6000806300009bad6300017b0b565b9350505091506300009d14600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300009c27573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300009c4f9190630001af51565b73ffffffffffffffffffffffffffffffffffffffff166313d8c8406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300009c9b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300009cc39190630001af51565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141560405180606001604052806022815260200163000546aa60229139630001893b565b6000546040517feebab8ef0000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef906300009d789060019085908790600401630001b0e6565b600060405180830381600087803b1580156300009d9457600080fd5b505af11580156300009daa573d6000803e3d6000fd5b50506001805473ffffffffffffffffffffffffffffffffffffffff169250631f7b4f3091506300009dde904390630001b07f565b6040518263ffffffff1660e01b81526004016300009dfe91815260200190565b600060405180830381600087803b1580156300009e1a57600080fd5b505af11580156300009e30573d6000803e3d6000fd5b50506007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632362a2d891506300009eaf9073f39fd6e51aad88f6f4ce6ab8827279cfffb922669060009081908390819083908190600401630001b2cd565b6020604051808303816000875af11580156300009ed0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300009ef89190630001b064565b50630000a02c81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300009f6e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300009f969190630001af51565b73ffffffffffffffffffffffffffffffffffffffff166313d8c8406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300009fe2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000a00a9190630001af51565b6040518060600160405280602d815260200163000545a0602d9139630001898a565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb5ba4c4d00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b158015630000a0b957600080fd5b505af1158015630000a0cf573d6000803e3d6000fd5b50506007546040517fe958b70400000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273ffffffffffffffffffffffffffffffffffffffff909116925063e958b7049150602401602060405180830381865afa158015630000a157573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300004e209190630001af51565b600080600080630000a1916300017b0b565b600080546008546040517f88327863000000000000000000000000000000000000000000000000000000008152969a50949850929650909450926201000090910473ffffffffffffffffffffffffffffffffffffffff90811692638832786392630000a206926001921690600401630001b11f565b602060405180830381865afa158015630000a225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000a24d9190630001b064565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef90630000a2b39060019086908a90600401630001b0e6565b600060405180830381600087803b158015630000a2cf57600080fd5b505af1158015630000a2e5573d6000803e3d6000fd5b50505050600085858588630000a2fd9190630001afa3565b630000a30b9190630001b0cc565b630000a3199190630001b154565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa158015630000a38c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000a3b49190630001b171565b505050509050600061271061ffff168261ffff1684630000a3d79190630001afa3565b630000a3e59190630001b0cc565b9050600081630000a3f8858b630001b07f565b630000a4069190630001b07f565b60015460085460408051602481018e905260448101879052600060648083019190915282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fca9505e40000000000000000000000000000000000000000000000000000000017905290517fbd6af43400000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff9283169363bd6af43493630000a4dc93169190600401630001b27c565b600060405180830381600087803b158015630000a4f857600080fd5b505af1158015630000a50e573d6000803e3d6000fd5b50506007546040517f2362a2d80000000000000000000000000000000000000000000000000000000081526000935073ffffffffffffffffffffffffffffffffffffffff9091169150632362a2d890630000a5a39073f39fd6e51aad88f6f4ce6ab8827279cfffb92266908590819083907390f79bf6eb2c4f870365e785982e1f101e93b9069083908190600401630001b2cd565b6020604051808303816000875af1158015630000a5c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000a5ec9190630001b064565b9050630000a6338160006040518060400160405280601c81526020017f52656d61696e696e672066756e6473206973206e6f74207a65726f21000000008152506300017bb8565b630000a64460018860016300017d4b565b600854630000a6749060019073ffffffffffffffffffffffffffffffffffffffff166300001a16858a630001b07f565b6300001afe60017390f79bf6eb2c4f870365e785982e1f101e93b90681856300001a4a8f6002630001afa3565b630000a6ad6300017b0b565b50506007546040517f8fe3f93f000000000000000000000000000000000000000000000000000000008152600160048201527390f79bf6eb2c4f870365e785982e1f101e93b906602482015273ffffffffffffffffffffffffffffffffffffffff9091169250638fe3f93f91506044016020604051808303816000875af1158015630000a73e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000a7669190630001af51565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f9e59609e00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b158015630000a7f457600080fd5b505af1158015630000a80a573d6000803e3d6000fd5b50506007546040517fe1998cf900000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048201526000602482015273ffffffffffffffffffffffffffffffffffffffff909116925063e1998cf99150604401600060405180830381600087803b158015630000a89657600080fd5b505af1158015630000a8ac573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f9e59609e00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000a93d57600080fd5b505af1158015630000a953573d6000803e3d6000fd5b50506007546040517fe1998cf90000000000000000000000000000000000000000000000000000000081527390f79bf6eb2c4f870365e785982e1f101e93b906600482015273f39fd6e51aad88f6f4ce6ab8827279cfffb92266602482015273ffffffffffffffffffffffffffffffffffffffff909116925063e1998cf991506044016300004a0e565b6001546040517f4c63e562000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400006fffffffffffffffffffffffffffffffff8b1611600482015273ffffffffffffffffffffffffffffffffffffffff90911690634c63e56290602401600060405180830381600087803b158015630000aa6657600080fd5b505af1158015630000aa7c573d6000803e3d6000fd5b50506000546008546040517feebab8ef00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff620100009093048316945063eebab8ef9350630000aae89260019216908d90600401630001b3d6565b600060405180830381600087803b158015630000ab0457600080fd5b505af1158015630000ab1a573d6000803e3d6000fd5b50506002546040517f7d6bc0940000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8c1660048201526000935073ffffffffffffffffffffffffffffffffffffffff9091169150637d6bc094906024016080604051808303816000875af1158015630000aba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000abcd9190630001b38f565b9350505050886fffffffffffffffffffffffffffffffff16886fffffffffffffffffffffffffffffffff161115630000ac945760005462010000900473ffffffffffffffffffffffffffffffffffffffff1663eebab8ef600183630000ac358d8d630001b635565b6040518463ffffffff1660e01b8152600401630000ac5793929190630001b3d6565b600060405180830381600087803b158015630000ac7357600080fd5b505af1158015630000ac89573d6000803e3d6000fd5b50505050630000ad22565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16638eb86e8b600183630000acc98c8e630001b635565b6040518463ffffffff1660e01b8152600401630000aceb93929190630001b3d6565b600060405180830381600087803b158015630000ad0757600080fd5b505af1158015630000ad1d573d6000803e3d6000fd5b505050505b630000ad446001828a6fffffffffffffffffffffffffffffffff166300017d4b565b630000ad666002886fffffffffffffffffffffffffffffffff16866300019885565b630000ad886004876fffffffffffffffffffffffffffffffff16856300019885565b630000adaa6003866fffffffffffffffffffffffffffffffff16846300019885565b6002546040517f0c75f806000000000000000000000000000000000000000000000000000000008152600091670de0b6b3a76400009173ffffffffffffffffffffffffffffffffffffffff90911690630c75f80690630000ae1290600190600401630001b02f565b602060405180830381865afa158015630000ae31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000ae599190630001b041565b61ffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a3177a360016040518263ffffffff1660e01b8152600401630000aebd9190630001b02f565b602060405180830381865afa158015630000aedc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000af049190630001b064565b6000546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690638832786390630000af66906001908990600401630001b11f565b602060405180830381865afa158015630000af85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000afad9190630001b064565b630000afbb9190630001afa3565b630000afc99190630001afa3565b630000afd79190630001b0cc565b90508415630000b20c57600280546040517f0c75f806000000000000000000000000000000000000000000000000000000008152620f42409273ffffffffffffffffffffffffffffffffffffffff90921691630c75f80691630000b0409190600401630001b02f565b602060405180830381865afa158015630000b05f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b0879190630001b041565b61ffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a3177a360026040518263ffffffff1660e01b8152600401630000b0eb9190630001b02f565b602060405180830381865afa158015630000b10a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b1329190630001b064565b6000546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690638832786390630000b194906002908990600401630001b11f565b602060405180830381865afa158015630000b1b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b1db9190630001b064565b630000b1e99190630001afa3565b630000b1f79190630001afa3565b630000b2059190630001b0cc565b630000b20f565b60005b630000b21d9082630001b07f565b90508315630000b454576002546040517f0c75f806000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400009173ffffffffffffffffffffffffffffffffffffffff1690630c75f80690630000b289906004908101630001b02f565b602060405180830381865afa158015630000b2a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b2d09190630001b041565b61ffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a3177a360046040518263ffffffff1660e01b8152600401630000b3349190630001b02f565b602060405180830381865afa158015630000b353573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b37b9190630001b064565b6000546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690638832786390630000b3dc9060049089908201630001b11f565b602060405180830381865afa158015630000b3fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b4239190630001b064565b630000b4319190630001afa3565b630000b43f9190630001afa3565b630000b44d9190630001b0cc565b630000b457565b60005b630000b4659082630001b07f565b90508215630000b69e576002546040517f0c75f806000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400009173ffffffffffffffffffffffffffffffffffffffff1690630c75f80690630000b4d290600390600401630001b02f565b602060405180830381865afa158015630000b4f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b5199190630001b041565b61ffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a3177a360036040518263ffffffff1660e01b8152600401630000b57d9190630001b02f565b602060405180830381865afa158015630000b59c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b5c49190630001b064565b6000546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff1690638832786390630000b626906003908990600401630001b11f565b602060405180830381865afa158015630000b645573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b66d9190630001b064565b630000b67b9190630001afa3565b630000b6899190630001afa3565b630000b6979190630001b0cc565b630000b6a1565b60005b630000b6af9082630001b07f565b6007546040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015292935060009290911690633192195c906024016040805180830381865afa158015630000b726573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b74e9190630001b664565b9150506000670de0b6b3a7640000600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a3177a360016040518263ffffffff1660e01b8152600401630000b7bc9190630001b02f565b602060405180830381865afa158015630000b7db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000b8039190630001b064565b630000b81361271085630001afa3565b630000b8219190630001afa3565b630000b82f9190630001b0cc565b90508083108015630000b8e4576001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f532e7bb600000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b158015630000b8c957600080fd5b505af1158015630000b8df573d6000803e3d6000fd5b505050505b6007546040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015290911690639537301890602401600060405180830381600087803b158015630000b95357600080fd5b505af1158015630000b969573d6000803e3d6000fd5b5050505050505050505050505050505050565b60005460085473ffffffffffffffffffffffffffffffffffffffff6201000090920482169163eebab8ef9160019116600a630000b9cc6fffffffffffffffffffffffffffffffff600e630001afa3565b630000b9da9190630001b0cc565b6040518463ffffffff1660e01b8152600401630000b9fc93929190630001b0e6565b600060405180830381600087803b158015630000ba1857600080fd5b505af1158015630000ba2e573d6000803e3d6000fd5b5050600254600092508291508190819073ffffffffffffffffffffffffffffffffffffffff16637d6bc094600a630000ba7a6fffffffffffffffffffffffffffffffff600e630001afa3565b630000ba889190630001b0cc565b6040518263ffffffff1660e01b8152600401630000baa891815260200190565b6080604051808303816000875af1158015630000bac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000baf19190630001b38f565b6007546040517f94cf073a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80841660048301526fffffffffffffffffffffffffffffffff8c166024830152600060448301819052969a5094985092965090945085939216906394cf073a906064016020604051808303816000875af1158015630000bb93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000bbbb9190630001b064565b9050630000bbe3816300003ff56fffffffffffffffffffffffffffffffff8a1689630001b154565b630000bc9b8373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000bc35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000bc5d9190630001b064565b836040518060400160405280601a81526020017f496e636f72726563742063756d756c617469766520696e6465780000000000008152506300017bb8565b630000bced8373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300004144573d6000803e3d6000fd5b630000bd4f84600a630000bd0488600c630001afa3565b630000bd129190630001b0cc565b6040518060400160405280601f81526020017f546573742069732064657369676e656420666f72203230252067726f777468008152506300017bb8565b6000600a630000bd62886002630001afa3565b630000bd709190630001b0cc565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa158015630000bde3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000be0b9190630001b171565b505050509050600061271061ffff168261ffff1684630000be2e9190630001afa3565b630000be3c9190630001b0cc565b90506300001afe60018783868e6fffffffffffffffffffffffffffffffff168e630000be6a9190630001b154565b630000be789190630001b154565b630000be869190630001b154565b604051806060016040528060238152602001630005447e602391396300017c0a565b6000546008546040517feebab8ef0000000000000000000000000000000000000000000000000000000081526201000090920473ffffffffffffffffffffffffffffffffffffffff9081169263eebab8ef92630000bf12926001929116908690600401630001b3d6565b600060405180830381600087803b158015630000bf2e57600080fd5b505af1158015630000bf44573d6000803e3d6000fd5b50506002546040517f7d6bc0940000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff851660048201526000935073ffffffffffffffffffffffffffffffffffffffff9091169150637d6bc094906024016080604051808303816000875af1158015630000bfcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000bff79190630001b38f565b93505050506000826fffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000c062573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000c08a9190630001b064565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbcb313b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000c0fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000c1259190630001b064565b9050600082630000c1388386630001afa3565b630000c1469190630001b0cc565b6007546040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015292935060009283921690633192195c906024016040805180830381865afa158015630000c1bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000c1e59190630001b664565b91509150630000c22d82876040518060400160405280601981526020017f496e636f727265637420626f72726f77656420616d6f756e74000000000000008152506300017bb8565b63000022d381846040518060400160405280601981526020017f496e636f727265637420626f72726f77656420616d6f756e74000000000000008152506300017bb8565b6000630000c27f6300017b0b565b93505050506000604051630000c29690630001ad04565b604051809103906000f080158015630000c2b4573d6000803e3d6000fd5b506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b158015630000c33757600080fd5b505af1158015630000c34d573d6000803e3d6000fd5b50506007546040517fd48bfca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152909116925063d48bfca79150602401600060405180830381600087803b158015630000c3c057600080fd5b505af1158015630000c3d6573d6000803e3d6000fd5b505060075473ffffffffffffffffffffffffffffffffffffffff1691506346fb371d905073f39fd6e51aad88f6f4ce6ab8827279cfffb9226673c4375b7de8af5a38a93548eb8453a498222c4ff2846002630000c43f670de0b6b3a7640000614e20630001afa3565b630000c44d9190630001b0cc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b158015630000c4cc57600080fd5b505af1158015630000c4e2573d6000803e3d6000fd5b505060075473ffffffffffffffffffffffffffffffffffffffff1691506346fb371d905073f39fd6e51aad88f6f4ce6ab8827279cfffb9226673c4375b7de8af5a38a93548eb8453a498222c4ff2846002630000c54b670de0b6b3a7640000614e20630001afa3565b630000c5599190630001b0cc565b630000c568906002630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b158015630000c5e757600080fd5b505af1158015630000c5fd573d6000803e3d6000fd5b505050506300003cbc818373c4375b7de8af5a38a93548eb8453a498222c4ff26002670de0b6b3a7640000614e20630000c6399190630001afa3565b630000c6479190630001b0cc565b630000c656906002630001afa3565b6300019ae6565b600354604080517f9068a868000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691639068a8689160048083019260209291908290030181865afa158015630000c6cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000c6f79190630001af51565b73ffffffffffffffffffffffffffffffffffffffff16638f7dcfa36040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000c743573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000c76b9190630001af51565b6008546040517f96df5dc00000000000000000000000000000000000000000000000000000000081526103f46004820181905292935043929173ffffffffffffffffffffffffffffffffffffffff16906396df5dc090602401600060405180830381600087803b158015630000c7e057600080fd5b505af1158015630000c7f6573d6000803e3d6000fd5b50506007546000925073ffffffffffffffffffffffffffffffffffffffff169050638fe3f93f630000c834670de0b6b3a7640000614e20630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660248201526044016020604051808303816000875af1158015630000c8a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000c8ce9190630001af51565b9050630000c8f9818560405180606001604052806021815260200163000544da60219139630001898a565b630000c9ad8173ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000c94b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000c9739190630001b064565b630000c98b670de0b6b3a7640000614e20630001afa3565b60405180606001604052806023815260200163000546cc602391396300017bb8565b630000ca658173ffffffffffffffffffffffffffffffffffffffff16633dc54b406040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000c9ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000ca279190630001b064565b846040518060400160405280601981526020017f496e636f72726563742073696e63652073657420696e204341000000000000008152506300017bb8565b630000cb1d8173ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000cab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000cadf9190630001b064565b836040518060400160405280601981526020017f496e636f72726563742073696e63652073657420696e204341000000000000008152506300017bb8565b630000cb3d6001826300001a16670de0b6b3a7640000614e20630001afa3565b600854604080517f29f3d3b60000000000000000000000000000000000000000000000000000000081529051630000cc149273ffffffffffffffffffffffffffffffffffffffff16916329f3d3b69160048083019260209291908290030181865afa158015630000cbb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000cbda9190630001b064565b630000cbf2670de0b6b3a7640000614e20630001afa3565b6040518060600160405280602981526020016300054434602991396300017bb8565b600854604080517f2a3354c90000000000000000000000000000000000000000000000000000000081529051630000ccd49273ffffffffffffffffffffffffffffffffffffffff1691632a3354c99160048083019260209291908290030181865afa158015630000cc89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000ccb19190630001af51565b82604051806060016040528060328152602001630005452960329139630001898a565b6007546040517f055ee9b500000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb922666004820152630000cda79173ffffffffffffffffffffffffffffffffffffffff169063055ee9b590602401602060405180830381865afa158015630000cd5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000cd849190630001af51565b826040518060600160405280602a815260200163000545cd602a9139630001898a565b6007546040517f8991b2f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526300003649921690638991b2f190602401602060405180830381865afa158015630000ce1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000ce459190630001b064565b60016040518060400160405280601c81526020017f496e636f727265637420656e61626c656420746f6b656e206d61736b000000008152506300017bb8565b630000ce936001806300018266565b60006004630000ceae670de0b6b3a76400006003630001afa3565b630000cebc9190630001b0cc565b604080518082019091527390f79bf6eb2c4f870365e785982e1f101e93b90681527315d34aaf54267db7d7c367839aaf71a00a2c6a65602082015290915060005b60028110156300004e20578015156000838360028110630000cf2557630000cf25630001b68a565b602002015190506000630000cf3a6300017b0b565b60075460005491955073ffffffffffffffffffffffffffffffffffffffff90811694506201000090910416915063eebab8ef9050600384630000cf87670de0b6b3a764000083630001afa3565b6040518463ffffffff1660e01b8152600401630000cfa993929190630001b0e6565b600060405180830381600087803b158015630000cfc557600080fd5b505af1158015630000cfdb573d6000803e3d6000fd5b50506000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8086169450630d92632d9350869262010000900416906367b4264590630000d04a90600390600401630001b02f565b602060405180830381865afa158015630000d069573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000d0919190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015290821660248201529086166044820152606481018a9052861515608482015260a401600060405180830381600087803b158015630000d11857600080fd5b505af1158015630000d12e573d6000803e3d6000fd5b50505050630000d16260038389670de0b6b3a76400006003630000d1549190630001afa3565b6300001a169190630001b154565b8315630000d17f57630000d17883886300019b06565b630000d18f565b630000d18f600384896300017d4b565b6007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632362a2d890630000d21f9073f39fd6e51aad88f6f4ce6ab8827279cfffb9226690600190600090733c44cdddb6a900fa2b585dd299e03d12fa4293bc908a9083908190600401630001b2cd565b6020604051808303816000875af1158015630000d240573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000d2689190630001b064565b50505050508080630000d27c90630001b350565b915050630000cefd565b6001546040517f06447d560000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116906306447d5690602401600060405180830381600087803b158015630000d30757600080fd5b505af1158015630000d31d573d6000803e3d6000fd5b505060085460405173ffffffffffffffffffffffffffffffffffffffff9091169250630000d34d9150630001ace6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015630000d388573d6000803e3d6000fd5b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600254604080517f62eb33e3000000000000000000000000000000000000000000000000000000008152905191909216916362eb33e39160048083019260209291908290030181865afa158015630000d427573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000d44f9190630001af51565b6007546040517fe26b2f6300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169063e26b2f6390602401600060405180830381600087803b158015630000d4bd57600080fd5b505af1158015630000d4d3573d6000803e3d6000fd5b50506007546009546040517f11ca4fc200000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9182166024820152911692506311ca4fc29150604401600060405180830381600087803b158015630000d54e57600080fd5b505af1158015630000d564573d6000803e3d6000fd5b5050600754600854604080517f2495a599000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416955063a70bc54294509190921691632495a5999160048083019260209291908290030181865afa158015630000d5e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000d60f9190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526124546024820152604401600060405180830381600087803b158015630000d67f57600080fd5b505af1158015630000d695573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015630000d70557600080fd5b505af1158015630000d71b573d6000803e3d6000fd5b50506007546000925073ffffffffffffffffffffffffffffffffffffffff169050638fe3f93f630000d759670de0b6b3a7640000614e20630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660248201526044016020604051808303816000875af1158015630000d7cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000d7f39190630001af51565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff1663eebab8ef600183630000d835670de0b6b3a7640000614e20630001afa3565b630000d844906002630001afa3565b6040518463ffffffff1660e01b8152600401630000d86693929190630001b0e6565b600060405180830381600087803b158015630000d88257600080fd5b505af1158015630000d898573d6000803e3d6000fd5b50505050630000d8a9816300019b24565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f53275fcb00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e0906024015b600060405180830381600087803b158015630000d93757600080fd5b505af1158015630000d94d573d6000803e3d6000fd5b50506007546040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152909116925063953730189150602401600060405180830381600087803b158015630000d9c057600080fd5b505af1158015630000d9d6573d6000803e3d6000fd5b5050505050565b630000d9ec6001806300018266565b604080518082019091527390f79bf6eb2c4f870365e785982e1f101e93b90681527315d34aaf54267db7d7c367839aaf71a00a2c6a65602082015260005b60028110156300003cbc578015156000838360028110630000da5257630000da52630001b68a565b60200201519050600080630000da686300017b0b565b6007546000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815295975091955073ffffffffffffffffffffffffffffffffffffffff908116946201000090920416925063eebab8ef9150630000dadf906002908690633b9aca0090600401630001b0e6565b600060405180830381600087803b158015630000dafb57600080fd5b505af1158015630000db11573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff16915063eebab8ef9050600384630000db54670de0b6b3a764000083630001afa3565b6040518463ffffffff1660e01b8152600401630000db7693929190630001b0e6565b600060405180830381600087803b158015630000db9257600080fd5b505af1158015630000dba8573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff16915063eebab8ef9050600484630000dbed670de0b6b3a764000061012c630001afa3565b6040518463ffffffff1660e01b8152600401630000dc0f93929190630001b0e6565b600060405180830381600087803b158015630000dc2b57600080fd5b505af1158015630000dc41573d6000803e3d6000fd5b5050600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815291935062010000900473ffffffffffffffffffffffffffffffffffffffff1691506367b4264590630000dca790600390600401630001b02f565b602060405180830381865afa158015630000dcc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000dcee9190630001af51565b6007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015280841660248301529293509116906351e3f16090604401600060405180830381600087803b158015630000dd6757600080fd5b505af1158015630000dd7d573d6000803e3d6000fd5b50506007546040517f8991b2f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152600094509091169150638991b2f190602401602060405180830381865afa158015630000ddf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000de1e9190630001b064565b6040517f22995f5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528881166024830152891515604483015260648201839052919250908416906322995f5d90608401600060405180830381600087803b158015630000dea457600080fd5b505af1158015630000deba573d6000803e3d6000fd5b50505050630000dee9600185876040518060600160405280602381526020016300054794602391396300017c0a565b630000defa60018760006300017d4b565b630000df0e600285633b9aca006300017d4b565b630000df1f60028760006300017d4b565b630000df3060038560016300017d4b565b8615630000df7357630000df6c866001630000df57670de0b6b3a76400006003630001afa3565b630000df659190630001b154565b6300019b06565b630000df93565b630000df936003876001630000d154670de0b6b3a764000084630001afa3565b630000dfb36004856300001a16670de0b6b3a764000061012c630001afa3565b630000dfc460048760006300017d4b565b6007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632362a2d890630000e0549073f39fd6e51aad88f6f4ce6ab8827279cfffb9226690600190600090733c44cdddb6a900fa2b585dd299e03d12fa4293bc908d9083908190600401630001b2cd565b6020604051808303816000875af1158015630000e075573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000e09d9190630001b064565b50505050505050508080630000e0b490630001b350565b915050630000da2a565b6001546040517f06447d560000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116906306447d5690602401600060405180830381600087803b158015630000e13f57600080fd5b505af1158015630000e155573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f2e5a5c7700000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000e1e657600080fd5b505af1158015630000e1fc573d6000803e3d6000fd5b5050600754600b546040517fd48bfca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063d48bfca79150602401600060405180830381600087803b158015630000e27157600080fd5b505af1158015630000e287573d6000803e3d6000fd5b505050506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000e2fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000e3249190630001b064565b90505b610100811015630000e42e57600754604080516020810184905273ffffffffffffffffffffffffffffffffffffffff9092169163d48bfca79101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052805160209091012060e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016825273ffffffffffffffffffffffffffffffffffffffff166004820152602401600060405180830381600087803b158015630000e3fb57600080fd5b505af1158015630000e411573d6000803e3d6000fd5b505050508080630000e42490630001b350565b915050630000e327565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1cbbe18500000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b158015630000e4bc57600080fd5b505af1158015630000e4d2573d6000803e3d6000fd5b50506007546040517fd48bfca700000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff909116925063d48bfca791506024016300003591565b6000630000e5506300017b0b565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f700ca0af00000000000000000000000000000000000000000000000000000000600482015291955073ffffffffffffffffffffffffffffffffffffffff16935063c31eb0e092506024019050600060405180830381600087803b158015630000e5e257600080fd5b505af1158015630000e5f8573d6000803e3d6000fd5b50506007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015273c4375b7de8af5a38a93548eb8453a498222c4ff2602483015290911692506351e3f1609150604401600060405180830381600087803b158015630000e68557600080fd5b505af1158015630000e69b573d6000803e3d6000fd5b5050600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815291935062010000900473ffffffffffffffffffffffffffffffffffffffff1691506367b4264590630000e70190600290600401630001b02f565b602060405180830381865afa158015630000e720573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000e7489190630001af51565b6007546040517ff67c5bd000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80841660048301529293506000929091169063f67c5bd090602401602060405180830381865afa158015630000e7c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000e7e89190630001b064565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b158015630000e86a57600080fd5b505af1158015630000e880573d6000803e3d6000fd5b50506007546040517fa366f4960000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116925063a366f4969150602401600060405180830381600087803b158015630000e8f257600080fd5b505af1158015630000e908573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f700ca0af00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630000e99957600080fd5b505af1158015630000e9af573d6000803e3d6000fd5b50506007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015290911692506351e3f16091506044015b600060405180830381600087803b158015630000ea2b57600080fd5b505af1158015630000ea41573d6000803e3d6000fd5b50505050505050565b630000eb4b73c4375b7de8af5a38a93548eb8453a498222c4ff273ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f7a18816040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000eae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000eb119190630001af51565b73ffffffffffffffffffffffffffffffffffffffff161415604051806060016040528060218152602001630005455b60219139630001893b565b630000ec677393548eb8453a498222c4ff2c4375b7de8af5a38a73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000ebea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000ec129190630001af51565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280601f81526020017f70726963654f7261636c6520697320616c7265616479207468652073616d6500815250630001893b565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630000ece857600080fd5b505af1158015630000ecfe573d6000803e3d6000fd5b50506007546040517f11ca4fc200000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201527393548eb8453a498222c4ff2c4375b7de8af5a38a602482015273ffffffffffffffffffffffffffffffffffffffff90911692506311ca4fc29150604401600060405180830381600087803b158015630000ed9d57600080fd5b505af1158015630000edb3573d6000803e3d6000fd5b50505050630000ee8a600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f7a18816040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000ee2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000ee539190630001af51565b73c4375b7de8af5a38a93548eb8453a498222c4ff2604051806060016040528060218152602001630005445d60219139630001898a565b600754604080517f2630c12f000000000000000000000000000000000000000000000000000000008152905163000023cf9273ffffffffffffffffffffffffffffffffffffffff1691632630c12f9160048083019260209291908290030181865afa158015630000eeff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000ef279190630001af51565b7393548eb8453a498222c4ff2c4375b7de8af5a38a6040518060400160405280602081526020017f70726963654f7261636c65206973206e6f742073657420636f72726563746c79815250630001898a565b600080600080630000ef8b6300017b0b565b6002546040517f0c75f806000000000000000000000000000000000000000000000000000000008152949850929650909450925060009173ffffffffffffffffffffffffffffffffffffffff90911690630c75f80690630000eff490600390600401630001b02f565b602060405180830381865afa158015630000f013573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000f03b9190630001b041565b61ffff16600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a3177a360036040518263ffffffff1660e01b8152600401630000f09f9190630001b02f565b602060405180830381865afa158015630000f0be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000f0e69190630001b064565b85612710630000f0f8878a630001afa3565b630000f1069190630001afa3565b630000f1149190630001b0cc565b630000f126906305f5e100630001afa3565b630000f1349190630001b0cc565b630000f1429190630001b0cc565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef90630000f1a89060039086908690600401630001b0e6565b600060405180830381600087803b158015630000f1c457600080fd5b505af1158015630000f1da573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350869262010000909204909116906367b4264590630000f24e906004908101630001b02f565b602060405180830381865afa158015630000f26d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000f2959190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b158015630000f30457600080fd5b505af1158015630000f31a573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350869262010000909204909116906367b4264590630000f38f90600390600401630001b02f565b602060405180830381865afa158015630000f3ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000f3d69190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b158015630000f44557600080fd5b505af1158015630000f45b573d6000803e3d6000fd5b50506007546040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152909116925063953730189150602401600060405180830381600087803b158015630000f4ce57600080fd5b505af1158015630000f4e4573d6000803e3d6000fd5b50505050630000f4f8600460006300017d6a565b630000d9d6600360016300017d6a565b630000f5176001806300018266565b6000630000f5256300017b0b565b935050505060008173ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000f579573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000f5a19190630001b064565b905060008273ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000f5f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000f61a9190630001b064565b6007546040517fb5b12cd700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529293509116906000908190839063b5b12cd790602401606060405180830381865afa158015630000f695573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000f6bd9190630001b6b9565b5091509150630000f70682866040518060400160405280601981526020017f496e636f727265637420626f72726f77656420616d6f756e74000000000000008152506300017bb8565b630000f74a81856040518060400160405280601f81526020017f496e636f72726563742063756d756c6174697665496e64657841744f70656e008152506300017bb8565b630000439d81856040518060400160405280601581526020017f63756d756c6174697665496e64657841744f70656e00000000000000000000008152506300017bb8565b600154600b5473ffffffffffffffffffffffffffffffffffffffff91821691634c63e56291858216911614801590630000f7dd575073ffffffffffffffffffffffffffffffffffffffff841615155b6040518263ffffffff1660e01b8152600401630000f7ff911515815260200190565b600060405180830381600087803b158015630000f81b57600080fd5b505af1158015630000f831573d6000803e3d6000fd5b50506001546040517f06447d560000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff90911692506306447d569150602401600060405180830381600087803b158015630000f8b657600080fd5b505af1158015630000f8cc573d6000803e3d6000fd5b50506008546040516000935073ffffffffffffffffffffffffffffffffffffffff9091169150630000f8ff90630001ace6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015630000f93a573d6000803e3d6000fd5b50600b546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526123f0602482015291925082169063a70bc54290604401600060405180830381600087803b158015630000f9b457600080fd5b505af1158015630000f9ca573d6000803e3d6000fd5b50506040517f172c48c7000000000000000000000000000000000000000000000000000000008152600060048201819052925082915073ffffffffffffffffffffffffffffffffffffffff84169063172c48c7906024016040805180830381865afa158015630000fa3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000fa679190630001b6e9565b600b5460408051808201909152601a81527f696e636f727265637420756e6465726c79696e6720746f6b656e0000000000006020820152929450909250630000faca91849173ffffffffffffffffffffffffffffffffffffffff1690630001898a565b630000faf98161ffff166123f060405180606001604052806021815260200163000543ed602191396300017bb8565b600b546040517f7832743800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600091851690637832743890602401602060405180830381865afa158015630000fb6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000fb959190630001b041565b9050630000fbc68161ffff166123f060405180606001604052806021815260200163000543ed602191396300017bb8565b630000fc7f8473ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000fc18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000fc409190630001b064565b60016040518060400160405280601081526020017f496e636f7272656374206c656e677468000000000000000000000000000000008152506300017bb8565b6040517fd48bfca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015285169063d48bfca790602401600060405180830381600087803b158015630000fcea57600080fd5b505af1158015630000fd00573d6000803e3d6000fd5b50505050630000fdbd8473ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015630000fd56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000fd7e9190630001b064565b60026040518060400160405280601081526020017f496e636f7272656374206c656e677468000000000000000000000000000000008152506300017bb8565b6040517f172c48c70000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff85169063172c48c7906024016040805180830381865afa158015630000fe29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630000fe519190630001b6e9565b8093508194505050630000fe9d83876040518060400160405280601881526020017f696e636f7272656374206e6577546f6b656e20746f6b656e0000000000000000815250630001898a565b630000fee68261ffff1660006040518060400160405280602081526020017f696e636f7272656374206c7420666f7220206e6577546f6b656e20746f6b656e8152506300017bb8565b6040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015261ffff8716602483015285169063a70bc54290604401600060405180830381600087803b158015630000ff5b57600080fd5b505af1158015630000ff71573d6000803e3d6000fd5b50506040517f172c48c70000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff8716925063172c48c791506024016040805180830381865afa158015630000ffe1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000100099190630001b6e9565b8093508194505050630001005583876040518060400160405280601881526020017f696e636f7272656374206e6577546f6b656e20746f6b656e0000000000000000815250630001898a565b63000100a18261ffff168661ffff166040518060400160405280602081526020017f696e636f7272656374206c7420666f7220206e6577546f6b656e20746f6b656e8152506300017bb8565b6040517f7832743800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152851690637832743890602401602060405180830381865afa158015630001010f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000101379190630001b041565b905063000101858161ffff168661ffff166040518060400160405280602081526020017f696e636f7272656374206c7420666f7220206e6577546f6b656e20746f6b656e8152506300017bb8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801563000101f157600080fd5b505af11580156300001afe573d6000803e3d6000fd5b600a54604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b9160048083019260209291908290030181865afa1580156300010279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000102a19190630001af51565b6001546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015292935091169063ca669fa790602401600060405180830381600087803b158015630001031257600080fd5b505af11580156300010328573d6000803e3d6000fd5b5050600a546040517f4910832f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529091169250634910832f9150602401600060405180830381600087803b158015630001039b57600080fd5b505af115801563000103b1573d6000803e3d6000fd5b50506001546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152909116925063ca669fa79150602401600060405180830381600087803b158015630001042457600080fd5b505af1158015630001043a573d6000803e3d6000fd5b50505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801563000104aa57600080fd5b505af115801563000104c0573d6000803e3d6000fd5b505050506300010538600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f7a18816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300002af3573d6000803e3d6000fd5b600154604080518082018252601081527f5061757361626c653a2070617573656400000000000000000000000000000000602082015290517ff28dceb300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163f28dceb39163000105c291600401630001b722565b600060405180830381600087803b15801563000105de57600080fd5b505af115801563000105f4573d6000803e3d6000fd5b50506007546040517f8fe3f93f00000000000000000000000000000000000000000000000000000000815262030d40600482015230602482015273ffffffffffffffffffffffffffffffffffffffff9091169250638fe3f93f91506044016020604051808303816000875af11580156300010673573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001069b9190630001af51565b50600154604080518082018252601081527f5061757361626c653a2070617573656400000000000000000000000000000000602082015290517ff28dceb300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163f28dceb391630001072691600401630001b722565b600060405180830381600087803b158015630001074257600080fd5b505af11580156300010758573d6000803e3d6000fd5b50506007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632362a2d8915063000107f89073c4375b7de8af5a38a93548eb8453a498222c4ff290600190600090839081907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908490600401630001b2cd565b6020604051808303816000875af11580156300010819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000108419190630001b064565b50600154604080518082018252601081527f5061757361626c653a2070617573656400000000000000000000000000000000602082015290517ff28dceb300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163f28dceb39163000108cc91600401630001b722565b600060405180830381600087803b15801563000108e857600080fd5b505af115801563000108fe573d6000803e3d6000fd5b50506007546040517f94cf073a00000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201526064602482018190526001604483015273ffffffffffffffffffffffffffffffffffffffff90921693506394cf073a9250016020604051808303816000875af11580156300010996573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000109be9190630001b064565b50600154604080518082018252601081527f5061757361626c653a2070617573656400000000000000000000000000000000602082015290517ff28dceb300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163f28dceb3916300010a4991600401630001b722565b600060405180830381600087803b1580156300010a6557600080fd5b505af11580156300010a7b573d6000803e3d6000fd5b50506007546040517f830aa74500000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff26004820181905260248201819052604482015260648082015273ffffffffffffffffffffffffffffffffffffffff909116925063830aa7459150608401600060405180830381600087803b1580156300010b1457600080fd5b505af11580156300010b2a573d6000803e3d6000fd5b5050600154604080518082018252601081527f5061757361626c653a2070617573656400000000000000000000000000000000602082015290517ff28dceb300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063f28dceb392506300010bb891600401630001b722565b600060405180830381600087803b1580156300010bd457600080fd5b505af11580156300010bea573d6000803e3d6000fd5b50506007546040517fe1998cf900000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201819052602482015273ffffffffffffffffffffffffffffffffffffffff909116925063e1998cf99150604401600060405180830381600087803b1580156300010c7657600080fd5b505af11580156300010c8c573d6000803e3d6000fd5b5050600154604080518082018252601081527f5061757361626c653a2070617573656400000000000000000000000000000000602082015290517ff28dceb300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063f28dceb392506300010d1a91600401630001b722565b600060405180830381600087803b1580156300010d3657600080fd5b505af11580156300010d4c573d6000803e3d6000fd5b50506007546040517f46fb371d00000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff26004820181905260248201819052604482015260648082015273ffffffffffffffffffffffffffffffffffffffff90911692506346fb371d9150608401600060405180830381600087803b1580156300010de557600080fd5b505af11580156300010dfb573d6000803e3d6000fd5b5050600154604080518082018252601081527f5061757361626c653a2070617573656400000000000000000000000000000000602082015290517ff28dceb300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063f28dceb392506300010e8991600401630001b722565b600060405180830381600087803b1580156300010ea557600080fd5b505af11580156300010ebb573d6000803e3d6000fd5b5050600754604080518082018252600281527f6464000000000000000000000000000000000000000000000000000000000000602082015290517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169350636ce4074a9250630000746a9173c4375b7de8af5a38a93548eb8453a498222c4ff2918291600401630001b48c565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b1580156300010fe257600080fd5b505af11580156300010ff8573d6000803e3d6000fd5b50506007546040517f944ac59f0000000000000000000000000000000000000000000000000000000081526103e8600482015260c8602482015261251c6044820152606480820152612648608482015273ffffffffffffffffffffffffffffffffffffffff909116925063944ac59f915060a401600060405180830381600087803b158015630001108857600080fd5b505af1158015630001109e573d6000803e3d6000fd5b5050604080516102408101909152600761020082019081527f434c4f535552450000000000000000000000000000000000000000000000000061022083015260e08201908152600061010083018190529350909150819061012082018481526020016103e8815260200161044c8152602001610456815260200160008152602001600a81526020016000815250815260200160405180610120016040528060405180606001604052806029815260200163000543c46029913981526107d06020820152604001600181526020016103e8815260200161044c815260200161047e81526020016102ed815260200160328152602001600081525081526020016040518061012001604052806040518060600160405280602e8152602001630005428e602e91398152610834602082015260400160018152602001610384815260200161076c81526020016107cb815260200160008152602001605f8152602001600081525081526020016040518061012001604052806040518060400160405280601581526020017f4c49515549444154494f4e2057495448204c4f5353000000000000000000000081525081526020016103e8815260200160016002811115630001126f57630001126f630001afe6565b8152602001610384815260200161076c81526020016103b6815260200160008152602001600081526020016103b6815250815260200160405180610120016040528060405180606001604052806034815260200163000546ef6034913981526107d06020820152604001600281526020016103e8815260200161044c815260200161046a815260200161033d8152602001601e81526020016000815250815260200160405180610120016040528060405180606001604052806039815260200163000544a160399139815261083460208201526040016002815260200161038481526020016107d0815260200161080a815260200160008152602001603a8152602001600081525081526020016040518061012001604052806040518060400160405280602081526020017f4c49515549444154494f4e204f4620455850495245442057495448204c4f535381525081526020016103e8815260200160028081111563000113e35763000113e3630001afe6565b8152602001610384815260200161076c81526020016103d481526020016000815260200160008152602001610398815250815250905060005b60078110156300003cbc576007805460009182918291829173ffffffffffffffffffffffffffffffffffffffff1690635063524a908890889081106300011469576300011469630001b68a565b602002015160200151888860078110630001148a57630001148a630001b68a565b60200201516040015189896007811063000114ab5763000114ab630001b68a565b6020020151606001518a8a6007811063000114cc5763000114cc630001b68a565b6020020151608001516040518563ffffffff1660e01b815260040163000114f89493929190630001b739565b608060405180830381865afa1580156300011517573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001153f9190630001b763565b935093509350935063000115b9848787600781106300011565576300011565630001b68a565b602002015160a001518888600781106300011586576300011586630001b68a565b60200201516000015160405160200163000115a39190630001b79b565b6040516020818303038152906040526300017bb8565b63000116158387876007811063000115d75763000115d7630001b68a565b602002015160c0015188886007811063000115f85763000115f8630001b68a565b60200201516000015160405160200163000115a39190630001b7e0565b6300011671828787600781106300011633576300011633630001b68a565b602002015160e001518888600781106300011654576300011654630001b68a565b60200201516000015160405160200163000115a39190630001b825565b63000116ce81878760078110630001168f57630001168f630001b68a565b6020020151610100015188886007811063000116b15763000116b1630001b68a565b60200201516000015160405160200163000115a39190630001b86a565b50505050808063000116e190630001b350565b915050630001141c565b63000116fb600360006300018266565b600080600080630001170d6300017b0b565b6000546040517feebab8ef000000000000000000000000000000000000000000000000000000008152949850929650909450925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef90630001177b9060039085908990600401630001b0e6565b600060405180830381600087803b158015630001179757600080fd5b505af115801563000117ad573d6000803e3d6000fd5b50506007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632362a2d89150630001182d9073f39fd6e51aad88f6f4ce6ab8827279cfffb92266906000908190839081908390600190600401630001b2cd565b6020604051808303816000875af1158015630001184e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000118769190630001b064565b50630001188860038260016300017d4b565b60008484630001189a8583630001afa3565b63000118a89190630001b0cc565b63000118b69190630001b154565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156300011929573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000119519190630001b171565b505050509050600061271061ffff168261ffff168463000119749190630001afa3565b63000119829190630001b0cc565b90506000816300011995858a630001b07f565b63000119a39190630001b07f565b905063000022d373f39fd6e51aad88f6f4ce6ab8827279cfffb9226660018363000119d18c6002630001afa3565b630000df579190630001b154565b60008054610100900460ff16156300011a015750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156300011b4e5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916300011aac917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001630001b8af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526300011ae891630001b8fb565b6000604051808303816000865af19150503d80600081146300011b29576040519150601f19603f3d011682016040523d82523d6000602084013e6300011b2e565b606091505b50915050808060200190518101906300011b4a9190630001b91b565b9150505b919050565b60006300011b616300017b0b565b6007546040517fe1998cf900000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048201527390f79bf6eb2c4f870365e785982e1f101e93b906602482015291955073ffffffffffffffffffffffffffffffffffffffff16935063e1998cf992506044019050600060405180830381600087803b1580156300011c0157600080fd5b505af11580156300011c17573d6000803e3d6000fd5b50506007546040517f055ee9b500000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048201526300011d0c935073ffffffffffffffffffffffffffffffffffffffff909116915063055ee9b590602401602060405180830381865afa1580156300011ca5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300011ccd9190630001af51565b60006040518060400160405280601b81526020017f46726f6d206163636f756e74207761736e27742064656c657465640000000000815250630001898a565b6007546040517f055ee9b50000000000000000000000000000000000000000000000000000000081527390f79bf6eb2c4f870365e785982e1f101e93b90660048201526300011dfa9173ffffffffffffffffffffffffffffffffffffffff169063055ee9b590602401602060405180830381865afa1580156300011d94573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300011dbc9190630001af51565b826040518060400160405280601881526020017f546f206163636f756e742069736e277420636f72726563740000000000000000815250630001898a565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb5ba4c4d00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b1580156300011e8757600080fd5b505af11580156300011e9d573d6000803e3d6000fd5b50506007546040517fe958b70400000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273ffffffffffffffffffffffffffffffffffffffff909116925063e958b70491506024015b602060405180830381865afa1580156300011f26573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300003cbc9190630001af51565b60006300011f5c6300017b0b565b6007546040517fe958b70400000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048201529195506300012050945073ffffffffffffffffffffffffffffffffffffffff16925063e958b7049150602401602060405180830381865afa1580156300011fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000120129190630001af51565b826040518060400160405280601881526020017f496e636f727265637420637265646974206163636f756e740000000000000000815250630001898a565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fb5ba4c4d00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b15801563000120dd57600080fd5b505af115801563000120f3573d6000803e3d6000fd5b50506007546040517fe958b70400000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff909116925063e958b70491506024016300011f07565b60085460405160009173ffffffffffffffffffffffffffffffffffffffff1690630001219090630001ad13565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801563000121cb573d6000803e3d6000fd5b50905060005b6101008110156300004e20576001811b8381111563000121ee5783175b6040517fa64bec9e0000000000000000000000000000000000000000000000000000000081526004810182905260009073ffffffffffffffffffffffffffffffffffffffff85169063a64bec9e90602401602060405180830381865afa158015630001225e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000122869190630001b064565b905063000122cc83826040518060400160405280601081526020017f496e636f727265637420726573756c74000000000000000000000000000000008152506300017bb8565b5050808063000122dd90630001b350565b91505063000121d1565b600063000122f56300017b0b565b60005490945062010000900473ffffffffffffffffffffffffffffffffffffffff16925063eebab8ef9150600390507390f79bf6eb2c4f870365e785982e1f101e93b906630001234f670de0b6b3a764000083630001afa3565b6040518463ffffffff1660e01b8152600401630001237193929190630001b0e6565b600060405180830381600087803b158015630001238d57600080fd5b505af115801563000123a3573d6000803e3d6000fd5b50506000546007546040517f88f776a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff62010000909304831694506388f776a293506300012424926003927390f79bf6eb2c4f870365e785982e1f101e93b90692911690600401630001b93e565b600060405180830381600087803b158015630001244057600080fd5b505af11580156300012456573d6000803e3d6000fd5b5050505063000124a160038260006040518060400160405280601581526020017f4e6f6e2d7a65726f20574554482062616c616e636500000000000000000000008152506300017c0a565b63000124b1600360006300017d6a565b6007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169263830aa745927390f79bf6eb2c4f870365e785982e1f101e93b90692869262010000909204909116906367b4264590630001253890600390600401630001b02f565b602060405180830381865afa1580156300012557573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001257f9190630001af51565b6300012596670de0b6b3a76400006003630001afa3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b158015630001261557600080fd5b505af1158015630001262b573d6000803e3d6000fd5b50505050630001268d600382670de0b6b3a7640000600363000126509190630001afa3565b6040518060400160405280601581526020017f4e6f6e2d7a65726f20574554482062616c616e636500000000000000000000008152506300017c0a565b63000126e860037390f79bf6eb2c4f870365e785982e1f101e93b90660006040518060400160405280601881526020017f496e636f727265637420465249454e442062616c616e636500000000000000008152506300017c0a565b6300002a7b600360016300017d6a565b600063000127066300017b0b565b93505050506000604051630000c29690630001ad22565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa158015630001278f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000127b79190630001b171565b9450509350505060005b60028110156300004e2057600080546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff16906388327863906300012843906001907390f79bf6eb2c4f870365e785982e1f101e93b90690600401630001b11f565b602060405180830381865afa1580156300012862573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001288a9190630001b064565b905060008215630001289f57600263000128a2565b60015b905060008060008063000128b66300017b0b565b600080546008546040517f88327863000000000000000000000000000000000000000000000000000000008152969a50949850929650909450926201000090910473ffffffffffffffffffffffffffffffffffffffff90811692638832786392630001292b926001921690600401630001b11f565b602060405180830381865afa158015630001294a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000129729190630001b064565b9050846000818663000129878783630001afa3565b63000129959190630001b0cc565b63000129a39190630001b154565b90506000600189600281111563000129c15763000129c1630001afe6565b1463000129d0578b63000129d2565b8c5b61ffff169050600061271063000129eb8386630001afa3565b63000129f99190630001b0cc565b90506000816300012a0c858c630001b07f565b6300012a1a9190630001b154565b60015460085460408051602481018f905260006044820152606480820186905282518083039091018152608490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fca9505e40000000000000000000000000000000000000000000000000000000017905290517fbd6af43400000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff9283169363bd6af434936300012aed93169190600401630001b27c565b600060405180830381600087803b1580156300012b0957600080fd5b505af11580156300012b1f573d6000803e3d6000fd5b50506007546040517f2362a2d80000000000000000000000000000000000000000000000000000000081526000945073ffffffffffffffffffffffffffffffffffffffff9091169250632362a2d891506300012bc99073f39fd6e51aad88f6f4ce6ab8827279cfffb92266908f908a90733c44cdddb6a900fa2b585dd299e03d12fa4293bc907390f79bf6eb2c4f870365e785982e1f101e93b9069089908190600401630001b2cd565b6020604051808303816000875af11580156300012bea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300012c129190630001b064565b90506300012c598160006040518060400160405280601c81526020017f52656d61696e696e672066756e6473206973206e6f74207a65726f21000000008152506300017bb8565b506300012ca160018760016040518060400160405280601b81526020017f437265646974206163636f756e742062616c616e636520213d203100000000008152506300017c0a565b6008546300012cd19060019073ffffffffffffffffffffffffffffffffffffffff166300001a168489630001b07f565b6300012d5a60017390f79bf6eb2c4f870365e785982e1f101e93b906816127106300012cff8782630001b154565b6300012d0d908f630001afa3565b6300012d1b9190630001b0cc565b8f6300012d2a9190630001b07f565b6300012d389190630001b154565b60405180606001604052806037815260200163000545f7603791396300017c0a565b505050505050505050505080806300012d7490630001b350565b91505063000127c1565b60006300012d8c6300017b0b565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292965090945062010000900473ffffffffffffffffffffffffffffffffffffffff1692506367b4264591506300012df490600290600401630001b02f565b602060405180830381865afa1580156300012e13573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300012e3b9190630001af51565b600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156300012eb3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300012edb9190630001b064565b6007546040517f3e8297ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529293506300012f3e9290911690633e8297ca90602401630000768f565b6300012f4b836300019b24565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f53275fcb00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b1580156300012fd857600080fd5b505af11580156300012fee573d6000803e3d6000fd5b5050600754600b546040517f654a9eda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529182166024820152868216604482015260648101869052600060848201529116925063654a9eda915060a401630000ea0f565b6000604051630001307e90630001ad31565b604051809103906000f080158015630001309c573d6000803e3d6000fd5b506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b158015630001311f57600080fd5b505af11580156300013135573d6000803e3d6000fd5b50506007546040517f6e98e5e4000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015273cccccccccccccccccccccccccccccccccccccccc602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b15801563000131d457600080fd5b505af115801563000131ea573d6000803e3d6000fd5b5050505063000131fa6300017b0b565b50506001546040517fca669fa7000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b158015630001327f57600080fd5b505af11580156300013295573d6000803e3d6000fd5b5050600754600b546040517f46fb371d00000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015273c4375b7de8af5a38a93548eb8453a498222c4ff2602482015273ffffffffffffffffffffffffffffffffffffffff91821660448201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6064820152911692506346fb371d9150608401600060405180830381600087803b158015630001336457600080fd5b505af1158015630001337a573d6000803e3d6000fd5b5050604080518082018252600581527f48656c6c6f000000000000000000000000000000000000000000000000000000602082015260015491517fca669fa7000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015290935073ffffffffffffffffffffffffffffffffffffffff909116915063ca669fa790602401600060405180830381600087803b158015630001343357600080fd5b505af11580156300013449573d6000803e3d6000fd5b50506007546040517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250636ce4074a915063000134bf9073f39fd6e51aad88f6f4ce6ab8827279cfffb922669086908690600401630001b48c565b6000604051808303816000875af115801563000134e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526300004e209190810190630001b59c565b600063000135386300017b0b565b600080546040517f67b4264500000000000000000000000000000000000000000000000000000000815292965090945062010000900473ffffffffffffffffffffffffffffffffffffffff1692506367b42645915063000135a090600290600401630001b02f565b602060405180830381865afa15801563000135bf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000135e79190630001af51565b600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152929350600092909116906370a0823190602401602060405180830381865afa158015630001365f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000136879190630001b064565b6007546040517f3e8297ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015292935063000136ea9290911690633e8297ca90602401630000768f565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630001376b57600080fd5b505af11580156300013781573d6000803e3d6000fd5b5050600754600b546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261232860248201529116925063a70bc5429150604401600060405180830381600087803b15801563000137fe57600080fd5b505af11580156300013814573d6000803e3d6000fd5b50506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b158015630001389957600080fd5b505af115801563000138af573d6000803e3d6000fd5b50506007546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526123286024830152909116925063a70bc5429150604401600060405180830381600087803b158015630001392a57600080fd5b505af11580156300013940573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff169150638eb86e8b90506001856300013985670de0b6b3a76400006103e8630001afa3565b6040518463ffffffff1660e01b815260040163000139a793929190630001b0e6565b600060405180830381600087803b15801563000139c357600080fd5b505af115801563000139d9573d6000803e3d6000fd5b50506000546040517feebab8ef0000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff16925063eebab8ef91506300013a45906002908790633b8b87c090600401630001b0e6565b600060405180830381600087803b1580156300013a6157600080fd5b505af11580156300013a77573d6000803e3d6000fd5b505050506300012f4b836300019b24565b60085460405173ffffffffffffffffffffffffffffffffffffffff909116906300013ab490630001ace6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156300013aef573d6000803e3d6000fd5b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055604080517f570a7af200000000000000000000000000000000000000000000000000000000815290516300013c0f929163570a7af29160048083019260209291908290030181865afa1580156300013b90573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300013bb89190630001af51565b60085460408051808201909152601681527f496e636f727265637420706f6f6c536572697669636500000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90911690630001898a565b600754604080517f16f0115b00000000000000000000000000000000000000000000000000000000815290516300013d039273ffffffffffffffffffffffffffffffffffffffff16916316f0115b9160048083019260209291908290030181865afa1580156300013c84573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300013cac9190630001af51565b60085460408051808201909152600e81527f496e636f727265637420706f6f6c000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90911690630001898a565b600754604080517f6f307dc300000000000000000000000000000000000000000000000000000000815290516300013e849273ffffffffffffffffffffffffffffffffffffffff1691636f307dc39160048083019260209291908290030181865afa1580156300013d78573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300013da09190630001af51565b6000546040517f67b426450000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff16906367b42645906300013e0090600190600401630001b02f565b602060405180830381865afa1580156300013e1f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300013e479190630001af51565b6040518060400160405280601481526020017f496e636f727265637420756e6465726c79696e67000000000000000000000000815250630001898a565b6007546040517f172c48c700000000000000000000000000000000000000000000000000000000815260006004820181905291829173ffffffffffffffffffffffffffffffffffffffff9091169063172c48c7906024016040805180830381865afa1580156300013ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300013f219190630001b6e9565b6000546040517f67b426450000000000000000000000000000000000000000000000000000000081529294509092506300013f8e91849162010000900473ffffffffffffffffffffffffffffffffffffffff16906367b42645906300013e0090600190600401630001b02f565b6007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815263000141019273ffffffffffffffffffffffffffffffffffffffff9081169263f67c5bd09262010000909104909116906367b4264590630001400390600190600401630001b02f565b602060405180830381865afa1580156300014022573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001404a9190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa15801563000140b5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000140dd9190630001b064565b6001604051806060016040528060298152602001630005434b602991396300017bb8565b630001414a8161ffff1660006040518060400160405280601b81526020017f496e636f7272656374204c5420666f7220756e6465726c79696e6700000000008152506300017bb8565b600754604080517f4f0e0ef3000000000000000000000000000000000000000000000000000000008152905163000142bb9273ffffffffffffffffffffffffffffffffffffffff1691634f0e0ef39160048083019260209291908290030181865afa15801563000141bf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000141e79190630001af51565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300014256573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001427e9190630001af51565b6040518060400160405280601481526020017f496e636f7272656374205745544820746f6b656e000000000000000000000000815250630001898a565b600754604080517fc5e10eef0000000000000000000000000000000000000000000000000000000081529051630001442c9273ffffffffffffffffffffffffffffffffffffffff169163c5e10eef9160048083019260209291908290030181865afa1580156300014330573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000143589190630001af51565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa15801563000143c7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000143ef9190630001af51565b6040518060400160405280601681526020017f496e636f72726563742057455448204761746577617900000000000000000000815250630001898a565b600754604080517f2630c12f0000000000000000000000000000000000000000000000000000000081529051630001459d9273ffffffffffffffffffffffffffffffffffffffff1691632630c12f9160048083019260209291908290030181865afa15801563000144a1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000144c99190630001af51565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300014538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000145609190630001af51565b6040518060400160405280601681526020017f496e636f7272656374205072696365206f7261636c6500000000000000000000815250630001898a565b600754604080517ff9aa028a00000000000000000000000000000000000000000000000000000000815290516300003cbc9273ffffffffffffffffffffffffffffffffffffffff169163f9aa028a9160048083019260209291908290030181865afa1580156300014612573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001463a9190630001af51565b306040518060400160405280601c81526020017f496e636f727265637420637265646974436f6e666967757261746f7200000000815250630001898a565b60008063000146876300017b0b565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815294965090945062010000900473ffffffffffffffffffffffffffffffffffffffff169263eebab8ef925063000146f2915060019085908790600401630001b0e6565b600060405180830381600087803b158015630001470e57600080fd5b505af11580156300014724573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff16915063eebab8ef90506003836300014767670de0b6b3a764000083630001afa3565b6040518463ffffffff1660e01b8152600401630001478993929190630001b0e6565b600060405180830381600087803b15801563000147a557600080fd5b505af115801563000147bb573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350859262010000909204909116906367b4264590630001483090600390600401630001b02f565b602060405180830381865afa158015630001484f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000148779190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b15801563000148e657600080fd5b505af115801563000148fc573d6000803e3d6000fd5b50506000546040517feebab8ef0000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff16925063eebab8ef91506300014968906002908590633b9aca0090600401630001b0e6565b600060405180830381600087803b158015630001498457600080fd5b505af1158015630001499a573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350859262010000909204909116906367b42645906300014a0f90600290600401630001b02f565b602060405180830381865afa1580156300014a2e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300014a569190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1580156300014ac557600080fd5b505af11580156300014adb573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff16915063eebab8ef90506004836300014b20670de0b6b3a764000061012c630001afa3565b6040518463ffffffff1660e01b81526004016300014b4293929190630001b0e6565b600060405180830381600087803b1580156300014b5e57600080fd5b505af11580156300014b74573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350859262010000909204909116906367b42645906300014be8906004908101630001b02f565b602060405180830381865afa1580156300014c07573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300014c2f9190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1580156300014c9e57600080fd5b505af11580156300014cb4573d6000803e3d6000fd5b505050506300014cc8600360016300017d6a565b6300014cd8600260016300017d6a565b6300014ce8600460016300017d6a565b600754600080546040517f67b42645000000000000000000000000000000000000000000000000000000008152919273ffffffffffffffffffffffffffffffffffffffff9081169263f67c5bd092620100009004909116906367b42645906300014d5990600390600401630001b02f565b602060405180830381865afa1580156300014d78573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300014da09190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156300014e0b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300014e339190630001b064565b600754600080546040517f67b42645000000000000000000000000000000000000000000000000000000008152939450909273ffffffffffffffffffffffffffffffffffffffff9283169263f67c5bd09262010000900416906367b42645906300014ea590600290600401630001b02f565b602060405180830381865afa1580156300014ec4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300014eec9190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156300014f57573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300014f7f9190630001b064565b6007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690632362a2d89063000150119073f39fd6e51aad88f6f4ce6ab8827279cfffb9226690600090819083907390f79bf6eb2c4f870365e785982e1f101e93b906908a8a17908490600401630001b2cd565b6020604051808303816000875af11580156300015032573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001505a9190630001b064565b50630001508060037390f79bf6eb2c4f870365e785982e1f101e93b90660006300017d4b565b630001509e6003846300001a16670de0b6b3a764000083630001afa3565b63000150c360027390f79bf6eb2c4f870365e785982e1f101e93b90660006300017d4b565b63000150d7600284633b9aca006300017d4b565b630000364960047390f79bf6eb2c4f870365e785982e1f101e93b9066001630000d154670de0b6b3a764000061012c630001afa3565b6000630001511b6300017b0b565b93505050506000604051630001513290630001ad31565b604051809103906000f0801580156300015150573d6000803e3d6000fd5b506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b15801563000151d357600080fd5b505af115801563000151e9573d6000803e3d6000fd5b50506007546040517f6e98e5e4000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015273ffffffffffffffffffffffffffffffffffffffff85811660248301529091169250636e98e5e49150604401600060405180830381600087803b158015630001527657600080fd5b505af1158015630001528c573d6000803e3d6000fd5b5050604080518082018252600d81527f48656c6c6f2c20776f726c64210000000000000000000000000000000000000060208201526001805492517f491cc7c2000000000000000000000000000000000000000000000000000000008152600481018290526024810191909152600060448201819052606482015290935073ffffffffffffffffffffffffffffffffffffffff909116915063491cc7c290608401600060405180830381600087803b158015630001534957600080fd5b505af1158015630001535f573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff8516925073f39fd6e51aad88f6f4ce6ab8827279cfffb9226691507faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0390600090a360015460405173ffffffffffffffffffffffffffffffffffffffff9091169063bd6af43490859063000153f59086908690602401630001b27c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1cff79cd000000000000000000000000000000000000000000000000000000001790525160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815263000154a7929190600401630001b27c565b600060405180830381600087803b15801563000154c357600080fd5b505af115801563000154d9573d6000803e3d6000fd5b50506001546040517fbd6af43400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925063bd6af434915063000155399085908590600401630001b27c565b600060405180830381600087803b158015630001555557600080fd5b505af1158015630001556b573d6000803e3d6000fd5b50506001546040517fca669fa7000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b15801563000155f057600080fd5b505af11580156300015606573d6000803e3d6000fd5b50506007546040517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250636ce4074a9150630001567c9073f39fd6e51aad88f6f4ce6ab8827279cfffb922669086908690600401630001b48c565b6000604051808303816000875af1158015630001569d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405263000156e79190810190630001b59c565b506300004e208273ffffffffffffffffffffffffffffffffffffffff16634e417a986040518163ffffffff1660e01b8152600401600060405180830381865afa158015630001573a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405263000157849190810190630001b59c565b826040518060400160405280601281526020017f496e636f72726563742063616c6c6461746100000000000000000000000000008152506300019bd3565b600754604080517f458936f5000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163458936f59160048083019260209291908290030181865afa1580156300015834573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001585c9190630001b064565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b15801563000158de57600080fd5b505af115801563000158f4573d6000803e3d6000fd5b50506007546040517fd48bfca700000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015273ffffffffffffffffffffffffffffffffffffffff909116925063d48bfca79150602401600060405180830381600087803b158015630001597957600080fd5b505af1158015630001598f573d6000803e3d6000fd5b505050506300015a60600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300015a07573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300015a2f9190630001b064565b6300015a3e836001630001b07f565b6040518060600160405280602681526020016300054684602691396300017bb8565b6007546040517ff67c5bd000000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201526300002a7b9173ffffffffffffffffffffffffffffffffffffffff169063f67c5bd090602401602060405180830381865afa1580156300015ae8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300015b109190630001b064565b826001901b6040518060400160405280602081526020017f746f6b656e4d61736b4d6170207761732073657420696e636f72726563746c798152506300017bb8565b600080546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff16906388327863906300015bc99060039073f39fd6e51aad88f6f4ce6ab8827279cfffb9226690600401630001b11f565b602060405180830381865afa1580156300015be8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300015c109190630001b064565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156300015c83573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300015cab9190630001b171565b5050925050506300015cc1600360006300018266565b6000806300015cd06300017b0b565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815294965090945062010000900473ffffffffffffffffffffffffffffffffffffffff169263eebab8ef92506300015d3b915060039085908790600401630001b0e6565b600060405180830381600087803b1580156300015d5757600080fd5b505af11580156300015d6d573d6000803e3d6000fd5b5050505060008260026300015d849190630001afa3565b6007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690632362a2d8906300015e2d9073f39fd6e51aad88f6f4ce6ab8827279cfffb92266906001908790733c44cdddb6a900fa2b585dd299e03d12fa4293bc907390f79bf6eb2c4f870365e785982e1f101e93b9069089908590600401630001b2cd565b6020604051808303816000875af11580156300015e4e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300015e769190630001b064565b90506300015e9b73f39fd6e51aad88f6f4ce6ab8827279cfffb9226660006300019b06565b6300015ee260038460016040518060400160405280601b81526020017f437265646974206163636f756e742062616c616e636520213d203100000000008152506300017c0a565b6300015f0c600373f39fd6e51aad88f6f4ce6ab8827279cfffb922666300001a66848a630001b07f565b630000439d7390f79bf6eb2c4f870365e785982e1f101e93b9066127106300015f378882630001b463565b6300015f499061ffff1686630001afa3565b6300007ed69190630001b0cc565b6000806300015f666300017b0b565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815294965090945062010000900473ffffffffffffffffffffffffffffffffffffffff169263eebab8ef92506300015fd1915060019085908790600401630001b0e6565b600060405180830381600087803b1580156300015fed57600080fd5b505af11580156300016003573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff16915063eebab8ef90506003836300016046670de0b6b3a764000083630001afa3565b6040518463ffffffff1660e01b8152600401630001606893929190630001b0e6565b600060405180830381600087803b158015630001608457600080fd5b505af1158015630001609a573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350859262010000909204909116906367b4264590630001610f90600390600401630001b02f565b602060405180830381865afa158015630001612e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000161569190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b15801563000161c557600080fd5b505af115801563000161db573d6000803e3d6000fd5b50506007546040517f2362a2d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632362a2d89150630001625b9073f39fd6e51aad88f6f4ce6ab8827279cfffb92266906000908190839081908390600190600401630001b2cd565b6020604051808303816000875af1158015630001627c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000162a49190630001b064565b5063000162b660038260016300017d4b565b6300003cbc73f39fd6e51aad88f6f4ce6ab8827279cfffb922666001630000df57670de0b6b3a76400006003630001afa3565b6001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f9e59609e00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b158015630001637657600080fd5b505af1158015630001638c573d6000803e3d6000fd5b50506007546040517f8fe3f93f000000000000000000000000000000000000000000000000000000008152600160048201526000602482015273ffffffffffffffffffffffffffffffffffffffff9091169250638fe3f93f91506044016020604051808303816000875af1158015630001640a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000164329190630001af51565b506007546040517f8fe3f93f0000000000000000000000000000000000000000000000000000000081526001600482015273f39fd6e51aad88f6f4ce6ab8827279cfffb92266602482015273ffffffffffffffffffffffffffffffffffffffff90911690638fe3f93f906044016020604051808303816000875af115801563000164c0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000164e89190630001af51565b506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f9e59609e00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063c31eb0e090602401600060405180830381600087803b158015630001657657600080fd5b505af1158015630001658c573d6000803e3d6000fd5b50506007546040517f8fe3f93f0000000000000000000000000000000000000000000000000000000081526001600482015273f39fd6e51aad88f6f4ce6ab8827279cfffb92266602482015273ffffffffffffffffffffffffffffffffffffffff9091169250638fe3f93f91506044016020604051808303816000875af1158015630001661d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300002a7b9190630001af51565b63000166516300017b0b565b50506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b15801563000166d657600080fd5b505af115801563000166ec573d6000803e3d6000fd5b50506007546040517f6e98e5e4000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc60048201527390f79bf6eb2c4f870365e785982e1f101e93b906602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b158015630001678b57600080fd5b505af115801563000167a1573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f5d2e3a7400000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630001683257600080fd5b505af11580156300016848573d6000803e3d6000fd5b50506001546040517fca669fa7000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b15801563000168cd57600080fd5b505af115801563000168e3573d6000803e3d6000fd5b5050600754604080518082018252600d81527f48656c6c6f2c20776f726c642100000000000000000000000000000000000000602082015290517f6ce4074a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169350636ce4074a9250630001699d9173f39fd6e51aad88f6f4ce6ab8827279cfffb922669173c4375b7de8af5a38a93548eb8453a498222c4ff291600401630001b48c565b6000604051808303816000875af115801563000169be573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526300002a7b9190810190630001b59c565b6007546040517fff687543000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc60048201526300016b0a9173c4375b7de8af5a38a93548eb8453a498222c4ff29173ffffffffffffffffffffffffffffffffffffffff9091169063ff68754390602401602060405180830381865afa1580156300016aa8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300016ad09190630001af51565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602e815260200163000544fb602e9139630001893b565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b1580156300016b8b57600080fd5b505af11580156300016ba1573d6000803e3d6000fd5b50506007546040517f6e98e5e4000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015273c4375b7de8af5a38a93548eb8453a498222c4ff2602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b1580156300016c4057600080fd5b505af11580156300016c56573d6000803e3d6000fd5b50506007546040517fff687543000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc60048201526300016d43935073ffffffffffffffffffffffffffffffffffffffff909116915063ff68754390602401602060405180830381865afa1580156300016ce4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300016d0c9190630001af51565b73c4375b7de8af5a38a93548eb8453a498222c4ff2604051806060016040528060268152602001630005474860269139630001898a565b6007546040517ffdd5764500000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201526300016e2a9173ffffffffffffffffffffffffffffffffffffffff169063fdd5764590602401602060405180830381865afa1580156300016dcb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300016df39190630001af51565b739965507d1a55bcc2695c58ba16fb37d819b0a4dc604051806060016040528060268152602001630005474860269139630001898a565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b1580156300016eab57600080fd5b505af11580156300016ec1573d6000803e3d6000fd5b50506007546040517f6e98e5e4000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc60048201526000602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b1580156300016f4d57600080fd5b505af11580156300016f63573d6000803e3d6000fd5b50506007546040517fff687543000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc6004820152630001703e935073ffffffffffffffffffffffffffffffffffffffff909116915063ff687543906024015b602060405180830381865afa1580156300016ff2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001701a9190630001af51565b6000604051806060016040528060268152602001630005474860269139630001898a565b6007546040517ffdd5764500000000000000000000000000000000000000000000000000000000815260006004820152630001709b9173ffffffffffffffffffffffffffffffffffffffff169063fdd57645906024016300016fd3565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630001711c57600080fd5b505af11580156300017132573d6000803e3d6000fd5b50506007546040517f6e98e5e4000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015273c4375b7de8af5a38a93548eb8453a498222c4ff2602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b15801563000171d157600080fd5b505af115801563000171e7573d6000803e3d6000fd5b50506001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff909116925063ca669fa79150602401600060405180830381600087803b158015630001726c57600080fd5b505af11580156300017282573d6000803e3d6000fd5b50506007546040517f6e98e5e40000000000000000000000000000000000000000000000000000000081526000600482015273c4375b7de8af5a38a93548eb8453a498222c4ff2602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b158015630001730e57600080fd5b505af11580156300017324573d6000803e3d6000fd5b50506007546040517fff687543000000000000000000000000000000000000000000000000000000008152600060048201526300017387935073ffffffffffffffffffffffffffffffffffffffff909116915063ff687543906024016300016fd3565b6007546040517ffdd5764500000000000000000000000000000000000000000000000000000000815273c4375b7de8af5a38a93548eb8453a498222c4ff2600482015263000173f79173ffffffffffffffffffffffffffffffffffffffff169063fdd57645906024016300016fd3565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630001747857600080fd5b505af1158015630001748e573d6000803e3d6000fd5b50506007546040517f6e98e5e4000000000000000000000000000000000000000000000000000000008152739965507d1a55bcc2695c58ba16fb37d819b0a4dc600482015273cccccccccccccccccccccccccccccccccccccccc602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b158015630001752d57600080fd5b505af11580156300017543573d6000803e3d6000fd5b50505050630001761a600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe47cde76040518163ffffffff1660e01b8152600401602060405180830381865afa15801563000175bb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000175e39190630001af51565b739965507d1a55bcc2695c58ba16fb37d819b0a4dc604051806060016040528060268152602001630005437460269139630001898a565b6001546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015273ffffffffffffffffffffffffffffffffffffffff9091169063ca669fa790602401600060405180830381600087803b158015630001769b57600080fd5b505af115801563000176b1573d6000803e3d6000fd5b50506007546040517f6e98e5e40000000000000000000000000000000000000000000000000000000081526000600482015273cccccccccccccccccccccccccccccccccccccccc602482015273ffffffffffffffffffffffffffffffffffffffff9091169250636e98e5e49150604401600060405180830381600087803b158015630001773d57600080fd5b505af11580156300017753573d6000803e3d6000fd5b5050505063000023cf600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe47cde76040518163ffffffff1660e01b8152600401602060405180830381865afa15801563000177cb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000177f39190630001af51565b6000604051806060016040528060268152602001630005437460269139630001898a565b600063000178256300017b0b565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291955062010000900473ffffffffffffffffffffffffffffffffffffffff16935063eebab8ef92506300017893915060029085906404a817c80090600401630001b0e6565b600060405180830381600087803b15801563000178af57600080fd5b505af115801563000178c5573d6000803e3d6000fd5b50506001546040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f532e7bb600000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116925063c31eb0e09150602401600060405180830381600087803b158015630001795657600080fd5b505af1158015630001796c573d6000803e3d6000fd5b50506007546040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152909116925063953730189150602401600060405180830381600087803b15801563000179df57600080fd5b505af115801563000179f5573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350859262010000909204909116906367b42645906300017a6a90600290600401630001b02f565b602060405180830381865afa1580156300017a89573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300017ab19190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401630000d91b565b600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635aba4b246040518163ffffffff1660e01b81526004016080604051808303816000875af11580156300017b82573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300017baa9190630001b38f565b935093509350935090919293565b8183146300004e20577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516300017bf49190630001b97e565b60405180910390a16300004e2083836300019c30565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff166300017c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f74657374546f6b656e5375697465206973206e6f74207365740000000000000060448201526064015b60405180910390fd5b6000546040517f67b4264500000000000000000000000000000000000000000000000000000000815263000036499162010000900473ffffffffffffffffffffffffffffffffffffffff16906367b42645906300017cfa908890600401630001b02f565b602060405180830381865afa1580156300017d19573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300017d419190630001af51565b8484846300019d36565b6300004e20838383604051806020016040528060008152506300017c0a565b6007546040517fe958b70400000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015260009173ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa1580156300017def573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300017e179190630001af51565b6007546040517f8991b2f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015292935060009290911690638991b2f190602401602060405180830381865afa1580156300017e8f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300017eb79190630001b064565b600754600254604080517f406c8e2f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169363f67c5bd093169163406c8e2f9160048083019260209291908290030181865afa1580156300017f33573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300017f5b9190630001af51565b73ffffffffffffffffffffffffffffffffffffffff166367b42645886040518263ffffffff1660e01b81526004016300017f979190630001b02f565b602060405180830381865afa1580156300017fb6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300017fde9190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156300018049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000180719190630001b064565b16600014159050630000364983151582151514600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663406c8e2f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801563000180f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001811b9190630001af51565b73ffffffffffffffffffffffffffffffffffffffff1663440864fa876040518263ffffffff1660e01b815260040163000181579190630001b02f565b600060405180830381865afa1580156300018176573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405263000181c09190810190630001b59c565b836300018204576040518060400160405280601981526020017f206e6f7420656e61626c65642061732065787065637465642000000000000000815250630001823b565b6040518060400160405280601981526020017f20656e61626c6564206173206e6f7420657870657463746564000000000000008152505b6040516020016300018250929190630001b9c9565b604051602081830303815290604052630001893b565b600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168282604051630001829b90630001ad40565b63000182ab93929190630001ba2c565b604051809103906000f08015801563000182c9573d6000803e3d6000fd5b50600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055604080517fd46b9330000000000000000000000000000000000000000000000000000000008152905163d46b9330916004808201926020929091908290030181865afa1580156300018364573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001838c9190630001af51565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600254604080517fde2873590000000000000000000000000000000000000000000000000000000081529051919092169163de2873599160048083019260209291908290030181865afa158015630001842a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000184529190630001af51565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600254604080517f2954018c00000000000000000000000000000000000000000000000000000000815290519190921691632954018c9160048083019260209291908290030181865afa15801563000184f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000185189190630001af51565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600254604080517f5e813a8b00000000000000000000000000000000000000000000000000000000815290519190921691635e813a8b9160048083019260209291908290030181865afa15801563000185b6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000185de9190630001af51565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600254604080517f6b70b04c00000000000000000000000000000000000000000000000000000000815290519190921691636b70b04c9160048083019260209291908290030181865afa158015630001867c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000186a49190630001af51565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600254604080517fc12c21c00000000000000000000000000000000000000000000000000000000081529051919092169163c12c21c09160048083019260209291908290030181865afa1580156300018742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001876a9190630001af51565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169182179055604080517f2630c12f0000000000000000000000000000000000000000000000000000000081529051632630c12f916004808201926020929091908290030181865afa1580156300018804573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001882c9190630001af51565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600754604080517f6f307dc300000000000000000000000000000000000000000000000000000000815290519190921691636f307dc39160048083019260209291908290030181865afa15801563000188ca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000188f29190630001af51565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555050565b816300003cbc577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405163000189759190630001b97e565b60405180910390a16300003cbc826300019efe565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146300004e20577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405163000189f29190630001b97e565b60405180910390a16300004e2083835b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146300003cbc577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516300018abe9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f816040516300018af99190630001ba6a565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516300018b349190630001bacd565b60405180910390a16300003cbc6300019f74565b600080546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff16906388327863906300018bab906001908690600401630001b11f565b602060405180830381865afa1580156300018bca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300018bf29190630001b064565b6000546040517f8eb86e8b00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff1690638eb86e8b906300018c589060019086908690600401630001b0e6565b600060405180830381600087803b1580156300018c7457600080fd5b505af11580156300018c8a573d6000803e3d6000fd5b505060005462010000900473ffffffffffffffffffffffffffffffffffffffff16915063eebab8ef90506002846300018cc685600a630001afa3565b6040518463ffffffff1660e01b81526004016300018ce893929190630001b0e6565b600060405180830381600087803b1580156300018d0457600080fd5b505af11580156300018d1a573d6000803e3d6000fd5b50506007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694506351e3f1609350869262010000909204909116906367b42645906300018d8f90600290600401630001b02f565b602060405180830381865afa1580156300018dae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300018dd69190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1580156300018e4557600080fd5b505af11580156300018e5b573d6000803e3d6000fd5b505050506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638345f26e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156300018ed0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300018ef89190630001b32d565b60ff1690506300004e20836300018f12600184630001b154565b6002630001a0fe565b6007546040517f8991b2f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526000928392911690638991b2f190602401602060405180830381865afa1580156300018f91573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300018fb99190630001b064565b905060008060005b6101008110156300018ffe576001811b9150838216156300018fe4578260010192505b8382106300018ff4576300018ffe565b6001016300018fc1565b5090949350505050565b60606000630001901a8486630001b07f565b630001903a57505060408051600080825260208201909252906300019266565b8484630001904a8183630001b07f565b67ffffffffffffffff8111156300019068576300019068630001b4c9565b6040519080825280602002602001820160405280156300019093578160200160208202803683370190505b50935060005b600063000190a98385630001b07f565b1115630001919757600063000190c18385630001b07f565b60408051602081018a9052016040516020818303038152906040528051906020012060001c63000190f49190630001bb0c565b9050838110156300019142576001868381518110630001911a57630001911a630001b68a565b9115156020928302919091019091015283630001913881630001bb26565b945050630001917e565b6000868381518110630001915c57630001915c630001b68a565b9115156020928302919091019091015282630001917a81630001bb26565b9350505b81630001918c81630001b350565b925050506300019099565b87156300019262576000888760405160200163000191b791815260200190565b6040516020818303038152906040528051906020012060001c63000191de9190630001bb0c565b63000191ed906001630001b07f565b905060005b8651811015630001925f578681815181106300019215576300019215630001b68a565b60200260200101511563000192365781630001923281630001bb26565b9250505b81630001924757809550630001925f565b80630001925581630001b350565b91505063000191f2565b50505b5050505b935093915050565b60008363000192815750600163000194c3565b600083851463000193de57600080546040517f883278630000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff169063883278639063000192ef906001908c90600401630001b11f565b602060405180830381865afa158015630001930e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000193369190630001b064565b6000546040517f8eb86e8b00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff1690638eb86e8b90630001939c906001908c908690600401630001b0e6565b600060405180830381600087803b15801563000193b857600080fd5b505af115801563000193ce573d6000803e3d6000fd5b50505050600191505063000193f0565b63000193ed600186630001b07f565b94505b60005b865181101563000194bd578381148015630001940c5750815b15630001943657630001942f8860016b033b2e3c9fd0803ce8000000630001a0fe565b63000194a5565b868181518110630001944e57630001944e630001b68a565b602002602001015115630001946e57630001942f8860016002630001a0fe565b630001947e88600180630001a0fe565b8381118015630001948c5750815b1563000194a5578563000194a181630001bb26565b9650505b8063000194b381630001b350565b91505063000193f3565b50849150505b95945050505050565b818311156300004e20577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405163000195099190630001b97e565b60405180910390a16300004e208383630001a612565b73ffffffffffffffffffffffffffffffffffffffff83163182811463000195bd577f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405160200163000195769190630001bb61565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905263000195b4918790630001bbcc565b60405180910390a15b630000364981846300019c30565b63000036498484848460405180602001604052806000815250630001a77a565b6007546040517fe958b70400000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015260009173ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa1580156300019670573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000196989190630001af51565b6007546040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015292935060009290911690633192195c906024016040805180830381865afa158015630001970f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000197379190630001b664565b60015460095491935073ffffffffffffffffffffffffffffffffffffffff908116925063bd6af43491167ff9a6503000000000000000000000000000000000000000000000000000000000630001979261271086630001afa3565b600b54604051602481019290925273ffffffffffffffffffffffffffffffffffffffff166044820152606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825263000198539291600401630001b27c565b600060405180830381600087803b158015630001986f57600080fd5b505af1158015630000439d573d6000803e3d6000fd5b6007546040517fe958b70400000000000000000000000000000000000000000000000000000000815273f39fd6e51aad88f6f4ce6ab8827279cfffb92266600482015260009173ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015630001990a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019063000199329190630001af51565b6000546040517feebab8ef00000000000000000000000000000000000000000000000000000000815291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063eebab8ef90630001999790879085908890600401630001b0e6565b600060405180830381600087803b15801563000199b357600080fd5b505af115801563000199c9573d6000803e3d6000fd5b5050505081156300003649576007546000546040517f67b4264500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316926351e3f16092859262010000909104909116906367b42645906300019a45908a90600401630001b02f565b602060405180830381865afa1580156300019a64573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300019a8c9190630001af51565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260440163000022a1565b63000036498484848460405180602001604052806000815250630001a8b3565b6300003cbc828260405180602001604052806000815250630001951f565b600754604080517f8345f26e000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638345f26e9160048083019260209291908290030181865afa1580156300019b96573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300019bbe9190630001b32d565b60ff1690506300003cbc82826002630001a0fe565b6300019be18383630001aafe565b6300004e20577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516300019c1a9190630001b97e565b60405180910390a16300004e208383630001abd5565b8082146300003cbc577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516300019cc09060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8816040516300019cfb9190630001bc08565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8826040516300018b349190630001bc55565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152600091908616906370a0823190602401602060405180830381865afa1580156300019da8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906300019dd09190630001b064565b90508281146300019ef0577f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f828673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156300019e4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526300019e949190810190630001b59c565b6040516020016300019ea9929190630001bc94565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526300019ee7918790630001bbcc565b60405180910390a15b630000d9d681846300019c30565b806300002a7b577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516300019f669060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16300002a7b5b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15630001a0d05760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052630001a0499291602001630001b8af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052630001a08591630001b8fb565b6000604051808303816000865af19150503d8060008114630001a0c6576040519150601f19603f3d011682016040523d82523d6000602084013e630001a0cb565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60005b8281101563000036495760006012604051630001a11f90630001ad50565b60608082526009908201527f6e657720746f6b656e0000000000000000000000000000000000000000000000608082015260a0602082018190526002908201527f6e7400000000000000000000000000000000000000000000000000000000000060c082015260ff909116604082015260e001604051809103906000f080158015630001a1b0573d6000803e3d6000fd5b50905060006305f5e1006008604051630001a1cc90630001ad5f565b91825260ff166020820152604001604051809103906000f080158015630001a1f8573d6000803e3d6000fd5b506001546040517f06447d560000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925073ffffffffffffffffffffffffffffffffffffffff16906306447d5690602401600060405180830381600087803b158015630001a27b57600080fd5b505af1158015630001a291573d6000803e3d6000fd5b50506007546040517fd48bfca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152909116925063d48bfca79150602401600060405180830381600087803b158015630001a30457600080fd5b505af1158015630001a31a573d6000803e3d6000fd5b50506009546040517fe8a97a3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152909116925063e8a97a3e9150604401600060405180830381600087803b158015630001a39557600080fd5b505af1158015630001a3ab573d6000803e3d6000fd5b50506007546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152611f406024830152909116925063a70bc5429150604401600060405180830381600087803b158015630001a42657600080fd5b505af1158015630001a43c573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015630001a4ac57600080fd5b505af1158015630001a4c2573d6000803e3d6000fd5b50506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015260248201889052851692506340c10f1991506044016020604051808303816000875af1158015630001a53d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001a5659190630001b91b565b506007546040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301528481166024830152909116906351e3f16090604401600060405180830381600087803b158015630001a5dd57600080fd5b505af1158015630001a5f3573d6000803e3d6000fd5b5050505050508080630001a60890630001b350565b915050630001a101565b808211156300003cbc577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051630001a6a39060208082526022908201527f4572726f723a2061203c3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a1604080518181526009818301527f202056616c75652061000000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1604080518181526009918101919091527f202056616c7565206200000000000000000000000000000000000000000000006060820152602081018290527fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8906080016300018b34565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16630001a803576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f74657374546f6b656e5375697465206973206e6f74207365740000000000000060448201526064016300017c8d565b6000546040517f67b42645000000000000000000000000000000000000000000000000000000008152630000d9d69162010000900473ffffffffffffffffffffffffffffffffffffffff16906367b4264590630001a867908990600401630001b02f565b602060405180830381865afa158015630001a886573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001a8ae9190630001af51565b858585855b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526000919087169063dd62ed3e90604401602060405180830381865afa158015630001a92d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190630001a9559190630001b064565b9050828114630001aaf0577f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f828773ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015630001a9cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052630001aa199190810190630001b59c565b604051602001630001aa2e929190630001bd1e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052630001aa6c918890630001bbcc565b60405180910390a160408051818152600a818301527f207370656e6465723a2000000000000000000000000000000000000000000000606082015273ffffffffffffffffffffffffffffffffffffffff8616602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a15b630000439d81846300019c30565b805182516001911415630001abcb5760005b8351811015630001abc357828181518110630001ab3357630001ab33630001b68a565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110630001ab7857630001ab78630001b68a565b01602001517fff000000000000000000000000000000000000000000000000000000000000001614630001abab57600091505b80630001abb981630001b350565b915050630001ab10565b50630001abcf565b5060005b92915050565b630001abe38282630001aafe565b6300003cbc577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051630001ac709060208082526023908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f65735d0000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf1881604051630001acab9190630001bda8565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18826040516300018b349190630001bdfd565b6158e880630001be3d83390190565b617a5180630002172583390190565b610fff80630002917683390190565b615c8480630002a17583390190565b61107e80630002fdf983390190565b6102ba806300030e7783390190565b6202131480630003113183390190565b61175880630005244583390190565b6106ca806300053b9d83390190565b80356fffffffffffffffffffffffffffffffff811681146300011b4e57600080fd5b600060208284031215630001ada457600080fd5b630001adb182630001ad6e565b9392505050565b60ff811681146300002a7b57600080fd5b600060208284031215630001addd57600080fd5b8135630001adb181630001adb8565b600060208284031215630001ae0057600080fd5b5035919050565b80151581146300002a7b57600080fd5b600080600080600080600080610100898b031215630001ae3657600080fd5b630001ae4389630001ad6e565b9750630001ae5560208a01630001ad6e565b9650630001ae6760408a01630001ad6e565b9550630001ae7960608a01630001ad6e565b9450630001ae8b60808a01630001ad6e565b935060a0890135630001ae9f81630001ae07565b925060c0890135630001aeb381630001ae07565b915060e0890135630001aec781630001ae07565b809150509295985092959890939650565b73ffffffffffffffffffffffffffffffffffffffff811681146300002a7b57600080fd5b61ffff811681146300002a7b57600080fd5b60008060408385031215630001af2357600080fd5b8235630001af3281630001aed8565b91506020830135630001af4681630001aefc565b809150509250929050565b600060208284031215630001af6557600080fd5b8151630001adb181630001aed8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615630001afe157630001afe1630001af74565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600b8110630001b02b57630001b02b630001afe6565b9052565b60208101630001abcf8284630001b015565b600060208284031215630001b05557600080fd5b8151630001adb181630001aefc565b600060208284031215630001b07857600080fd5b5051919050565b60008219821115630001b09857630001b098630001af74565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082630001b0e157630001b0e1630001b09d565b500490565b60608101630001b0f88286630001b015565b73ffffffffffffffffffffffffffffffffffffffff93909316602082015260400152919050565b60408101630001b1318285630001b015565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b600082821015630001b16c57630001b16c630001af74565b500390565b600080600080600060a08688031215630001b18b57600080fd5b8551630001b19a81630001aefc565b6020870151909550630001b1af81630001aefc565b6040870151909450630001b1c481630001aefc565b6060870151909350630001b1d981630001aefc565b6080870151909250630001b1ee81630001aefc565b809150509295509295909350565b60005b83811015630001b21b578181015183820152602001630001b1ff565b8381111563000036495750506000910152565b60008151808452630001b24a816020860160208601630001b1fc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000630001b2af6040830184630001b22e565b949350505050565b60038110630001b02b57630001b02b630001afe6565b73ffffffffffffffffffffffffffffffffffffffff888116825260e0820190630001b2fd602084018a630001b2b7565b6040830197909752948616606082015292909416608083015260a082015291151560c09092019190915292915050565b600060208284031215630001b34157600080fd5b8151630001adb181630001adb8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415630001b38857630001b388630001af74565b5060010190565b60008060008060808587031215630001b3a757600080fd5b8451935060208501519250604085015191506060850151630001b3cb81630001aed8565b939692955090935050565b60608101630001b3e88286630001b015565b73ffffffffffffffffffffffffffffffffffffffff841660208301526fffffffffffffffffffffffffffffffff83166040830152949350505050565b60608101630001b4368286630001b015565b73ffffffffffffffffffffffffffffffffffffffff8416602083015260ff83166040830152949350505050565b600061ffff83811690831681811015630001b48457630001b484630001af74565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015263000194c36060830184630001b22e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115630001b51957630001b519630001b4c9565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715630001b56557630001b565630001b4c9565b81604052809350858152868686011115630001b58057600080fd5b630001b592866020830187630001b1fc565b5050509392505050565b600060208284031215630001b5b057600080fd5b815167ffffffffffffffff811115630001b5c957600080fd5b8201601f81018413630001b5dc57600080fd5b630001b2af84825160208401630001b4f8565b60808101630001b6018287630001b015565b73ffffffffffffffffffffffffffffffffffffffff9485166020830152929093166040840152606090920191909152919050565b60006fffffffffffffffffffffffffffffffff83811690831681811015630001b48457630001b484630001af74565b60008060408385031215630001b67957600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080600060608486031215630001b6d057600080fd5b8351925060208401519150604084015190509250925092565b60008060408385031215630001b6fe57600080fd5b8251630001b70d81630001aed8565b6020840151909250630001af4681630001aefc565b602081526000630001adb16020830184630001b22e565b84815260808101630001b7516020830186630001b2b7565b60408201939093526060015292915050565b60008060008060808587031215630001b77b57600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008251630001b7b1818460208701630001b1fc565b7f3a20616d6f756e74546f506f6f6c000000000000000000000000000000000000920191825250600e01919050565b60008251630001b7f6818460208701630001b1fc565b7f3a2072656d61696e696e6746756e647300000000000000000000000000000000920191825250601001919050565b60008251630001b83b818460208701630001b1fc565b7f3a2070726f666974000000000000000000000000000000000000000000000000920191825250600801919050565b60008251630001b880818460208701630001b1fc565b7f3a206c6f73730000000000000000000000000000000000000000000000000000920191825250600601919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251630001b8ed816004850160208701630001b1fc565b919091016004019392505050565b60008251630001b911818460208701630001b1fc565b9190910192915050565b600060208284031215630001b92f57600080fd5b8151630001adb181630001ae07565b60608101630001b9508286630001b015565b73ffffffffffffffffffffffffffffffffffffffff8085166020840152808416604084015250949350505050565b60408152600560408201527f4572726f720000000000000000000000000000000000000000000000000000006060820152608060208201526000630001adb16080830184630001b22e565b7f546f6b656e200000000000000000000000000000000000000000000000000000815260008351630001ba05816006850160208801630001b1fc565b835190830190630001ba20816006840160208801630001b1fc565b01600601949350505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260608101630001ba5a6020830185630001b015565b8215156040830152949350505050565b604081526000630001baa960408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b604081526000630001baa960408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b600082630001bb2157630001bb21630001b09d565b500690565b600081630001bb3b57630001bb3b630001af74565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008251630001bb77818460208701630001b1fc565b7f496e636f7272656374204554482062616c616e6365206f6e206163636f756e749201918252507f3a200000000000000000000000000000000000000000000000000000000000006020820152602201919050565b604081526000630001bbe36040830185630001b22e565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b604081526000630001bc4760408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b604081526000630001bc4760408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b60008351630001bcaa818460208801630001b1fc565b7f496e636f727265637420000000000000000000000000000000000000000000009083019081528351630001bce881600a840160208801630001b1fc565b7f2062616c616e6365206f6e206163636f756e743a200000000000000000000000600a9290910191820152601f01949350505050565b60008351630001bd34818460208801630001b1fc565b7f496e636f727265637420000000000000000000000000000000000000000000009083019081528351630001bd7281600a840160208801630001b1fc565b7f20416c6c6f77616e6365206f6e206163636f756e743a20200000000000000000600a9290910191820152602201949350505050565b604081526000630001bde760408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b8281036020840152630001b2af8185630001b22e565b604081526000630001bde760408301600a81527f2020202041637475616c0000000000000000000000000000000000000000000060208201526040019056fe6101606040526000805462ff00001916620c00001790553480156200002357600080fd5b50604051620058e8380380620058e8833981016040819052620000469162000537565b806001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab919062000537565b6000805460ff191690556001600160a01b038116620000dd57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000142919062000537565b6001600160a01b03166080816001600160a01b031681525050506000816001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c3919062000537565b6001600160a01b03831661010081905260e081905260408051632495a59960e01b81529051929350600092632495a599916004808201926020929091908290030181865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000537565b6001600160a01b03811660c05290506200025a8162000472565b816001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000537565b6001600160a01b0316610120816001600160a01b031681525050816001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e919062000537565b6001600160a01b0316610140816001600160a01b031681525050816001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bd919062000537565b6001600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000537565b6001600160a01b031660a0525050600380546001600160a01b031916331790555062000588565b6001600160a01b03811660009081526006602052604090205415620004aa57604051632e5a5c7760e01b815260040160405180910390fd5b61010060055410620004cf57604051631cbbe18560e01b815260040160405180910390fd5b600580546001600160a01b0383166000818152600660209081526040808320600190951b948590558483526004909152812091909155825491929062000515836200055e565b91905055505050565b6001600160a01b03811681146200053457600080fd5b50565b6000602082840312156200054a57600080fd5b815162000557816200051e565b9392505050565b60006000198214156200058157634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e051610100516101205161014051615248620006a0600039600081816107e20152818161371001526137c501526000818161052f01526136780152600081816103d301528181610e5701528181610ebb015281816124ff0152818161265a01528181612aa101528181612b8c01528181612c4e01528181612d0d0152613b8f015260006105a401526000818161062701528181610d2201528181610db301528181610e0001528181610e3601528181610f3f0152818161203a01528181612b6b015281816130ee015281816134dc015281816135a90152613fe601526000818161081c01528181610fe101526124c20152600081816107a80152818161118401526122cb01526152486000f3fe608060405234801561001057600080fd5b50600436106103415760003560e01c8063830aa745116101bd578063a70bc542116100f9578063e75538c7116100a2578063f9aa028a1161007c578063f9aa028a1461089d578063fdd57645146108bd578063fe47cde7146108f3578063ff6875431461091357600080fd5b8063e75538c714610864578063e958b70414610877578063f67c5bd01461088a57600080fd5b8063db7ceb80116100d3578063db7ceb8014610817578063dc2b21c11461083e578063e1998cf91461085157600080fd5b8063a70bc542146107ca578063c5e10eef146107dd578063d48bfca71461080457600080fd5b806394cf073a116101665780639f5f86ae116101405780639f5f86ae146107745780639fd12b7714610787578063a366f49614610790578063a50cf2c8146107a357600080fd5b806394cf073a146106f557806395373018146107085780639af1d35a1461071b57600080fd5b80638991b2f1116101975780638991b2f1146106af5780638fe3f93f146106cf578063944ac59f146106e257600080fd5b8063830aa7451461066f5780638345f26e146106825780638456cb59146106a757600080fd5b8063458936f51161028c578063570a7af2116102355780636ce4074a1161020f5780636ce4074a146105ef5780636e98e5e41461060f5780636f307dc314610622578063783274381461064957600080fd5b8063570a7af21461059f5780635c975abb146105c6578063654a9eda146105dc57600080fd5b80635063524a116102665780635063524a1461055157806351e3f1601461058457806354fd4d501461059757600080fd5b8063458936f51461050e57806346fb371d146105175780634f0e0ef31461052a57600080fd5b80632630c12f116102ee5780633192195c116102c85780633192195c146104be5780633e8297ca146104e65780633f4ba83a1461050657600080fd5b80632630c12f1461045857806329df0b93146104845780632f7a18811461049757600080fd5b806316f0115b1161031f57806316f0115b146103ce578063172c48c7146103f55780632362a2d81461043757600080fd5b8063055ee9b5146103465780630d8f9cee146103a657806311ca4fc2146103bb575b600080fd5b61037c610354366004614a87565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6103b96103b4366004614aa4565b610949565b005b6103b96103c9366004614aa4565b610a76565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b610408610403366004614add565b610b4e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff90911660208301520161039d565b61044a610445366004614b13565b610b66565b60405190815260200161039d565b6001546a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661037c565b6103b9610492366004614a87565b6110be565b60005461037c906301000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6104d16104cc366004614a87565b611122565b6040805192835260208301919091520161039d565b61044a6104f4366004614a87565b60096020526000908152604090205481565b6103b9611156565b61044a60055481565b6103b9610525366004614b95565b611244565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b61056461055f366004614be6565b61149b565b60408051948552602085019390935291830152606082015260800161039d565b6103b9610592366004614aa4565b611602565b61044a600281565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff16604051901515815260200161039d565b6103b96105ea366004614c21565b611703565b6106026105fd366004614d40565b611bbb565b60405161039d9190614e5b565b6103b961061d366004614aa4565b611e8e565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b61065c610657366004614a87565b612036565b60405161ffff909116815260200161039d565b6103b961067d366004614b95565b61210f565b6000546106959062010000900460ff1681565b60405160ff909116815260200161039d565b6103b961229d565b61044a6106bd366004614a87565b60086020526000908152604090205481565b61037c6106dd366004614e6e565b612389565b6103b96106f0366004614ea5565b612718565b61044a610703366004614f0a565b612845565b6103b9610716366004614a87565b612e5a565b6001546040805161ffff808416825262010000840481166020830152640100000000840481169282019290925266010000000000008304821660608201526801000000000000000090920416608082015260a00161039d565b6103b9610782366004614a87565b612f85565b61044a60075481565b6103b961079e366004614add565b613045565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b96107d8366004614f4c565b61309b565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b9610812366004614a87565b613221565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b961084c366004614f81565b61327b565b6103b961085f366004614aa4565b613306565b610408610872366004614add565b6134c9565b61037c610885366004614a87565b613541565b61044a610898366004614a87565b6135a5565b60035461037c9073ffffffffffffffffffffffffffffffffffffffff1681565b61037c6108cb366004614a87565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600c5461037c9073ffffffffffffffffffffffffffffffffffffffff1681565b61037c610921366004614a87565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561099b57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b156109d2576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615610a14576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610a4a828261362e565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314610ac7576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff9384166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff90911617905560018054919092166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909116179055565b600080610b5d6001841b6134c9565b91509150915091565b6000805460ff1615610bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff1615610c1b576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314610ca0576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cab89613541565b90506000806000806000610cbe86611122565b9094509050610ccf8c8e868461149b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152939b5093985090955093506000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190614fa4565b9050610d9b8887614fec565b610da6906001614fec565b811115610de657610de1877f00000000000000000000000000000000000000000000000000000000000000008d60018c8b870303038d61366e565b610e30565b610e3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168d8960018a8d01869003016138c0565b610e7e877f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089600061366e565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ca9505e490606401600060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b50505050505050506001841115610f6757610f67837f00000000000000000000000000000000000000000000000000000000000000008d87600061366e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902054861916610f9c8489888461395b565b6040517f89b77b3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f000000000000000000000000000000000000000000000000000000000000000016906389b77b3e90602401600060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff909c16600090815260026020526040812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550929a9950505050505050505050565b6000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314611116576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111f81613a35565b50565b60008060008061113185613aa6565b91955092509050816111438286615004565b61114d9190615041565b92505050915091565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa1580156111e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611204919061507c565b61123a576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611242613c24565b565b60005460ff16156112b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156112f3576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff9081169084161480159061137457506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b80156113985750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b806113b7575073ffffffffffffffffffffffffffffffffffffffff8316155b156113ee576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113f7826135a5565b61142d576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061143885613541565b9050611448838583856000613d05565b61146c5761145b83858360006001613d05565b5061146a838583856001613d05565b505b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6001546000908190819081906127109061ffff166114b98888615099565b6114c39190615004565b6114cd9190615041565b6114d79086614fec565b935060018760028111156114ed576114ed6150b0565b1415611587576001546000906127109061151390640100000000900461ffff168b615004565b61151d9190615041565b6001549091506127109061153b9062010000900461ffff168b615004565b6115459190615041565b61154f9086614fec565b94508481111561156657600185820303935061156a565b8094505b85811061157b578585039250611581565b84860391505b506115f7565b600287600281111561159b5761159b6150b0565b14156115f157600154600090612710906115c59068010000000000000000900461ffff168b615004565b6115cf9190615041565b6001549091506127109061153b906601000000000000900461ffff168b615004565b84840391505b945094509450949050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561165457506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561168b576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156116cd576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610a4a8282613ea6565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561175557506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561178c576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156117ce576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556118048584613ea6565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908616906370a0823190602401602060405180830381865afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190614fa4565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918616906370a0823190602401602060405180830381865afa15801561190a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192e9190614fa4565b60015490915060009081906a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16635cecbd0e61196c8689615099565b8a6119778988615099565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301528a1660648201526084016040805180830381865afa1580156119f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1791906150df565b9150915060018411611a2d57611a2d898961362e565b611a3687612036565b611a449061ffff1682615004565b9050611a4f88612036565b611a5d9061ffff1683615004565b9150818110611a7857611a6f89613a35565b5050505061146c565b73ffffffffffffffffffffffffffffffffffffffff891660009081526009602052604081205483611ab56b033b2e3c9fd0803ce800000085615004565b611abf9190615041565b611ad5906b033b2e3c9fd0803ce8000000615099565b611adf9190614fec565b60015490915061271090611b0a906b033b2e3c9fd0803ce80000009062010000900461ffff16615004565b611b149190615041565b8111611b555773ffffffffffffffffffffffffffffffffffffffff8a166000908152600960205260409020819055611b4b8a613a35565b505050505061146c565b611b5e8a613f56565b50505073ffffffffffffffffffffffffffffffffffffffff871660009081526009602052604090206001905550505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6060611bc960005460ff1690565b15611c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff1615611c72576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416141580611ce7575073ffffffffffffffffffffffffffffffffffffffff8316155b15611d3d57600c5473ffffffffffffffffffffffffffffffffffffffff163314611d3d576040517f5d2e3a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d4885613541565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a36040517f1cff79cd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631cff79cd90611df89087908790600401615103565b6000604051808303816000875af1158015611e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611e5d9190810190615132565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314611edf576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615611f4f5773ffffffffffffffffffffffffffffffffffffffff8281166000908152600a6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b73ffffffffffffffffffffffffffffffffffffffff811615611fbf5773ffffffffffffffffffffffffffffffffffffffff8181166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169184169190911790555b73ffffffffffffffffffffffffffffffffffffffff811673cccccccccccccccccccccccccccccccccccccccc141561203257600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ba5750506001547e01000000000000000000000000000000000000000000000000000000000000900461ffff1690565b60006120c5836135a5565b9050806120fe576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612107816134c9565b949350505050565b60005460ff161561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156121be576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314612243576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61224d8383613ea6565b61226f73ffffffffffffffffffffffffffffffffffffffff83168585846138c0565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015612327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234b919061507c565b612381576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112426142d4565b6000805460ff16156123f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff1615612439576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146124be576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166321d18456857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258c9190614fa4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af11580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b91906151a0565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80831660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050506126c28382614394565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206001905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612769576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff97851662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931694909816939093171794909416949094179190911716919091179055565b6000805460ff16156128b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156128f5576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461297a576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600061298887613aa6565b925092509250846129a25761299d8684615099565b6129ac565b6129ac8684614fec565b935060008515612b045769021e19e0c9bab24000008510612a15576129d583603689901c615004565b6129e3603686901c84615004565b6129ed9190614fec565b603686901c6129fc8585615004565b612a069190615004565b612a109190615041565b612a52565b612a1f8388615004565b612a298584615004565b612a339190614fec565b85612a3e8585615004565b612a489190615004565b612a529190615041565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff8a811660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b158015612ae757600080fd5b505af1158015612afb573d6000803e3d6000fd5b50505050612d9f565b60008484612b128583615004565b612b1c9190615041565b612b269190615099565b60015490915060009061271090612b419061ffff1684615004565b612b4b9190615041565b905073ffffffffffffffffffffffffffffffffffffffff8a1663d1660f997f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612bb6878f614fec565b612bc09190614fec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b158015612c3457600080fd5b505af1158015612c48573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca9505e4838b612c949190614fec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526024810184905260006044820152606401600060405180830381600087803b158015612cf357600080fd5b505af1158015612d07573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9a9190614fa4565b925050505b6040517f16128211000000000000000000000000000000000000000000000000000000008152600481018690526024810182905273ffffffffffffffffffffffffffffffffffffffff891690631612821190604401600060405180830381600087803b158015612e0e57600080fd5b505af1158015612e22573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055509498975050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015612eac57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15612ee3576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615612f25576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055612f5a81613f56565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314612fd6576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff163314613096576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600755565b60035473ffffffffffffffffffffffffffffffffffffffff1633146130ec576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613193576001805461ffff83167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790555050565b600061319e836135a5565b9050806131d7576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1675ffff000000000000000000000000000000000000000060a084901b161790555050565b60035473ffffffffffffffffffffffffffffffffffffffff163314613272576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111f81614467565b60035473ffffffffffffffffffffffffffffffffffffffff1633146132cc576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460ff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60005460ff1615613373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156133b5576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461343a576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344583613541565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055905061349c8282614394565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b60008082600114156135275750506001547f0000000000000000000000000000000000000000000000000000000000000000927e0100000000000000000000000000000000000000000000000000000000000090910461ffff169150565b50506000908152600460205260409020549060a082901c90565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526002602052604090205416806135a0576040517fb5ba4c4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146136255773ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040902054613628565b60015b92915050565b6000613639826135a5565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260086020526040902080549319939093169092555050565b8080156136c657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613828576040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b15801561376357600080fd5b505af1158015613777573d6000803e3d6000fd5b50506040517f5869dba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169250635869dba89150604401600060405180830381600087803b15801561380b57600080fd5b505af115801561381f573d6000803e3d6000fd5b505050506138b9565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b1580156138a057600080fd5b505af11580156138b4573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261395590859061455b565b50505050565b60025b8181116138b95781811615613a2d576000613978826134c9565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918316906370a0823190602401602060405180830381865afa1580156139eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0f9190614fa4565b90506002811115613a2a57613a2a878388600185038961366e565b50505b60011b61395e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205490613a6582614667565b60005490915062010000900460ff16811115613aa1576000613a86836146a7565b613a91906001614fec565b905061395584848460008561470b565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1a9190614fa4565b92508373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8b9190614fa4565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1c9190614fa4565b929491935050565b60005460ff16613c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610bd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291517f1cff79cd000000000000000000000000000000000000000000000000000000008152600092861691631cff79cd91613dc6918a91600401615103565b6000604051808303816000875af1925050508015613e2457506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613e219190810190615132565b60015b613e2d57613e61565b80511580613e50575080806020019051810190613e4a919061507c565b15156001145b15613e5f576001915050613e9d565b505b8115613e99576040517f76e3e29c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060005b95945050505050565b6000613eb1826135a5565b9050801580613ec35750600754811615155b15613efa576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020548116613aa15773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805482179055505050565b60015473ffffffffffffffffffffffffffffffffffffffff8281166000908152600860205260408120546a010000000000000000000090930490911691908080613f9f86611122565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526127108202600482015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166024830152919350908716915063f9a6503090604401602060405180830381865afa15801561403a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405e9190614fa4565b9250614069846146a7565b6001019150506000806000805b848110156142a157801561408f5760018186031b614092565b60015b935086841615614299576000806140a8866134c9565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529294509092506000918416906370a0823190602401602060405180830381865afa15801561411d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141419190614fa4565b9050600181111561428c576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff841691908d169063f9a6503090604401602060405180830381865afa1580156141c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ea9190614fa4565b6141f49190615004565b6141fe9087614fec565b95508886106142875760006142128b614667565b60005490915062010000900460ff16811115614249576142448d8c836001891561423e57898e0361470b565b8d61470b565b614278565b85156142785773ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602052604090208b90555b50505050505050505050505050565b614295565b98861898600194505b5050505b600101614076565b506040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff1615614341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cdb3390565b73ffffffffffffffffffffffffffffffffffffffff821615806143dd575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615155b15614414576040517f9e59609e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040902054156144c4576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010060055410614501576040517f1cbbe18500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff83166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290614552836151bd565b91905055505050565b60006145bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166148799092919063ffffffff16565b805190915015613aa157808060200190518101906145db919061507c565b613aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610bd0565b60008060005b6101008110156146a0576001811b91508382161561468c578260010192505b838210614698576146a0565b60010161466d565b5050919050565b600081600114156146ba57506000919050565b61010060015b60016146cc8284614fec565b901c92506001831b848116158015906146e75750600185851c145b156146f257506146a0565b84811061470157839250614705565b8391505b506146c0565b815b81811015614846576001811b8581161561483d57600061472c826134c9565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529192506000918316906370a0823190602401602060405180830381865afa15801561479f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147c39190614fa4565b90506001811161483a57600054978318977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9097019660ff6201000090910416871161483a5750505073ffffffffffffffffffffffffffffffffffffffff86166000908152600860205260409020859055506138b9565b50505b5060010161470d565b506040517f53275fcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606148888484600085614892565b90505b9392505050565b606082471015614924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610bd0565b843b61498c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bd0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516149b591906151f6565b60006040518083038185875af1925050503d80600081146149f2576040519150601f19603f3d011682016040523d82523d6000602084013e6149f7565b606091505b5091509150614a07828286614a12565b979650505050505050565b60608315614a2157508161488b565b825115614a315782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd09190614e5b565b73ffffffffffffffffffffffffffffffffffffffff8116811461111f57600080fd5b600060208284031215614a9957600080fd5b813561488b81614a65565b60008060408385031215614ab757600080fd5b8235614ac281614a65565b91506020830135614ad281614a65565b809150509250929050565b600060208284031215614aef57600080fd5b5035919050565b8035600381106135a057600080fd5b801515811461111f57600080fd5b600080600080600080600060e0888a031215614b2e57600080fd5b8735614b3981614a65565b9650614b4760208901614af6565b9550604088013594506060880135614b5e81614a65565b93506080880135614b6e81614a65565b925060a0880135915060c0880135614b8581614b05565b8091505092959891949750929550565b60008060008060808587031215614bab57600080fd5b8435614bb681614a65565b93506020850135614bc681614a65565b92506040850135614bd681614a65565b9396929550929360600135925050565b60008060008060808587031215614bfc57600080fd5b84359350614c0c60208601614af6565b93969395505050506040820135916060013590565b600080600080600060a08688031215614c3957600080fd5b8535614c4481614a65565b94506020860135614c5481614a65565b93506040860135614c6481614a65565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614cf257614cf2614c7c565b604052919050565b600067ffffffffffffffff821115614d1457614d14614c7c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080600060608486031215614d5557600080fd5b8335614d6081614a65565b92506020840135614d7081614a65565b9150604084013567ffffffffffffffff811115614d8c57600080fd5b8401601f81018613614d9d57600080fd5b8035614db0614dab82614cfa565b614cab565b818152876020838501011115614dc557600080fd5b816020840160208301376000602083830101528093505050509250925092565b60005b83811015614e00578181015183820152602001614de8565b838111156139555750506000910152565b60008151808452614e29816020860160208601614de5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061488b6020830184614e11565b60008060408385031215614e8157600080fd5b823591506020830135614ad281614a65565b803561ffff811681146135a057600080fd5b600080600080600060a08688031215614ebd57600080fd5b614ec686614e93565b9450614ed460208701614e93565b9350614ee260408701614e93565b9250614ef060608701614e93565b9150614efe60808701614e93565b90509295509295909350565b600080600060608486031215614f1f57600080fd5b8335614f2a81614a65565b9250602084013591506040840135614f4181614b05565b809150509250925092565b60008060408385031215614f5f57600080fd5b8235614f6a81614a65565b9150614f7860208401614e93565b90509250929050565b600060208284031215614f9357600080fd5b813560ff8116811461488b57600080fd5b600060208284031215614fb657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614fff57614fff614fbd565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503c5761503c614fbd565b500290565b600082615077577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561508e57600080fd5b815161488b81614b05565b6000828210156150ab576150ab614fbd565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080604083850312156150f257600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006148886040830184614e11565b60006020828403121561514457600080fd5b815167ffffffffffffffff81111561515b57600080fd5b8201601f8101841361516c57600080fd5b805161517a614dab82614cfa565b81815285602083850101111561518f57600080fd5b613e9d826020830160208601614de5565b6000602082840312156151b257600080fd5b815161488b81614a65565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151ef576151ef614fbd565b5060010190565b60008251615208818460208701614de5565b919091019291505056fea26469706673582212209d39bb9d4972b515acdad1ffb757acd15e103ca6ee762f88a6382b36243734ba64736f6c634300080a003360806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d00011790553480156200003a57600080fd5b506040805161018081019091526000908060c081018060018152604080518082018252600381526244414960e81b6020828101919091528301526012908201526305f5e100606082015260800160018152602001600081525081526020016040518060c001604052806002600a811115620000b957620000b962000b78565b815260408051808201825260048152635553444360e01b6020828101919091528301526006908201526305f5e100606082015260800160018152602001600081525081526020016040518060c001604052806003600a81111562000121576200012162000b78565b815260408051808201825260048152630ae8aa8960e31b602082810191909152830152601290820152644a817c8000606082015260800160028152602001600081525081526020016040518060c001604052806004600a8111156200018a576200018a62000b78565b815260408051808201825260048152634c494e4b60e01b6020828101919091528301526012908201526359682f00606082015260800160018152602001600081525081526020016040518060c001604052806005600a811115620001f257620001f262000b78565b815260408051808201825260048152631554d11560e21b602082810191909152830152601290820152633b023380606082015260800160018152602001600081525081526020016040518060c001604052806006600a8111156200025a576200025a62000b78565b815260408051808201825260058152640e6e88aa8960db1b602082810191909152830152601290820152644cd588640060608201526080016003815260200160009052905260408051610140810190915290915060009080608081018060078152602001604051806040016040528060048152602001636344414960e01b8152508152602001601260ff1681526020016305f5e100815260200160048081111562000309576200030962000b78565b8152602001600181525081526020016040518060c001604052806008600a81111562000339576200033962000b78565b81526040805180820182526005815264635553444360d81b6020828101919091528301526006908201526305f5e100606082015260800160048152602001600281525081526020016040518060c001604052806009600a811115620003a257620003a262000b78565b8152604080518082018252600581526418d554d11560da1b602082810191909152830152601290820152633b023380606082015260800160048152602001600581525081526020016040518060c00160405280600a808111156200040a576200040a62000b78565b81526040805180820182526005815264634c494e4b60d81b6020828101919091528301526012908201526359682f00606082015260800160048152602001600490529052905060005b600681101562000496576200048183826006811062000476576200047662000b8e565b6020020151620004db565b806200048d8162000ba4565b91505062000453565b5060005b6004811015620004d257620004bd82826004811062000476576200047662000b8e565b80620004c98162000ba4565b9150506200049a565b50505062000d14565b6000600282608001516004811115620004f857620004f862000b78565b14156200054e576040516200050d9062000a8c565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b03831617905590506200071e565b60038260800151600481111562000569576200056962000b78565b1415620005a4576040516200057e9062000a9a565b604051809103906000f0801580156200059b573d6000803e3d6000fd5b5090506200071e565b600182608001516004811115620005bf57620005bf62000b78565b1415620005f157816020015182602001518360400151604051620005e39062000aa8565b6200057e9392919062000c1e565b6004826080015160048111156200060c576200060c62000b78565b1415620006be576000600260008460a00151600a81111562000632576200063262000b78565b600a81111562000646576200064662000b78565b815260200190815260200160002060009054906101000a90046001600160a01b0316905082602001518360200151846040015183604051620006889062000ab6565b62000697949392919062000c5b565b604051809103906000f080158015620006b4573d6000803e3d6000fd5b509150506200071e565b60405162461bcd60e51b815260206004820152602b60248201527f74657374546f6b656e53756974653a204372656174696e6720756e6b6e6f776e60448201526a20746f6b656e207479706560a81b606482015260840160405180910390fd5b60005460208301516040516318caf8e360e31b8152620100009092046001600160a01b03169163c657c718916200075b9185919060040162000ca9565b600060405180830381600087803b1580156200077657600080fd5b505af11580156200078b573d6000803e3d6000fd5b50505050600082606001516008604051620007a69062000ac4565b91825260ff166020820152604001604051809103906000f080158015620007d1573d6000803e3d6000fd5b50905081600260008560000151600a811115620007f257620007f262000b78565b600a81111562000806576200080662000b78565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260600151600560008560000151600a8111156200085a576200085a62000b78565b600a8111156200086e576200086e62000b78565b8152602080820192909252604090810160009081209390935585516001600160a01b03861684526008909252909120805460ff1916600183600a811115620008ba57620008ba62000b78565b02179055508260800151600360008560000151600a811115620008e157620008e162000b78565b600a811115620008f557620008f562000b78565b81526020810191909152604001600020805460ff1916600183600481111562000922576200092262000b78565b0217905550604080518082019091526001600160a01b0380841682528281166020808401918252600780546001810182556000918252945160029095027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180549686166001600160a01b031997881617905592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689909301805493909416929094169190911790915584015184519091600491600a811115620009eb57620009eb62000b78565b600a811115620009ff57620009ff62000b78565b8152602001908152602001600020908051906020019062000a2292919062000ad2565b5080600660008560000151600a81111562000a415762000a4162000b78565b600a81111562000a555762000a5562000b78565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050565b610ab1806200285183390190565b611224806200330283390190565b611758806200452683390190565b6117098062005c7e83390190565b6106ca806200738783390190565b82805462000ae09062000cd7565b90600052602060002090601f01602090048101928262000b04576000855562000b4f565b82601f1062000b1f57805160ff191683800117855562000b4f565b8280016001018555821562000b4f579182015b8281111562000b4f57825182559160200191906001019062000b32565b5062000b5d92915062000b61565b5090565b5b8082111562000b5d576000815560010162000b62565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141562000bc757634e487b7160e01b600052601160045260246000fd5b5060010190565b6000815180845260005b8181101562000bf65760208185018101518683018201520162000bd8565b8181111562000c09576000602083870101525b50601f01601f19169290920160200192915050565b60608152600062000c33606083018662000bce565b828103602084015262000c47818662000bce565b91505060ff83166040830152949350505050565b60808152600062000c70608083018762000bce565b828103602084015262000c84818762000bce565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b6001600160a01b038316815260406020820181905260009062000ccf9083018462000bce565b949350505050565b600181811c9082168062000cec57607f821691505b6020821081141562000d0e57634e487b7160e01b600052602260045260246000fd5b50919050565b611b2d8062000d246000396000f3fe6080604052600436106101635760003560e01c80638eb86e8b116100c0578063c6c3bbe611610074578063d051a62211610059578063d051a62214610490578063eebab8ef146104b0578063fa7626d4146104d057600080fd5b8063c6c3bbe614610433578063c74912d21461045357600080fd5b80639b140a85116100a55780639b140a85146103e6578063b36ba20814610406578063ba414fa61461040e57600080fd5b80638eb86e8b1461038357806398cdaadf146103a357600080fd5b80636a72bde71161011757806388327863116100fc578063883278631461030857806388f776a2146103365780638a3177a31461035657600080fd5b80636a72bde7146102c45780636ca42ae3146102e657600080fd5b8063440864fa11610148578063440864fa146102025780634b57b0be1461022f57806367b426451461028157600080fd5b806304bc3b1c1461016f57806310c7f0b9146101b557600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061019f61018a3660046116f6565b60086020526000908152604090205460ff1681565b6040516101ac9190611742565b60405180910390f35b3480156101c157600080fd5b506101d56101d036600461175c565b6104ea565b6040805173ffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101ac565b34801561020e57600080fd5b5061022261021d366004611784565b610530565b6040516101ac91906117cb565b34801561023b57600080fd5b5060015461025c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ac565b34801561028d57600080fd5b5061025c61029c366004611784565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d057600080fd5b506102e46102df36600461181c565b6105ca565b005b3480156102f257600080fd5b506102fb610730565b6040516101ac919061186b565b34801561031457600080fd5b506103286103233660046118d4565b6107b5565b6040519081526020016101ac565b34801561034257600080fd5b506102e461035136600461190b565b610888565b34801561036257600080fd5b50610328610371366004611784565b60056020526000908152604090205481565b34801561038f57600080fd5b506102e461039e366004611954565b6108b9565b3480156103af57600080fd5b5061025c6103be366004611784565b60066020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156103f257600080fd5b506102e4610401366004611993565b610a73565b6102e4610b22565b34801561041a57600080fd5b50610423610ba0565b60405190151581526020016101ac565b34801561043f57600080fd5b506102e461044e3660046119b3565b610d00565b34801561045f57600080fd5b5061048361046e366004611784565b60036020526000908152604090205460ff1681565b6040516101ac91906119d3565b34801561049c57600080fd5b506103286104ab36600461190b565b610daf565b3480156104bc57600080fd5b506102e46104cb366004611954565b610e8b565b3480156104dc57600080fd5b506000546104239060ff1681565b600781815481106104fa57600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff91821692501682565b60046020526000908152604090208054610549906119e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906119e7565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b505050505081565b6000546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152620100009092049091169063ca669fa790602401600060405180830381600087803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b505050506002600085600a81111561066c5761066c611713565b600a81111561067d5761067d611713565b8152602081019190915260409081016000205490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015610705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107299190611a3b565b5050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156107ac5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff908116835260019182015416828401529083529092019101610754565b50505050905090565b60006002600084600a8111156107cd576107cd611713565b600a8111156107de576107de611713565b8152602081019190915260409081016000205490517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116906370a0823190602401602060405180830381865afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190611a5d565b9392505050565b6108b48383837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105ca565b505050565b60016003600085600a8111156108d1576108d1611713565b600a8111156108e2576108e2611713565b815260208101919091526040016000205460ff16600481111561090757610907611713565b14610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f74657374546f6b656e53756974653a20547279696e6720746f206275726e206160448201527f206e6f6e2d6e6f726d616c20746f6b656e00000000000000000000000000000060648201526084015b60405180910390fd5b6002600084600a8111156109af576109af611713565b600a8111156109c0576109c0611713565b8152602081019190915260409081016000205490517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905290911690639dc29fac906044015b6020604051808303816000875af1158015610a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6d9190611a3b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205460ff169081600a811115610aaf57610aaf611713565b1415610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f20746f6b656e2077697468207375636820616464726573730000000000006044820152606401610990565b610a6d818484610888565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b8c57600080fd5b505af1158015610729573d6000803e3d6000fd5b60008054610100900460ff1615610bc05750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cfb5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610c65917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611a76565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c9d91611abe565b6000604051808303816000865af19150503d8060008114610cda576040519150601f19603f3d011682016040523d82523d6000602084013e610cdf565b606091505b5091505080806020019051810190610cf79190611a3b565b9150505b919050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205460ff169081600a811115610d3c57610d3c611713565b1415610da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f20746f6b656e2077697468207375636820616464726573730000000000006044820152606401610990565b610a6d818484610e8b565b60006002600085600a811115610dc757610dc7611713565b600a811115610dd857610dd8611713565b8152602081019190915260409081016000205490517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301529091169063dd62ed3e90604401602060405180830381865afa158015610e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e839190611a5d565b949350505050565b60026003600085600a811115610ea357610ea3611713565b600a811115610eb457610eb4611713565b815260208101919091526040016000205460ff166004811115610ed957610ed9611713565b1415610ff6576000546040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152602481018390526201000090910473ffffffffffffffffffffffffffffffffffffffff169063c88a5e6d90604401600060405180830381600087803b158015610f5657600080fd5b505af1158015610f6a573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b505050505061163c565b600380600085600a81111561100d5761100d611713565b600a81111561101e5761101e611713565b815260208101919091526040016000205460ff16600481111561104357611043611713565b14156111aa576000546040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152602481018390526201000090910473ffffffffffffffffffffffffffffffffffffffff169063c88a5e6d90604401600060405180830381600087803b1580156110c057600080fd5b505af11580156110d4573d6000803e3d6000fd5b505050506002600084600a8111156110ee576110ee611713565b600a8111156110ff576110ff611713565b8152602081019190915260409081016000205490517fa1903eab00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063a1903eab90839060240160206040518083038185885af115801561117f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111a49190611a5d565b5061163c565b60046003600085600a8111156111c2576111c2611713565b600a8111156111d3576111d3611713565b815260208101919091526040016000205460ff1660048111156111f8576111f8611713565b141561148f5760006002600085600a81111561121657611216611713565b600a81111561122757611227611713565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190611ada565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020549091506112fb9060ff163084610e8b565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36002600087600a81111561132d5761132d611713565b600a81111561133e5761133e611713565b81526020810191909152604090810160002054905160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018590526044016020604051808303816000875af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190611a3b565b506002600085600a8111156113fd576113fd611713565b600a81111561140e5761140e611713565b8152602081019190915260409081016000205490517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810184905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b158015610fd857600080fd5b60016003600085600a8111156114a7576114a7611713565b600a8111156114b8576114b8611713565b815260208101919091526040016000205460ff1660048111156114dd576114dd611713565b14156115b4576002600084600a8111156114f9576114f9611713565b600a81111561150a5761150a611713565b8152602081019190915260409081016000205490517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044016020604051808303816000875af1158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a49190611a3b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f74657374546f6b656e53756974653a20547279696e6720746f207472616e736660448201527f657220756e6b6e6f776e20746f6b656e000000000000000000000000000000006064820152608401610990565b6002600084600a81111561165257611652611713565b600a81111561166357611663611713565b8152602081019190915260409081016000205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063a9059cbb90604401610a2a565b73ffffffffffffffffffffffffffffffffffffffff811681146116f357600080fd5b50565b60006020828403121561170857600080fd5b8135610881816116d1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600b831061175657611756611713565b91905290565b60006020828403121561176e57600080fd5b5035919050565b8035600b8110610cfb57600080fd5b60006020828403121561179657600080fd5b61088182611775565b60005b838110156117ba5781810151838201526020016117a2565b83811115610a6d5750506000910152565b60208152600082518060208401526117ea81604085016020870161179f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806080858703121561183257600080fd5b61183b85611775565b9350602085013561184b816116d1565b9250604085013561185b816116d1565b9396929550929360600135925050565b602080825282518282018190526000919060409081850190868401855b828110156118c7578151805173ffffffffffffffffffffffffffffffffffffffff90811686529087015116868501529284019290850190600101611888565b5091979650505050505050565b600080604083850312156118e757600080fd5b6118f083611775565b91506020830135611900816116d1565b809150509250929050565b60008060006060848603121561192057600080fd5b61192984611775565b92506020840135611939816116d1565b91506040840135611949816116d1565b809150509250925092565b60008060006060848603121561196957600080fd5b61197284611775565b92506020840135611982816116d1565b929592945050506040919091013590565b6000806000606084860312156119a857600080fd5b8335611929816116d1565b6000806000606084860312156119c857600080fd5b8335611972816116d1565b602081016005831061175657611756611713565b600181811c908216806119fb57607f821691505b60208210811415611a35577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215611a4d57600080fd5b8151801515811461088157600080fd5b600060208284031215611a6f57600080fd5b5051919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251611ab081600485016020870161179f565b919091016004019392505050565b60008251611ad081846020870161179f565b9190910192915050565b600060208284031215611aec57600080fd5b8151610881816116d156fea264697066735822122010fe735ed069aca27931edce4ba2ff14ec7886bf21b0eea685a884f9200fb49e64736f6c634300080a003360c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061014e565b82805461008690610113565b90600052602060002090601f0160209004810192826100a857600085556100ee565b82601f106100c157805160ff19168380011785556100ee565b828001600101855582156100ee579182015b828111156100ee5782518255916020019190600101906100d3565b506100fa9291506100fe565b5090565b5b808211156100fa57600081556001016100ff565b600181811c9082168061012757607f821691505b6020821081141561014857634e487b7160e01b600052602260045260246000fd5b50919050565b6109548061015d6000396000f3fe6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb14610225578063d0e30db014610245578063dd62ed3e1461024d57600080fd5b806340c10f19146101c357806370a08231146101e357806395d89b411461021057600080fd5b806323b872dd116100a557806323b872dd146101575780632e1a7d4d14610177578063313ce5671461019757600080fd5b806306fdde03146100df578063095ea7b31461010a57806318160ddd1461013a57600080fd5b366100da576100d8610285565b005b600080fd5b3480156100eb57600080fd5b506100f46102e0565b6040516101019190610703565b60405180910390f35b34801561011657600080fd5b5061012a61012536600461079f565b61036e565b6040519015158152602001610101565b34801561014657600080fd5b50475b604051908152602001610101565b34801561016357600080fd5b5061012a6101723660046107c9565b6103e7565b34801561018357600080fd5b506100d8610192366004610805565b6105fe565b3480156101a357600080fd5b506002546101b19060ff1681565b60405160ff9091168152602001610101565b3480156101cf57600080fd5b506100d86101de36600461079f565b6106a4565b3480156101ef57600080fd5b506101496101fe36600461081e565b60036020526000908152604090205481565b34801561021c57600080fd5b506100f46106e2565b34801561023157600080fd5b5061012a61024036600461079f565b6106ef565b6100d8610285565b34801561025957600080fd5b50610149610268366004610839565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102a490849061089b565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102ed906108b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610319906108b3565b80156103665780601f1061033b57610100808354040283529160200191610366565b820191906000526020600020905b81548152906001019060200180831161034957829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103d69086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561041957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061048f575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105175773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156104d157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610511908490610907565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061054c908490610907565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805484929061058690849061089b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105ec91815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561061a57600080fd5b3360009081526003602052604081208054839290610639908490610907565b9091555050604051339082156108fc029083906000818181858888f1935050505015801561066b573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906106d990849061089b565b90915550505050565b600180546102ed906108b3565b60006106fc3384846103e7565b9392505050565b600060208083528351808285015260005b8181101561073057858101830151858201604001528201610714565b81811115610742576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461079a57600080fd5b919050565b600080604083850312156107b257600080fd5b6107bb83610776565b946020939093013593505050565b6000806000606084860312156107de57600080fd5b6107e784610776565b92506107f560208501610776565b9150604084013590509250925092565b60006020828403121561081757600080fd5b5035919050565b60006020828403121561083057600080fd5b6106fc82610776565b6000806040838503121561084c57600080fd5b61085583610776565b915061086360208401610776565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156108ae576108ae61086c565b500190565b600181811c908216806108c757607f821691505b60208210811415610901577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000828210156109195761091961086c565b50039056fea26469706673582212206ec943fa4e3b70d8fca6c25b6aa26fa18e8f8952ce3bc4d5afcb443bf3097c0564736f6c634300080a003360806040526000600255600060035534801561001a57600080fd5b506111fa8061002a6000396000f3fe60806040526004361061016e5760003560e01c80637a28fb88116100cb578063bdd17e1c1161007f578063dd62ed3e11610059578063dd62ed3e146103ee578063ee7a7c0414610441578063f5eb42dc1461046157600080fd5b8063bdd17e1c146103ad578063cdb9a21c146103c3578063d5002f2e146103d957600080fd5b8063a1903eab116100b0578063a1903eab1461035a578063a457c2d71461036d578063a9059cbb1461038d57600080fd5b80637a28fb88146102f457806395d89b411461031457600080fd5b806323b872dd1161012257806337cfdaca1161010757806337cfdaca1461020d57806339509351146102b457806370a08231146102d457600080fd5b806323b872dd14610278578063313ce5671461029857600080fd5b806318160ddd1161015357806318160ddd1461020d578063192084511461023057806322301f6e1461025057600080fd5b806306fdde0314610185578063095ea7b3146101dd57600080fd5b366101805761017d6000610481565b50005b600080fd5b34801561019157600080fd5b5060408051808201909152601781527f4c6971756964207374616b656420457468657220322e3000000000000000000060208201525b6040516101d49190610f63565b60405180910390f35b3480156101e957600080fd5b506101fd6101f8366004610fff565b610545565b60405190151581526020016101d4565b34801561021957600080fd5b5061022261055b565b6040519081526020016101d4565b34801561023c57600080fd5b5061022261024b366004611029565b61056b565b34801561025c57600080fd5b5061027661026b366004611042565b600391909155600255565b005b34801561028457600080fd5b506101fd610293366004611064565b6105ab565b3480156102a457600080fd5b50604051601281526020016101d4565b3480156102c057600080fd5b506101fd6102cf366004610fff565b610696565b3480156102e057600080fd5b506102226102ef3660046110a0565b6106d9565b34801561030057600080fd5b5061022261030f366004611029565b61070e565b34801561032057600080fd5b5060408051808201909152600581527f737445544800000000000000000000000000000000000000000000000000000060208201526101c7565b6102226103683660046110a0565b61073a565b34801561037957600080fd5b506101fd610388366004610fff565b610745565b34801561039957600080fd5b506101fd6103a8366004610fff565b6107f9565b3480156103b957600080fd5b5061022260035481565b3480156103cf57600080fd5b5061022260025481565b3480156103e557600080fd5b50610222610806565b3480156103fa57600080fd5b506102226104093660046110bb565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b34801561044d57600080fd5b5061027661045c366004610fff565b610811565b34801561046d57600080fd5b5061022261047c3660046110a0565b61081f565b60003334806104f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006104fc8261056b565b9050806105065750805b8160036000828254610518919061111d565b909155506105289050838261084a565b61053383838761093b565b61053d8382610992565b949350505050565b60006105523384846109ea565b50600192915050565b600061056660035490565b905090565b60008061057760035490565b9050806105875750600092915050565b6105a48161059e61059760025490565b8690610b52565b90610b5e565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083203384529091528120548281101561066c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5452414e534645525f414d4f554e545f455843454544535f414c4c4f57414e4360448201527f450000000000000000000000000000000000000000000000000000000000000060648201526084016104e8565b610677858585610b6a565b61068b85336106868487610bef565b6109ea565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105529185906106869086610bfb565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260408120546107089061070e565b92915050565b60008061071a60025490565b90508061072a5750600092915050565b6105a48161059e61059760035490565b600061070882610481565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4445435245415345445f414c4c4f57414e43455f42454c4f575f5a45524f000060448201526064016104e8565b6107ef33856106868487610bef565b5060019392505050565b6000610552338484610b6a565b600061056660025490565b61081b8282610c07565b5050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040812054610708565b73ffffffffffffffffffffffffffffffffffffffff82166108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d494e545f544f5f5448455f5a45524f5f41444452455353000000000000000060448201526064016104e8565b80600260008282546108d9919061111d565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461090e9082610bfb565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526020819052604090209190915550565b6040805183815273ffffffffffffffffffffffffffffffffffffffff83811660208301528516917fed8dd430b1e4bba98e943dc5b157cf7b54d9e12916d6c474ff5733a95001d03b910160405180910390a2505050565b73ffffffffffffffffffffffffffffffffffffffff821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109d58461070e565b60405190815260200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8316610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f415050524f56455f46524f4d5f5a45524f5f414444524553530000000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff8216610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f415050524f56455f544f5f5a45524f5f4144445245535300000000000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105a48284611135565b60006105a48284611172565b6000610b758261056b565b9050610b82848483610d64565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610be191815260200190565b60405180910390a350505050565b60006105a482846111ad565b60006105a4828461111d565b73ffffffffffffffffffffffffffffffffffffffff8216610c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4255524e5f46524f4d5f5448455f5a45524f5f4144445245535300000000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205480821115610d14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4255524e5f414d4f554e545f455843454544535f42414c414e4345000000000060448201526064016104e8565b8160026000828254610d2691906111ad565b90915550610d3690508183610bef565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152602081905260409020929092555050565b73ffffffffffffffffffffffffffffffffffffffff8316610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5452414e534645525f46524f4d5f5448455f5a45524f5f41444452455353000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff8216610e5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5452414e534645525f544f5f5448455f5a45524f5f414444524553530000000060448201526064016104e8565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205480821115610eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5452414e534645525f414d4f554e545f455843454544535f42414c414e43450060448201526064016104e8565b610ef88183610bef565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152602081905260408082209390935590851681522054610f349083610bfb565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260208190526040902092909255505050565b600060208083528351808285015260005b81811015610f9057858101830151858201604001528201610f74565b81811115610fa2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ffa57600080fd5b919050565b6000806040838503121561101257600080fd5b61101b83610fd6565b946020939093013593505050565b60006020828403121561103b57600080fd5b5035919050565b6000806040838503121561105557600080fd5b50508035926020909101359150565b60008060006060848603121561107957600080fd5b61108284610fd6565b925061109060208501610fd6565b9150604084013590509250925092565b6000602082840312156110b257600080fd5b6105a482610fd6565b600080604083850312156110ce57600080fd5b6110d783610fd6565b91506110e560208401610fd6565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611130576111306110ee565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561116d5761116d6110ee565b500290565b6000826111a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000828210156111bf576111bf6110ee565b50039056fea2646970667358221220a5b4f31162ba2b8b3424cef84b31ef91d05a825243602b5fdf758ffb49b8246364736f6c634300080a003360a06040523480156200001157600080fd5b506040516200175838038062001758833981016040819052620000349162000269565b8251839083906200004d906003906020850190620000f6565b50805162000063906004906020840190620000f6565b505050620000806200007a620000a060201b60201c565b620000a4565b60ff166080525050600680546001600160a01b031916331790556200032b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010490620002ee565b90600052602060002090601f01602090048101928262000128576000855562000173565b82601f106200014357805160ff191683800117855562000173565b8280016001018555821562000173579182015b828111156200017357825182559160200191906001019062000156565b506200018192915062000185565b5090565b5b8082111562000181576000815560010162000186565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c457600080fd5b81516001600160401b0380821115620001e157620001e16200019c565b604051601f8301601f19908116603f011681019082821181831017156200020c576200020c6200019c565b816040528381526020925086838588010111156200022957600080fd5b600091505b838210156200024d57858201830151818301840152908201906200022e565b838211156200025f5760008385830101525b9695505050505050565b6000806000606084860312156200027f57600080fd5b83516001600160401b03808211156200029757600080fd5b620002a587838801620001b2565b94506020860151915080821115620002bc57600080fd5b50620002cb86828701620001b2565b925050604084015160ff81168114620002e357600080fd5b809150509250925092565b600181811c908216806200030357607f821691505b602082108114156200032557634e487b7160e01b600052602260045260246000fd5b50919050565b60805161141162000347600039600061025f01526114116000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd5780639dc29fac11610081578063a9059cbb11610066578063a9059cbb1461034c578063dd62ed3e1461035f578063f2fde38b146103a557600080fd5b80639dc29fac14610326578063a457c2d71461033957600080fd5b806379cc6790116100b257806379cc6790146102ed5780638da5cb5b1461030057806395d89b411461031e57600080fd5b806370a08231146102af578063715018a6146102e557600080fd5b806318160ddd11610124578063313ce56711610109578063313ce56714610258578063395093511461028957806340c10f191461029c57600080fd5b806318160ddd1461023357806323b872dd1461024557600080fd5b806306fdde03146101565780630754617214610174578063095ea7b3146101b95780631652e9fc146101dc575b600080fd5b61015e6103b8565b60405161016b91906111d2565b60405180910390f35b6006546101949073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6101cc6101c736600461126e565b61044a565b604051901515815260200161016b565b6102316101ea366004611298565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b005b6002545b60405190815260200161016b565b6101cc6102533660046112ba565b610460565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016b565b6101cc61029736600461126e565b61054b565b6101cc6102aa36600461126e565b610594565b6102376102bd366004611298565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102316106a3565b6101cc6102fb36600461126e565b610730565b60055473ffffffffffffffffffffffffffffffffffffffff16610194565b61015e6107be565b6101cc61033436600461126e565b6107cd565b6101cc61034736600461126e565b6107d9565b6101cc61035a36600461126e565b6108b1565b61023761036d3660046112f6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102316103b3366004611298565b6108be565b6060600380546103c790611329565b80601f01602080910402602001604051908101604052809291908181526020018280546103f390611329565b80156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60006104573384846109ee565b50600192915050565b600061046d848484610ba2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61054085338584036109ee565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161045791859061058f9086906113ac565b6109ee565b60065460009073ffffffffffffffffffffffffffffffffffffffff163314610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b60065473ffffffffffffffffffffffffffffffffffffffff163314610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610e56565b60055473ffffffffffffffffffffffffffffffffffffffff163314610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b61072e6000610f76565b565b60065460009073ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610fed565b6060600480546103c790611329565b60006104578383610fed565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548281101561089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161052a565b6108a733858584036109ee565b5060019392505050565b6000610457338484610ba2565b60055473ffffffffffffffffffffffffffffffffffffffff16331461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b73ffffffffffffffffffffffffffffffffffffffff81166109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161052a565b6109eb81610f76565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610de29084906113ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e4891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052a565b8060026000828254610ee591906113ac565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f1f9084906113ac565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906111829084906113c4565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b95565b600060208083528351808285015260005b818110156111ff578581018301518582016040015282016111e3565b81811115611211576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461126957600080fd5b919050565b6000806040838503121561128157600080fd5b61128a83611245565b946020939093013593505050565b6000602082840312156112aa57600080fd5b6112b382611245565b9392505050565b6000806000606084860312156112cf57600080fd5b6112d884611245565b92506112e660208501611245565b9150604084013590509250925092565b6000806040838503121561130957600080fd5b61131283611245565b915061132060208401611245565b90509250929050565b600181811c9082168061133d57607f821691505b60208210811415611377577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113bf576113bf61137d565b500190565b6000828210156113d6576113d661137d565b50039056fea2646970667358221220fd9684963a1e0e9d3eb55681a6f85f5c76804530c79f10cf8d0cfbd35511577164736f6c634300080a003360c06040523480156200001157600080fd5b506040516200170938038062001709833981016040819052620000349162000266565b8351849084906200004d906003906020850190620000f3565b50805162000063906004906020840190620000f3565b505050620000806200007a6200009d60201b60201c565b620000a1565b60ff9091166080526001600160a01b031660a05250620003479050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000101906200030a565b90600052602060002090601f01602090048101928262000125576000855562000170565b82601f106200014057805160ff191683800117855562000170565b8280016001018555821562000170579182015b828111156200017057825182559160200191906001019062000153565b506200017e92915062000182565b5090565b5b808211156200017e576000815560010162000183565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c157600080fd5b81516001600160401b0380821115620001de57620001de62000199565b604051601f8301601f19908116603f0116810190828211818310171562000209576200020962000199565b816040528381526020925086838588010111156200022657600080fd5b600091505b838210156200024a57858201830151818301840152908201906200022b565b838211156200025c5760008385830101525b9695505050505050565b600080600080608085870312156200027d57600080fd5b84516001600160401b03808211156200029557600080fd5b620002a388838901620001af565b95506020870151915080821115620002ba57600080fd5b50620002c987828801620001af565b935050604085015160ff81168114620002e157600080fd5b60608601519092506001600160a01b0381168114620002ff57600080fd5b939692955090935050565b600181811c908216806200031f57607f821691505b602082108114156200034157634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161138e6200037b600039600081816101f70152818161041f0152610600015260006101a2015261138e6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80636f307dc3116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb146102b5578063dd62ed3e146102c8578063f2fde38b1461030e57600080fd5b806395d89b411461029a578063a457c2d7146102a257600080fd5b80636f307dc3146101f257806370a082311461023e578063715018a6146102745780638da5cb5b1461027c57600080fd5b806323b872dd116100ee57806323b872dd14610188578063313ce5671461019b57806339509351146101cc57806340c10f19146101df57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd146101615780631e9a695014610173575b600080fd5b610128610321565b604051610135919061112d565b60405180910390f35b61015161014c3660046111c9565b6103b3565b6040519015158152602001610135565b6002545b604051908152602001610135565b6101866101813660046111c9565b6103c9565b005b6101516101963660046111f3565b610491565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610135565b6101516101da3660046111c9565b61057c565b6101866101ed3660046111c9565b6105c5565b6102197f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b61016561024c36600461122f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610186610691565b60055473ffffffffffffffffffffffffffffffffffffffff16610219565b61012861071e565b6101516102b03660046111c9565b61072d565b6101516102c33660046111c9565b610805565b6101656102d6366004611251565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61018661031c36600461122f565b610812565b60606003805461033090611284565b80601f016020809104026020016040519081016040528092919081815260200182805461035c90611284565b80156103a95780601f1061037e576101008083540402835291602001916103a9565b820191906000526020600020905b81548152906001019060200180831161038c57829003601f168201915b5050505050905090565b60006103c0338484610942565b50600192915050565b6103d33382610af5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c91906112d8565b505050565b600061049e848484610ce2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105718533858403610942565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103c09185906105c0908690611329565b610942565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af115801561065e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068291906112d8565b5061068d8282610f96565b5050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161055b565b61071c60006110b6565b565b60606004805461033090611284565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161055b565b6107fb3385858403610942565b5060019392505050565b60006103c0338484610ce2565b60055473ffffffffffffffffffffffffffffffffffffffff163314610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161055b565b73ffffffffffffffffffffffffffffffffffffffff8116610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161055b565b61093f816110b6565b50565b73ffffffffffffffffffffffffffffffffffffffff83166109e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff8216610a87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8216610b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c8a908490611341565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff8216610e28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ede576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610f22908490611329565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f8891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161055b565b80600260008282546110259190611329565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120805483929061105f908490611329565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b8181101561115a5785810183015185820160400152820161113e565b8181111561116c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146111c457600080fd5b919050565b600080604083850312156111dc57600080fd5b6111e5836111a0565b946020939093013593505050565b60008060006060848603121561120857600080fd5b611211846111a0565b925061121f602085016111a0565b9150604084013590509250925092565b60006020828403121561124157600080fd5b61124a826111a0565b9392505050565b6000806040838503121561126457600080fd5b61126d836111a0565b915061127b602084016111a0565b90509250929050565b600181811c9082168061129857607f821691505b602082108114156112d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156112ea57600080fd5b8151801515811461124a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561133c5761133c6112fa565b500190565b600082821015611353576113536112fa565b50039056fea26469706673582212203a6db30cd3c097921df4156794aa7973eb848711deeb2cffd7c54a9df1fdb0a564736f6c634300080a003360a060405234801561001057600080fd5b506040516106ca3803806106ca83398101604081905261002f9161006c565b60009190915560ff166080526001805460506001600160501b031991821681179092556004805490911690911790554260028190556003556100a2565b6000806040838503121561007f57600080fd5b82519150602083015160ff8116811461009757600080fd5b809150509250929050565b60805161060e6100bc600039600060d3015261060e6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80639a6fc8f511610081578063d62ada111161005b578063d62ada11146102dc578063f7a30806146102f4578063feaf968c1461030757600080fd5b80639a6fc8f5146101cd578063bd18ad531461023a578063cd653afc1461024d57600080fd5b806354fd4d50116100b257806354fd4d501461012d57806367e8d83d1461013c5780637284e4161461018e57600080fd5b8063313ce567146100ce5780633fd0875f1461010c575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6004546a0100000000000000000000900460ff166040516101039190610441565b60405160018152602001610103565b61018c61014a366004610482565b600480549115156c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b005b604080518082018252600c81527f7072696365206f7261636c6500000000000000000000000000000000000000006020820152905161010391906104ab565b6102036101db36600461053d565b60015460005460025460035460045469ffffffffffffffffffff948516941691939590929450565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610103565b61018c610248366004610558565b61030f565b61018c61025b366004610579565b6001805469ffffffffffffffffffff9586167fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090911617905560029290925560035560048054919092167fffffffffffffffffffffffffffffffffffffffff00ff00000000000000000000909116176b020000000000000000000000179055565b6102e461035f565b6040519015158152602001610103565b61018c6103023660046105bf565b600055565b610203610385565b600480548291907fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff166b01000000000000000000000083600281111561035757610357610412565b021790555050565b600454600090610380906b010000000000000000000000900460ff166103d6565b905090565b60008060008060006004600c9054906101000a900460ff16156103a757600080fd5b505060015460005460025460035460045469ffffffffffffffffffff9485169893975091955093509190911690565b600060028260028111156103ec576103ec610412565b14156103f757600080fd5b600182600281111561040b5761040b610412565b1492915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061047c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561049457600080fd5b813580151581146104a457600080fd5b9392505050565b600060208083528351808285015260005b818110156104d8578581018301518582016040015282016104bc565b818111156104ea576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803569ffffffffffffffffffff8116811461053857600080fd5b919050565b60006020828403121561054f57600080fd5b6104a48261051e565b60006020828403121561056a57600080fd5b8135600381106104a457600080fd5b6000806000806080858703121561058f57600080fd5b6105988561051e565b935060208501359250604085013591506105b46060860161051e565b905092959194509250565b6000602082840312156105d157600080fd5b503591905056fea264697066735822122014874f7a973b86501c4c1a8be32490fe902c8f088ee234d25f9b2497e19f9e5264736f6c634300080a003360806040523480156200001157600080fd5b50604080516020808201808452600080845284519283019094529281528151919290916200004291600391620000d1565b50805162000058906004906020840190620000d1565b505050620000756200006f6200007b60201b60201c565b6200007f565b620001b4565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000df9062000177565b90600052602060002090601f0160209004810192826200010357600085556200014e565b82601f106200011e57805160ff19168380011785556200014e565b828001600101855582156200014e579182015b828111156200014e57825182559160200191906001019062000131565b506200015c92915062000160565b5090565b5b808211156200015c576000815560010162000161565b600181811c908216806200018c57607f821691505b60208210811415620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b610e3b80620001c46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d7146101e7578063a9059cbb146101fa578063dd62ed3e1461020d578063f2fde38b1461025357600080fd5b8063715018a6146101ad5780638da5cb5b146101b757806395d89b41146101df57600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016457806370a082311461017757600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610266565b6040516101049190610c1b565b60405180910390f35b61012061011b366004610cb7565b6102f8565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610ce1565b610358565b60405160128152602001610104565b610120610172366004610cb7565b610443565b610134610185366004610d1d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101b561048c565b005b60055460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610104565b6100f7610519565b6101206101f5366004610cb7565b610528565b610120610208366004610cb7565b610600565b61013461021b366004610d3f565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101b5610261366004610d1d565b61060d565b60606003805461027590610d72565b80601f01602080910402602001604051908101604052809291908181526020018280546102a190610d72565b80156102ee5780601f106102c3576101008083540402835291602001916102ee565b820191906000526020600020905b8154815290600101906020018083116102d157829003601f168201915b5050505050905090565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548110801561033657508115155b1561034357506000610352565b61034e33848461073d565b5060015b92915050565b60006103658484846108f0565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610438853385840361073d565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161034e918590610487908690610dc6565b61073d565b60055473ffffffffffffffffffffffffffffffffffffffff16331461050d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b6105176000610ba4565b565b60606004805461027590610d72565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156105e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610422565b6105f6338585840361073d565b5060019392505050565b600061034e3384846108f0565b60055473ffffffffffffffffffffffffffffffffffffffff16331461068e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b73ffffffffffffffffffffffffffffffffffffffff8116610731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610422565b61073a81610ba4565b50565b73ffffffffffffffffffffffffffffffffffffffff83166107df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610422565b73ffffffffffffffffffffffffffffffffffffffff8216610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610422565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610422565b73ffffffffffffffffffffffffffffffffffffffff8216610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610422565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610422565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b30908490610dc6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9691815260200190565b60405180910390a350505050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610c4857858101830151858201604001528201610c2c565b81811115610c5a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cb257600080fd5b919050565b60008060408385031215610cca57600080fd5b610cd383610c8e565b946020939093013593505050565b600080600060608486031215610cf657600080fd5b610cff84610c8e565b9250610d0d60208501610c8e565b9150604084013590509250925092565b600060208284031215610d2f57600080fd5b610d3882610c8e565b9392505050565b60008060408385031215610d5257600080fd5b610d5b83610c8e565b9150610d6960208401610c8e565b90509250929050565b600181811c90821680610d8657607f821691505b60208210811415610dc0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610e00577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea264697066735822122046ab9b2ff246a21fe95c48d51fda8c67c187c16ac22893aa37d4d531643fa5e364736f6c634300080a00336101606040526000805462ff00001916620c00001790553480156200002357600080fd5b5060405162005c8438038062005c8483398101604081905262000046916200053a565b80806001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000086573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ac91906200053a565b6000805460ff191690556001600160a01b038116620000de57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014391906200053a565b6001600160a01b03166080816001600160a01b031681525050506000816001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c491906200053a565b6001600160a01b03831661010081905260e081905260408051632495a59960e01b81529051929350600092632495a599916004808201926020929091908290030181865afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024191906200053a565b6001600160a01b03811660c05290506200025b8162000475565b816001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c091906200053a565b6001600160a01b0316610120816001600160a01b031681525050816001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f91906200053a565b6001600160a01b0316610140816001600160a01b031681525050816001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000398573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003be91906200053a565b6001600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c91906200053a565b6001600160a01b031660a0525050600380546001600160a01b03191633179055506200058b9050565b6001600160a01b03811660009081526006602052604090205415620004ad57604051632e5a5c7760e01b815260040160405180910390fd5b61010060055410620004d257604051631cbbe18560e01b815260040160405180910390fd5b600580546001600160a01b0383166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290620005188362000561565b91905055505050565b6001600160a01b03811681146200053757600080fd5b50565b6000602082840312156200054d57600080fd5b81516200055a8162000521565b9392505050565b60006000198214156200058457634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051610140516155e1620006a3600039600081816109040152818161397e0152613a330152600081816105e001526138e601526000818161043e01528181610fda0152818161103e01528181612680015281816127db01528181612c2201528181612d0d01528181612dcf01528181612e8e0152613df6015260006106470152600081816106ca01528181610ea501528181610f3601528181610f8301528181610fb9015281816110c2015281816121bb01528181612cec015281816132800152818161374b01528181613818015261424d01526000818161095301528181611164015261264301526000818161084b01528181611307015261244c01526155e16000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c8063830aa745116101e9578063b5b12cd71161010f578063e1998cf9116100ad578063f9aa028a1161007c578063f9aa028a146109d4578063fdd57645146109f4578063fe47cde714610a2a578063ff68754314610a4a57600080fd5b8063e1998cf914610988578063e75538c71461099b578063e958b704146109ae578063f67c5bd0146109c157600080fd5b8063ced342b5116100e9578063ced342b514610926578063d48bfca71461093b578063db7ceb801461094e578063dc2b21c11461097557600080fd5b8063b5b12cd714610893578063b7ac50c6146108c1578063c5e10eef146108ff57600080fd5b80639537301811610187578063a366f49611610156578063a366f49614610833578063a50cf2c814610846578063a64bec9e1461086d578063a70bc5421461088057600080fd5b806395373018146107ab5780639af1d35a146107be5780639f5f86ae146108175780639fd12b771461082a57600080fd5b80638991b2f1116101c35780638991b2f1146107525780638fe3f93f14610772578063944ac59f1461078557806394cf073a1461079857600080fd5b8063830aa745146107125780638345f26e146107255780638456cb591461074a57600080fd5b80633f4ba83a116102ce57806355aabafd1161026c5780636ce4074a1161023b5780636ce4074a146106925780636e98e5e4146106b25780636f307dc3146106c557806378327438146106ec57600080fd5b806355aabafd14610630578063570a7af2146106425780635c975abb14610669578063654a9eda1461067f57600080fd5b80634f0e0ef3116102a85780634f0e0ef3146105db5780635063524a1461060257806351e3f1601461061557806354fd4d501461062857600080fd5b80633f4ba83a146105b7578063458936f5146105bf57806346fb371d146105c857600080fd5b806322995f5d1161033b57806329df0b931161031557806329df0b93146105355780632f7a1881146105485780633192195c1461056f5780633e8297ca1461059757600080fd5b806322995f5d146104d55780632362a2d8146104e85780632630c12f1461050957600080fd5b806311ca4fc21161037757806311ca4fc21461042657806316f0115b14610439578063172c48c7146104605780631b0c8234146104a257600080fd5b8063055ee9b51461039e5780630d8f9cee146103fe5780630d92632d14610413575b600080fd5b6103d46103ac366004614cee565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61041161040c366004614d0b565b610a80565b005b610411610421366004614d52565b610bad565b610411610434366004614d0b565b610bc1565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b61047361046e366004614dba565b610c99565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff9091166020830152016103f5565b6104b56104b0366004614de2565b610cb1565b6040805194855260208501939093529183015260608201526080016103f5565b6104116104e3366004614e1d565b610cd7565b6104fb6104f6366004614e6e565b610ce9565b6040519081526020016103f5565b6001546a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff166103d4565b610411610543366004614cee565b611241565b6000546103d4906301000000900473ffffffffffffffffffffffffffffffffffffffff1681565b61058261057d366004614cee565b6112a5565b604080519283526020830191909152016103f5565b6104fb6105a5366004614cee565b60096020526000908152604090205481565b6104116112d9565b6104fb60055481565b6104116105d6366004614ef0565b6113c7565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104b5610610366004614de2565b61161e565b610411610623366004614d0b565b611783565b6104fb600281565b6104fb61063e366004614dba565b5490565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1660405190151581526020016103f5565b61041161068d366004614f31565b611884565b6106a56106a0366004615050565b611d3c565b6040516103f5919061516b565b6104116106c0366004614d0b565b61200f565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6106ff6106fa366004614cee565b6121b7565b60405161ffff90911681526020016103f5565b610411610720366004614ef0565b612290565b6000546107389062010000900460ff1681565b60405160ff90911681526020016103f5565b61041161241e565b6104fb610760366004614cee565b60086020526000908152604090205481565b6103d461078036600461517e565b61250a565b6104116107933660046151b5565b612899565b6104fb6107a636600461521a565b6129c6565b6104116107b9366004614cee565b612fdb565b6001546040805161ffff808416825262010000840481166020830152640100000000840481169282019290925266010000000000008304821660608201526801000000000000000090920416608082015260a0016103f5565b610411610825366004614cee565b613106565b6104fb60075481565b610411610841366004614dba565b6131c6565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104fb61087b366004614dba565b61321c565b61041161088e36600461525c565b61322d565b6108a66108a1366004614cee565b6133b3565b604080519384526020840192909252908201526060016103f5565b6104116108cf36600461525c565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260096020526040902061ffff9091169055565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b61092e6133ce565b6040516103f59190615291565b610411610949366004614cee565b613490565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104116109833660046152eb565b6134ea565b610411610996366004614d0b565b613575565b6104736109a9366004614dba565b613738565b6103d46109bc366004614cee565b6137b0565b6104fb6109cf366004614cee565b613814565b6003546103d49073ffffffffffffffffffffffffffffffffffffffff1681565b6103d4610a02366004614cee565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600c546103d49073ffffffffffffffffffffffffffffffffffffffff1681565b6103d4610a58366004614cee565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015610ad257506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15610b09576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615610b4b576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610b81828261389c565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b610bba85858585856138dc565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c12576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff9384166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff90911617905560018054919092166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909116179055565b600080610ca86001841b613738565b91509150915091565b600080600080610cc38888888861161e565b93509350935093505b945094509450949050565b610ce384848484613b2d565b50505050565b6000805460ff1615610d5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff1615610d9e576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314610e23576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2e896137b0565b90506000806000806000610e41866112a5565b9094509050610e528c8e868461161e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152939b5093985090955093506000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f12919061530e565b9050610f1e8887615356565b610f29906001615356565b811115610f6957610f64877f00000000000000000000000000000000000000000000000000000000000000008d60018c8b870303038d6138dc565b610fb3565b610fb373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168d8960018a8d0186900301613c07565b611001877f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008960006138dc565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ca9505e490606401600060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b505050505050505060018411156110ea576110ea837f00000000000000000000000000000000000000000000000000000000000000008d8760006138dc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205486191661111f84898884613b2d565b6040517f89b77b3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f000000000000000000000000000000000000000000000000000000000000000016906389b77b3e90602401600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff909c16600090815260026020526040812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550929a9950505050505050505050565b6000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314611299576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112a281613c9c565b50565b6000806000806112b485613d0d565b91955092509050816112c6828661536e565b6112d091906153ab565b92505050915091565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906153e6565b6113bd576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c5613e8b565b565b60005460ff1615611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615611476576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416148015906114f757506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b801561151b5750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b8061153a575073ffffffffffffffffffffffffffffffffffffffff8316155b15611571576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61157a82613814565b6115b0576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115bb856137b0565b90506115cb838583856000613f6c565b6115ef576115de83858360006001613f6c565b506115ed838583856001613f6c565b505b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6001546000908190819081906127109061ffff1661163c8888615403565b611646919061536e565b61165091906153ab565b61165a9086615356565b935060018760028111156116705761167061541a565b141561170a576001546000906127109061169690640100000000900461ffff168b61536e565b6116a091906153ab565b600154909150612710906116be9062010000900461ffff168b61536e565b6116c891906153ab565b6116d29086615356565b9450848111156116e95760018582030393506116ed565b8094505b8581106116fe578585039250611704565b84860391505b50610ccc565b600287600281111561171e5761171e61541a565b141561177457600154600090612710906117489068010000000000000000900461ffff168b61536e565b61175291906153ab565b600154909150612710906116be906601000000000000900461ffff168b61536e565b92979196505091860393509150565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156117d557506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561180c576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161561184e576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610b81828261410d565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156118d657506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561190d576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161561194f576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055611985858461410d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908616906370a0823190602401602060405180830381865afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a19919061530e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918616906370a0823190602401602060405180830381865afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf919061530e565b60015490915060009081906a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16635cecbd0e611aed8689615403565b8a611af88988615403565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301528a1660648201526084016040805180830381865afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b989190615449565b9150915060018411611bae57611bae898961389c565b611bb7876121b7565b611bc59061ffff168261536e565b9050611bd0886121b7565b611bde9061ffff168361536e565b9150818110611bf957611bf089613c9c565b505050506115ef565b73ffffffffffffffffffffffffffffffffffffffff891660009081526009602052604081205483611c366b033b2e3c9fd0803ce80000008561536e565b611c4091906153ab565b611c56906b033b2e3c9fd0803ce8000000615403565b611c609190615356565b60015490915061271090611c8b906b033b2e3c9fd0803ce80000009062010000900461ffff1661536e565b611c9591906153ab565b8111611cd65773ffffffffffffffffffffffffffffffffffffffff8a166000908152600960205260409020819055611ccc8a613c9c565b50505050506115ef565b611cdf8a6141bd565b50505073ffffffffffffffffffffffffffffffffffffffff871660009081526009602052604090206001905550505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6060611d4a60005460ff1690565b15611db1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615611df3576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416141580611e68575073ffffffffffffffffffffffffffffffffffffffff8316155b15611ebe57600c5473ffffffffffffffffffffffffffffffffffffffff163314611ebe576040517f5d2e3a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ec9856137b0565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a36040517f1cff79cd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631cff79cd90611f79908790879060040161546d565b6000604051808303816000875af1158015611f98573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611fde919081019061549c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612060576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216156120d05773ffffffffffffffffffffffffffffffffffffffff8281166000908152600a6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b73ffffffffffffffffffffffffffffffffffffffff8116156121405773ffffffffffffffffffffffffffffffffffffffff8181166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169184169190911790555b73ffffffffffffffffffffffffffffffffffffffff811673cccccccccccccccccccccccccccccccccccccccc14156121b357600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561223b5750506001547e01000000000000000000000000000000000000000000000000000000000000900461ffff1690565b600061224683613814565b90508061227f576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61228881613738565b949350505050565b60005460ff16156122fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff161561233f576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146123c4576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123ce838361410d565b6123f073ffffffffffffffffffffffffffffffffffffffff8316858584613c07565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa1580156124a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cc91906153e6565b612502576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c561453b565b6000805460ff1615612578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff16156125ba576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461263f576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166321d18456857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270d919061530e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af1158015612768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278c919061550a565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80831660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b15801561282157600080fd5b505af1158015612835573d6000803e3d6000fd5b5050505061284383826145fb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206001905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146128ea576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff97851662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931694909816939093171794909416949094179190911716919091179055565b6000805460ff1615612a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615612a76576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314612afb576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000612b0987613d0d565b92509250925084612b2357612b1e8684615403565b612b2d565b612b2d8684615356565b935060008515612c855769021e19e0c9bab24000008510612b9657612b5683603689901c61536e565b612b64603686901c8461536e565b612b6e9190615356565b603686901c612b7d858561536e565b612b87919061536e565b612b9191906153ab565b612bd3565b612ba0838861536e565b612baa858461536e565b612bb49190615356565b85612bbf858561536e565b612bc9919061536e565b612bd391906153ab565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff8a811660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b50505050612f20565b60008484612c93858361536e565b612c9d91906153ab565b612ca79190615403565b60015490915060009061271090612cc29061ffff168461536e565b612ccc91906153ab565b905073ffffffffffffffffffffffffffffffffffffffff8a1663d1660f997f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612d37878f615356565b612d419190615356565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b158015612db557600080fd5b505af1158015612dc9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca9505e4838b612e159190615356565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526024810184905260006044820152606401600060405180830381600087803b158015612e7457600080fd5b505af1158015612e88573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1b919061530e565b925050505b6040517f16128211000000000000000000000000000000000000000000000000000000008152600481018690526024810182905273ffffffffffffffffffffffffffffffffffffffff891690631612821190604401600060405180830381600087803b158015612f8f57600080fd5b505af1158015612fa3573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055509498975050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561302d57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15613064576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156130a6576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556130db816141bd565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314613157576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff163314613217576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600755565b6000613227826146ce565b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff16331461327e576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613325576001805461ffff83167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790555050565b600061333083613814565b905080613369576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1675ffff000000000000000000000000000000000000000060a084901b161790555050565b60008060006133c184613d0d565b9250925092509193909250565b6005546060908067ffffffffffffffff8111156133ed576133ed614f8c565b604051908082528060200260200182016040528015613416578160200160208202803683370190505b50915060005b8181101561348b5761342d81610c99565b5083828151811061344057613440615527565b602002602001018173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050808061348390615556565b91505061341c565b505090565b60035473ffffffffffffffffffffffffffffffffffffffff1633146134e1576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112a281614739565b60035473ffffffffffffffffffffffffffffffffffffffff16331461353b576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460ff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60005460ff16156135e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615613624576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146136a9576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006136b4836137b0565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055905061370b82826145fb565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b60008082600114156137965750506001547f0000000000000000000000000000000000000000000000000000000000000000927e0100000000000000000000000000000000000000000000000000000000000090910461ffff169150565b50506000908152600460205260409020549060a082901c90565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260026020526040902054168061380f576040517fb5ba4c4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146138945773ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040902054613227565b600192915050565b60006138a782613814565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260086020526040902080549319939093169092555050565b80801561393457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613a96576040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b1580156139d157600080fd5b505af11580156139e5573d6000803e3d6000fd5b50506040517f5869dba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169250635869dba89150604401600060405180830381600087803b158015613a7957600080fd5b505af1158015613a8d573d6000803e3d6000fd5b50505050610bba565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b158015613b0e57600080fd5b505af1158015613b22573d6000803e3d6000fd5b505050505050505050565b60025b818111610bba5781811615613bff576000613b4a82613738565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918316906370a0823190602401602060405180830381865afa158015613bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be1919061530e565b90506002811115613bfc57613bfc87838860018503896138dc565b50505b60011b613b30565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610ce390859061482d565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205490613ccc82614939565b60005490915062010000900460ff16811115613d08576000613ced836146ce565b613cf8906001615356565b9050610ce3848484600085614972565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d81919061530e565b92508373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df2919061530e565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e83919061530e565b929491935050565b60005460ff16613ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610d53565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291517f1cff79cd000000000000000000000000000000000000000000000000000000008152600092861691631cff79cd9161402d918a9160040161546d565b6000604051808303816000875af192505050801561408b57506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052614088919081019061549c565b60015b614094576140c8565b805115806140b75750808060200190518101906140b191906153e6565b15156001145b156140c6576001915050614104565b505b8115614100576040517f76e3e29c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060005b95945050505050565b600061411882613814565b905080158061412a5750600754811615155b15614161576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020548116613d085773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805482179055505050565b60015473ffffffffffffffffffffffffffffffffffffffff8281166000908152600860205260408120546a010000000000000000000090930490911691908080614206866112a5565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526127108202600482015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166024830152919350908716915063f9a6503090604401602060405180830381865afa1580156142a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c5919061530e565b92506142d0846146ce565b6001019150506000806000805b848110156145085780156142f65760018186031b6142f9565b60015b9350868416156145005760008061430f86613738565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529294509092506000918416906370a0823190602401602060405180830381865afa158015614384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a8919061530e565b905060018111156144f3576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff841691908d169063f9a6503090604401602060405180830381865afa15801561442d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614451919061530e565b61445b919061536e565b6144659087615356565b95508886106144ee5760006144798b614939565b60005490915062010000900460ff168111156144b0576144ab8d8c83600189156144a557898e03614972565b8d614972565b6144df565b85156144df5773ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602052604090208b90555b50505050505050505050505050565b6144fc565b98861898600194505b5050505b6001016142dd565b506040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff16156145a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613f423390565b73ffffffffffffffffffffffffffffffffffffffff82161580614644575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615155b1561467b576040517f9e59609e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600081600114156146e157506000919050565b61010060015b60016146f38284615356565b901c92506001831b8481161580159061470e5750600185851c145b156147195750614732565b8481106147285783925061472c565b8391505b506146e7565b5050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090205415614796576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610100600554106147d3576040517f1cbbe18500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff83166000818152600660209081526040808320600190951b948590558483526004909152812091909155825491929061482483615556565b91905055505050565b600061488f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614ae09092919063ffffffff16565b805190915015613d0857808060200190518101906148ad91906153e6565b613d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d53565b60008060005b610100811015614732576001811b91508382161561495e578260010192505b83821061496a57614732565b60010161493f565b815b81811015614aad576001811b85811615614aa457600061499382613738565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529192506000918316906370a0823190602401602060405180830381865afa158015614a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a2a919061530e565b905060018111614aa157600054978318977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9097019660ff62010000909104168711614aa15750505073ffffffffffffffffffffffffffffffffffffffff8616600090815260086020526040902085905550610bba565b50505b50600101614974565b506040517f53275fcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060614aef8484600085614af9565b90505b9392505050565b606082471015614b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d53565b843b614bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d53565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051614c1c919061558f565b60006040518083038185875af1925050503d8060008114614c59576040519150601f19603f3d011682016040523d82523d6000602084013e614c5e565b606091505b5091509150614c6e828286614c79565b979650505050505050565b60608315614c88575081614af2565b825115614c985782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d53919061516b565b73ffffffffffffffffffffffffffffffffffffffff811681146112a257600080fd5b600060208284031215614d0057600080fd5b8135614af281614ccc565b60008060408385031215614d1e57600080fd5b8235614d2981614ccc565b91506020830135614d3981614ccc565b809150509250929050565b80151581146112a257600080fd5b600080600080600060a08688031215614d6a57600080fd5b8535614d7581614ccc565b94506020860135614d8581614ccc565b93506040860135614d9581614ccc565b9250606086013591506080860135614dac81614d44565b809150509295509295909350565b600060208284031215614dcc57600080fd5b5035919050565b80356003811061380f57600080fd5b60008060008060808587031215614df857600080fd5b84359350614e0860208601614dd3565b93969395505050506040820135916060013590565b60008060008060808587031215614e3357600080fd5b8435614e3e81614ccc565b93506020850135614e4e81614ccc565b92506040850135614e5e81614d44565b9396929550929360600135925050565b600080600080600080600060e0888a031215614e8957600080fd5b8735614e9481614ccc565b9650614ea260208901614dd3565b9550604088013594506060880135614eb981614ccc565b93506080880135614ec981614ccc565b925060a0880135915060c0880135614ee081614d44565b8091505092959891949750929550565b60008060008060808587031215614f0657600080fd5b8435614f1181614ccc565b93506020850135614f2181614ccc565b92506040850135614e5e81614ccc565b600080600080600060a08688031215614f4957600080fd5b8535614f5481614ccc565b94506020860135614f6481614ccc565b93506040860135614f7481614ccc565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561500257615002614f8c565b604052919050565b600067ffffffffffffffff82111561502457615024614f8c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561506557600080fd5b833561507081614ccc565b9250602084013561508081614ccc565b9150604084013567ffffffffffffffff81111561509c57600080fd5b8401601f810186136150ad57600080fd5b80356150c06150bb8261500a565b614fbb565b8181528760208385010111156150d557600080fd5b816020840160208301376000602083830101528093505050509250925092565b60005b838110156151105781810151838201526020016150f8565b83811115610ce35750506000910152565b600081518084526151398160208601602086016150f5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000614af26020830184615121565b6000806040838503121561519157600080fd5b823591506020830135614d3981614ccc565b803561ffff8116811461380f57600080fd5b600080600080600060a086880312156151cd57600080fd5b6151d6866151a3565b94506151e4602087016151a3565b93506151f2604087016151a3565b9250615200606087016151a3565b915061520e608087016151a3565b90509295509295909350565b60008060006060848603121561522f57600080fd5b833561523a81614ccc565b925060208401359150604084013561525181614d44565b809150509250925092565b6000806040838503121561526f57600080fd5b823561527a81614ccc565b9150615288602084016151a3565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156152df57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016152ad565b50909695505050505050565b6000602082840312156152fd57600080fd5b813560ff81168114614af257600080fd5b60006020828403121561532057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561536957615369615327565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a6576153a6615327565b500290565b6000826153e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156153f857600080fd5b8151614af281614d44565b60008282101561541557615415615327565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000806040838503121561545c57600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000614aef6040830184615121565b6000602082840312156154ae57600080fd5b815167ffffffffffffffff8111156154c557600080fd5b8201601f810184136154d657600080fd5b80516154e46150bb8261500a565b8181528560208385010111156154f957600080fd5b6141048260208301602086016150f5565b60006020828403121561551c57600080fd5b8151614af281614ccc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561558857615588615327565b5060010190565b600082516155a18184602087016150f5565b919091019291505056fea26469706673582212209a61b2b1203f2f5e63c5e3bdfef5184c4cbbb88b745f884592632c989b91297064736f6c634300080a003360806040523480156200001157600080fd5b50604080516020808201808452600080845284519283019094529281528151919290916200004291600391620000d1565b50805162000058906004906020840190620000d1565b505050620000756200006f6200007b60201b60201c565b6200007f565b620001b4565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000df9062000177565b90600052602060002090601f0160209004810192826200010357600085556200014e565b82601f106200011e57805160ff19168380011785556200014e565b828001600101855582156200014e579182015b828111156200014e57825182559160200191906001019062000131565b506200015c92915062000160565b5090565b5b808211156200015c576000815560010162000161565b600181811c908216806200018c57607f821691505b60208210811415620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b610eba80620001c46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d7146101e7578063a9059cbb146101fa578063dd62ed3e1461020d578063f2fde38b1461025357600080fd5b8063715018a6146101ad5780638da5cb5b146101b757806395d89b41146101df57600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016457806370a082311461017757600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610266565b6040516101049190610c9a565b60405180910390f35b61012061011b366004610d36565b6102f8565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610d60565b6103dc565b60405160128152602001610104565b610120610172366004610d36565b6104c2565b610134610185366004610d9c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101b561050b565b005b60055460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610104565b6100f7610598565b6101206101f5366004610d36565b6105a7565b610120610208366004610d36565b61067f565b61013461021b366004610dbe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101b5610261366004610d9c565b61068c565b60606003805461027590610df1565b80601f01602080910402602001604051908101604052809291908181526020018280546102a190610df1565b80156102ee5780601f106102c3576101008083540402835291602001916102ee565b820191906000526020600020905b8154815290600101906020018083116102d157829003601f168201915b5050505050905090565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548110801561033657508115155b156103c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54727920746f206368616e676520616c6c6f77616e63652066726f6d206e6f6e60448201527f2d7a65726f20746f206e6f6e2d7a65726f00000000000000000000000000000060648201526084015b60405180910390fd5b6103d33384846107bc565b50600192915050565b60006103e984848461096f565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338452909152902054828110156104aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016103bf565b6104b785338584036107bc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103d3918590610506908690610e45565b6107bc565b60055473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103bf565b6105966000610c23565b565b60606004805461027590610df1565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103bf565b61067533858584036107bc565b5060019392505050565b60006103d333848461096f565b60055473ffffffffffffffffffffffffffffffffffffffff16331461070d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103bf565b73ffffffffffffffffffffffffffffffffffffffff81166107b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103bf565b6107b981610c23565b50565b73ffffffffffffffffffffffffffffffffffffffff831661085e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103bf565b73ffffffffffffffffffffffffffffffffffffffff8216610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103bf565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103bf565b73ffffffffffffffffffffffffffffffffffffffff8216610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103bf565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610b6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103bf565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610baf908490610e45565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c1591815260200190565b60405180910390a350505050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610cc757858101830151858201604001528201610cab565b81811115610cd9576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d3157600080fd5b919050565b60008060408385031215610d4957600080fd5b610d5283610d0d565b946020939093013593505050565b600080600060608486031215610d7557600080fd5b610d7e84610d0d565b9250610d8c60208501610d0d565b9150604084013590509250925092565b600060208284031215610dae57600080fd5b610db782610d0d565b9392505050565b60008060408385031215610dd157600080fd5b610dda83610d0d565b9150610de860208401610d0d565b90509250929050565b600181811c90821680610e0557607f821691505b60208210811415610e3f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610e7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea2646970667358221220ee9246695e444dbf781646003ed01c8652e021f6ffa33f024a028b10aecc0fa164736f6c634300080a0033608060405234801561001057600080fd5b5061029a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634e417a981461003a575b610037600080366100e6565b50005b610042610058565b60405161004f919061019d565b60405180910390f35b6000805461006590610210565b80601f016020809104026020016040519081016040528092919081815260200182805461009190610210565b80156100de5780601f106100b3576101008083540402835291602001916100de565b820191906000526020600020905b8154815290600101906020018083116100c157829003601f168201915b505050505081565b8280546100f290610210565b90600052602060002090601f0160209004810192826101145760008555610178565b82601f1061014b578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555610178565b82800160010185558215610178579182015b8281111561017857823582559160200191906001019061015d565b50610184929150610188565b5090565b5b808211156101845760008155600101610189565b600060208083528351808285015260005b818110156101ca578581018301518582016040015282016101ae565b818111156101dc576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600181811c9082168061022457607f821691505b6020821081141561025e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220ce4d98ff6e78d6e572ead23f5f0316947ad3d447e60e1efdfc3a1485144c317a64736f6c634300080a003360806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d00011790553480156200003a57600080fd5b5060405162021314380380620213148339810160408190526200005d91620017f0565b82826040516200006d9062001790565b604051809103906000f0801580156200008a573d6000803e3d6000fd5b5050600180546001600160a01b0319166001600160a01b038416908117909155604080516325abd85f60e11b81529051634b57b0be916004808201926020929091908290030181865afa158015620000e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010c91906200184b565b73c4375b7de8af5a38a93548eb8453a498222c4ff26040516200012f906200179e565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000163573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b039290921691821790556040805163de28735960e01b8152905163de287359916004808201926020929091908290030181865afa158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e591906200184b565b604051634910832f60e01b8152600080516020620212f483398151915260048201526001600160a01b039190911690634910832f90602401600060405180830381600087803b1580156200023857600080fd5b505af11580156200024d573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b031663de2873596040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cb91906200184b565b60035460405163f2fde38b60e01b81526001600160a01b03918216600482015291169063f2fde38b90602401600060405180830381600087803b1580156200031257600080fd5b505af115801562000327573d6000803e3d6000fd5b505060035460015460408051636ca42ae360e01b815290516001600160a01b039384169550638874ff1f94509190921691636ca42ae39160048083019260009291908290030181865afa15801562000383573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003ad9190810190620018e6565b6040518263ffffffff1660e01b8152600401620003cb9190620019d7565b600060405180830381600087803b158015620003e657600080fd5b505af1158015620003fb573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047991906200184b565b600280546001600160a01b0319166001600160a01b039290921691821790556040805163120d150d60e31b81529051639068a868916004808201926020929091908290030181865afa158015620004d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fa91906200184b565b600480546001600160a01b0319166001600160a01b0392831617815560025460408051631f94a27560e31b81529051919093169263fca513a892818101926020929091908290030181865afa15801562000558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057e91906200184b565b600880546001600160a01b0319166001600160a01b0392831617905560025460408051630873769560e01b81529051919092169163087376959160048083019260209291908290030181865afa158015620005dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060391906200184b565b600780546001600160a01b0319166001600160a01b039283161790556002546040805163c513c9bb60e01b81529051919092169163c513c9bb9160048083019260209291908290030181865afa15801562000662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068891906200184b565b600680546001600160a01b0319166001600160a01b039283161790556001546040516367b4264560e01b81529116906367b4264590620006cd90849060040162001a6e565b602060405180830381865afa158015620006eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200071191906200184b565b600980546001600160a01b0319166001600160a01b0392831617905560035460408051630a55006360e21b815290519190921691632954018c9160048083019260209291908290030181865afa15801562000770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200079691906200184b565b6009546040516001600160a01b0390911690620007b390620017ad565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620007e7573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b039283169081179091556001549091169063eebab8ef908390620008206200113e565b6200082d90600a62001a9a565b6040518463ffffffff1660e01b81526004016200084d9392919062001abc565b600060405180830381600087803b1580156200086857600080fd5b505af11580156200087d573d6000803e3d6000fd5b505060065460055460405163d914cd4b60e01b81526001600160a01b0391821660048201529116925063d914cd4b9150602401600060405180830381600087803b158015620008cb57600080fd5b505af1158015620008e0573d6000803e3d6000fd5b505050505050806200093d576005546040516001600160a01b03909116906200090990620017bb565b6001600160a01b039091168152602001604051809103906000f08015801562000936573d6000803e3d6000fd5b5062000989565b6005546040516001600160a01b03909116906200095a90620017c9565b6001600160a01b039091168152602001604051809103906000f08015801562000987573d6000803e3d6000fd5b505b600b80546001600160a01b03929092166001600160a01b03199283168117909155600d80549092163317909155604051634fafc35760e11b8152600080516020620212f48339815191526004820152639f5f86ae90602401600060405180830381600087803b158015620009fc57600080fd5b505af115801562000a11573d6000803e3d6000fd5b50506000546040516303223eab60e11b8152600080516020620212f48339815191526004820152620100009091046001600160a01b031692506306447d569150602401600060405180830381600087803b15801562000a6f57600080fd5b505af115801562000a84573d6000803e3d6000fd5b5050600b54600d5460408051632630c12f60e01b815290516001600160a01b0393841695506311ca4fc2945092909116918491632630c12f9160048083019260209291908290030181865afa15801562000ae2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b0891906200184b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381600087803b15801562000b5157600080fd5b505af115801562000b66573d6000803e3d6000fd5b5050600b546001600160a01b0316915063944ac59f90506103e860c862000b926101f461271062001ae6565b606462000ba360c861271062001ae6565b60405160e087901b6001600160e01b031916815261ffff95861660048201529385166024850152918416604484015283166064830152909116608482015260a401600060405180830381600087803b15801562000bff57600080fd5b505af115801562000c14573d6000803e3d6000fd5b50505050600062000c2c6001620011fd60201b60201c565b905060005b815181101562000dbd5760095482516001600160a01b039091169083908390811062000c615762000c6162001b0c565b6020026020010151600001516001600160a01b03161462000da857600082828151811062000c935762000c9362001b0c565b602090810291909101015151600b5460405163d48bfca760e01b81526001600160a01b03808416600483015292935091169063d48bfca790602401600060405180830381600087803b15801562000ce957600080fd5b505af115801562000cfe573d6000803e3d6000fd5b5050600b5485516001600160a01b03909116925063a70bc5429150839086908690811062000d305762000d3062001b0c565b6020026020010151602001516040518363ffffffff1660e01b815260040162000d729291906001600160a01b0392909216825261ffff16602082015260400190565b600060405180830381600087803b15801562000d8d57600080fd5b505af115801562000da2573d6000803e3d6000fd5b50505050505b8062000db48162001b22565b91505062000c31565b50600060029054906101000a90046001600160a01b03166001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e0f57600080fd5b505af115801562000e24573d6000803e3d6000fd5b5050505062000ef1600b60009054906101000a90046001600160a01b03166001600160a01b031663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ea691906200184b565b60408051808201909152601781527f436f6e666967757261746f72207761736e2774207365740000000000000000006020820152600080516020620212f483398151915290620014e7565b600654600b5460405163e26b2f6360e01b81526001600160a01b03918216600482015291169063e26b2f6390602401600060405180830381600087803b15801562000f3b57600080fd5b505af115801562000f50573d6000803e3d6000fd5b5050600154600b5460405163447bbb5160e11b81526001600160a01b0392831694506388f776a2935062000fa292889273f39fd6e51aad88f6f4ce6ab8827279cfffb922669291169060040162001b40565b600060405180830381600087803b15801562000fbd57600080fd5b505af115801562000fd2573d6000803e3d6000fd5b5050600154600b5460405163447bbb5160e11b81526001600160a01b0392831694506388f776a2935062001024928892733c44cdddb6a900fa2b585dd299e03d12fa4293bc9291169060040162001b40565b600060405180830381600087803b1580156200103f57600080fd5b505af115801562001054573d6000803e3d6000fd5b505060025460405163f2fde38b60e01b8152600080516020620212f483398151915260048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b158015620010ad57600080fd5b505af1158015620010c2573d6000803e3d6000fd5b505060075460405163f2fde38b60e01b8152600080516020620212f483398151915260048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b1580156200111b57600080fd5b505af115801562001130573d6000803e3d6000fd5b505050505050505062001c47565b600180546040516367b4264560e01b81526000926001600160a01b03909216916367b426459162001173919060040162001a6e565b602060405180830381865afa15801562001191573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011b791906200184b565b6009546001600160a01b03908116911614620011e757620011e2670de0b6b3a764000060c862001a9a565b905090565b620011e2670de0b6b3a7640000614e2062001a9a565b6040805160c08101825260026080820190815261232860a08301528152815180830183526005815261226060208281019190915282015281518083018352606092600092919082019080600387600a8111156200125e576200125e62001a35565b146200126c5760036200126f565b60015b600a81111562001283576200128362001a35565b815261206c6020918201529082526040805180820190915260048152611c84818301529101529050612454600a60008582811115620012c657620012c662001a35565b600a811115620012da57620012da62001a35565b815260208101919091526040908101600020805461ffff9390931661ffff19909316929092179091558051600480825260a0820190925281816020015b60408051808201909152600080825260208201528152602001906001900390816200131757905050925060005b81811015620014df5782816004811062001362576200136262001b0c565b602002015160200151600a600085846004811062001384576200138462001b0c565b602002015151600a8111156200139e576200139e62001a35565b600a811115620013b257620013b262001a35565b815260208101919091526040908101600020805461ffff191661ffff9390931692909217909155805180820190915260015481906001600160a01b03166367b4264586856004811062001409576200140962001b0c565b6020020151516040516001600160e01b031960e084901b16815262001432919060040162001a6e565b602060405180830381865afa15801562001450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147691906200184b565b6001600160a01b0316815260200184836004811062001499576200149962001b0c565b60200201516020015161ffff16815250848281518110620014be57620014be62001b0c565b60200260200101819052508080620014d69062001b22565b91505062001344565b505050919050565b816001600160a01b0316836001600160a01b03161462001546577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001532919062001ba5565b60405180910390a16200154683836200154b565b505050565b806001600160a01b0316826001600160a01b03161462001679577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620015d39060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a160408051818152600a81830152690808115e1c1958dd195960b21b60608201526001600160a01b03831660208201529051600080516020620212d48339815191529181900360800190a160408051818152600a8183015269080808081058dd1d585b60b21b60608201526001600160a01b03841660208201529051600080516020620212d48339815191529181900360800190a1620016796200167d565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200177f5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200171a929160200162001bf6565b60408051601f1981840301815290829052620017369162001c29565b6000604051808303816000865af19150503d806000811462001775576040519150601f19603f3d011682016040523d82523d6000602084013e6200177a565b606091505b505050505b6000805461ff001916610100179055565b6105e680620035d683390190565b620111058062003bbc83390190565b6110a78062014cc183390190565b6158e88062015d6883390190565b615c84806201b65083390190565b6001600160a01b0381168114620017ed57600080fd5b50565b6000806000606084860312156200180657600080fd5b83516200181381620017d7565b6020850151909350600b81106200182957600080fd5b604085015190925080151581146200184057600080fd5b809150509250925092565b6000602082840312156200185e57600080fd5b81516200186b81620017d7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620018ad57620018ad62001872565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620018de57620018de62001872565b604052919050565b60006020808385031215620018fa57600080fd5b82516001600160401b03808211156200191257600080fd5b818501915085601f8301126200192757600080fd5b8151818111156200193c576200193c62001872565b6200194c848260051b01620018b3565b818152848101925060069190911b8301840190878211156200196d57600080fd5b928401925b81841015620019cc57604084890312156200198d5760008081fd5b6200199762001888565b8451620019a481620017d7565b815284860151620019b581620017d7565b818701528352604093909301929184019162001972565b979650505050505050565b602080825282518282018190526000919060409081850190868401855b8281101562001a2857815180516001600160a01b0390811686529087015116868501529284019290850190600101620019f4565b5091979650505050505050565b634e487b7160e01b600052602160045260246000fd5b600b811062001a6a57634e487b7160e01b600052602160045260246000fd5b9052565b6020810162001a7e828462001a4b565b92915050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562001ab75762001ab762001a84565b500290565b6060810162001acc828662001a4b565b6001600160a01b0393909316602082015260400152919050565b600061ffff8381169083168181101562001b045762001b0462001a84565b039392505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141562001b395762001b3962001a84565b5060010190565b6060810162001b50828662001a4b565b6001600160a01b03938416602083015291909216604090920191909152919050565b60005b8381101562001b8f57818101518382015260200162001b75565b8381111562001b9f576000848401525b50505050565b60408152600560408201526422b93937b960d91b6060820152608060208201526000825180608084015262001be28160a085016020870162001b72565b601f01601f19169190910160a00192915050565b6001600160e01b031983168152815160009062001c1b81600485016020870162001b72565b919091016004019392505050565b6000825162001c3d81846020870162001b72565b9190910192915050565b61197f8062001c576000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80636b70b04c116100b2578063ba414fa611610081578063d46b933011610066578063d46b933014610350578063de28735914610370578063fa7626d41461039057600080fd5b8063ba414fa614610318578063c12c21c01461033057600080fd5b80636b70b04c146102b05780636f307dc3146102d05780637d6bc094146102f05780639dd55b451461030357600080fd5b8063406c8e2f116101095780635e813a8b116100ee5780635e813a8b1461025a5780635f7c9bd01461027a57806362eb33e31461029057600080fd5b8063406c8e2f146101fc5780635aba4b241461021c57600080fd5b80630c75f8061461013b5780630e42bc5d146101775780632630c12f146101975780632954018c146101dc575b600080fd5b61015f610149366004610f08565b600a6020526000908152604090205461ffff1681565b60405161ffff90911681526020015b60405180910390f35b61018a610185366004610f08565b61039d565b60405161016e9190610f30565b6008546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016e565b6002546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6001546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6102246106c6565b6040805194855260208501939093529183015273ffffffffffffffffffffffffffffffffffffffff16606082015260800161016e565b6004546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6102826106e5565b60405190815260200161016e565b6006546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6009546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6102246102fe366004610f99565b6107cd565b610316610311366004610fd7565b610c2f565b005b610320610d9b565b604051901515815260200161016e565b600b546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6003546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6007546101b79073ffffffffffffffffffffffffffffffffffffffff1681565b6000546103209060ff1681565b6040805160c08101825260026080820190815261232860a08301528152815180830183526005815261226060208281019190915282015281518083018352606092600092919082019080600387600a8111156103fb576103fb611003565b1461040757600361040a565b60015b600a81111561041b5761041b611003565b815261206c6020918201529082526040805180820190915260048152611c84818301529101529050612454600a6000858281111561045b5761045b611003565b600a81111561046c5761046c611003565b815260208101919091526040908101600020805461ffff939093167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092179091558051600480825260a0820190925281816020015b60408051808201909152600080825260208201528152602001906001900390816104c657905050925060005b818110156106be5782816004811061050c5761050c611032565b602002015160200151600a600085846004811061052b5761052b611032565b602002015151600a81111561054257610542611003565b600a81111561055357610553611003565b81526020810191909152604090810160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff93909316929092179091558051808201909152600154819073ffffffffffffffffffffffffffffffffffffffff166367b426458685600481106105d1576105d1611032565b6020020151516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526106109190600401611061565b602060405180830381865afa15801561062d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065191906110a2565b73ffffffffffffffffffffffffffffffffffffffff16815260200184836004811061067e5761067e611032565b60200201516020015161ffff168152508482815181106106a0576106a0611032565b602002602001018190525080806106b6906110ee565b9150506104f2565b505050919050565b6000806000806106d76102fe6106e5565b935093509350935090919293565b600180546040517f67b4264500000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff909216916367b426459161073e9190600401611061565b602060405180830381865afa15801561075b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f91906110a2565b60095473ffffffffffffffffffffffffffffffffffffffff9081169116146107b9576107b4670de0b6b3a764000060c8611127565b905090565b6107b4670de0b6b3a7640000614e20611127565b600080546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015282918291829162010000900473ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b15801561085757600080fd5b505af115801561086b573d6000803e3d6000fd5b5050600b5460095473ffffffffffffffffffffffffffffffffffffffff918216935063a70bc5429250166101f46108a560c8612710611164565b6108af9190611164565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015261ffff166024820152604401600060405180830381600087803b15801561091e57600080fd5b505af1158015610932573d6000803e3d6000fd5b50506005546040517f96df5dc00000000000000000000000000000000000000000000000000000000081526b033b2e3c9fd0803ce800000060048201819052899850965073ffffffffffffffffffffffffffffffffffffffff90911692506396df5dc09150602401600060405180830381600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b5050600054600d546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526201000090920416925063ca669fa79150602401600060405180830381600087803b158015610a4157600080fd5b505af1158015610a55573d6000803e3d6000fd5b5050600b546040517f8fe3f93f0000000000000000000000000000000000000000000000000000000081526004810188905273f39fd6e51aad88f6f4ce6ab8827279cfffb92266602482015273ffffffffffffffffffffffffffffffffffffffff9091169250638fe3f93f91506044016020604051808303816000875af1158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0891906110a2565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff16631f7b4f30610b3a436001611187565b6040518263ffffffff1660e01b8152600401610b5891815260200190565b600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b50505050600a83600c610b999190611127565b610ba3919061119f565b6005546040517f96df5dc00000000000000000000000000000000000000000000000000000000081526004810183905291935073ffffffffffffffffffffffffffffffffffffffff16906396df5dc090602401600060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b505050509193509193565b6000816008604051610c4090610efb565b91825260ff166020820152604001604051809103906000f080158015610c6a573d6000803e3d6000fd5b506000546040517fca669fa70000000000000000000000000000000000000000000000000000000081527370997970c51812dc3a010c7d01b50e0d17dc79c8600482015291925062010000900473ffffffffffffffffffffffffffffffffffffffff169063ca669fa790602401600060405180830381600087803b158015610cf157600080fd5b505af1158015610d05573d6000803e3d6000fd5b50506008546040517fe8a97a3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301528581166024830152909116925063e8a97a3e9150604401600060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b50505050505050565b60008054610100900460ff1615610dbb5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610ef65760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610e60917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611215565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e9891611251565b6000604051808303816000865af19150503d8060008114610ed5576040519150601f19603f3d011682016040523d82523d6000602084013e610eda565b606091505b5091505080806020019051810190610ef2919061125d565b9150505b919050565b6106ca8061128083390190565b600060208284031215610f1a57600080fd5b8135600b8110610f2957600080fd5b9392505050565b602080825282518282018190526000919060409081850190868401855b82811015610f8c578151805173ffffffffffffffffffffffffffffffffffffffff16855286015161ffff16868501529284019290850190600101610f4d565b5091979650505050505050565b600060208284031215610fab57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610fd457600080fd5b50565b60008060408385031215610fea57600080fd5b8235610ff581610fb2565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60208101600b831061109c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000602082840312156110b457600080fd5b8151610f2981610fb2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611120576111206110bf565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561115f5761115f6110bf565b500290565b600061ffff8381169083168181101561117f5761117f6110bf565b039392505050565b6000821982111561119a5761119a6110bf565b500190565b6000826111d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000815160005b818110156111fb57602081850181015186830152016111e1565b8181111561120a576000828601525b509290920192915050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061124960048301846111da565b949350505050565b6000610f2982846111da565b60006020828403121561126f57600080fd5b81518015158114610f2957600080fdfe60a060405234801561001057600080fd5b506040516106ca3803806106ca83398101604081905261002f9161006c565b60009190915560ff166080526001805460506001600160501b031991821681179092556004805490911690911790554260028190556003556100a2565b6000806040838503121561007f57600080fd5b82519150602083015160ff8116811461009757600080fd5b809150509250929050565b60805161060e6100bc600039600060d3015261060e6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80639a6fc8f511610081578063d62ada111161005b578063d62ada11146102dc578063f7a30806146102f4578063feaf968c1461030757600080fd5b80639a6fc8f5146101cd578063bd18ad531461023a578063cd653afc1461024d57600080fd5b806354fd4d50116100b257806354fd4d501461012d57806367e8d83d1461013c5780637284e4161461018e57600080fd5b8063313ce567146100ce5780633fd0875f1461010c575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6004546a0100000000000000000000900460ff166040516101039190610441565b60405160018152602001610103565b61018c61014a366004610482565b600480549115156c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b005b604080518082018252600c81527f7072696365206f7261636c6500000000000000000000000000000000000000006020820152905161010391906104ab565b6102036101db36600461053d565b60015460005460025460035460045469ffffffffffffffffffff948516941691939590929450565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610103565b61018c610248366004610558565b61030f565b61018c61025b366004610579565b6001805469ffffffffffffffffffff9586167fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090911617905560029290925560035560048054919092167fffffffffffffffffffffffffffffffffffffffff00ff00000000000000000000909116176b020000000000000000000000179055565b6102e461035f565b6040519015158152602001610103565b61018c6103023660046105bf565b600055565b610203610385565b600480548291907fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff166b01000000000000000000000083600281111561035757610357610412565b021790555050565b600454600090610380906b010000000000000000000000900460ff166103d6565b905090565b60008060008060006004600c9054906101000a900460ff16156103a757600080fd5b505060015460005460025460035460045469ffffffffffffffffffff9485169893975091955093509190911690565b600060028260028111156103ec576103ec610412565b14156103f757600080fd5b600182600281111561040b5761040b610412565b1492915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061047c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561049457600080fd5b813580151581146104a457600080fd5b9392505050565b600060208083528351808285015260005b818110156104d8578581018301518582016040015282016104bc565b818111156104ea576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803569ffffffffffffffffffff8116811461053857600080fd5b919050565b60006020828403121561054f57600080fd5b6104a48261051e565b60006020828403121561056a57600080fd5b8135600381106104a457600080fd5b6000806000806080858703121561058f57600080fd5b6105988561051e565b935060208501359250604085013591506105b46060860161051e565b905092959194509250565b6000602082840312156105d157600080fd5b503591905056fea264697066735822122014874f7a973b86501c4c1a8be32490fe902c8f088ee234d25f9b2497e19f9e5264736f6c634300080a0033a2646970667358221220db8bf1b20c3ed39fd8eb2d77267ba8a606c43060a1321f93c24a8edb8117a9fb64736f6c634300080a003360806040526000805461ff01600160b01b031916757109709ecfa91a80626ff3989d68f67f5b1dd12d000117905534801561003957600080fd5b50600054604080516318caf8e360e31b815273f39fd6e51aad88f6f4ce6ab8827279cfffb9226660048083019190915260248201929092526044810191909152632aa9a2a960e11b6064820152620100009091046001600160a01b03169063c657c71890608401600060405180830381600087803b1580156100ba57600080fd5b505af11580156100ce573d6000803e3d6000fd5b5050600054604080516318caf8e360e31b81527390f79bf6eb2c4f870365e785982e1f101e93b90660048201526024810191909152600660448201526511949251539160d21b6064820152620100009091046001600160a01b0316925063c657c7189150608401600060405180830381600087803b15801561014f57600080fd5b505af1158015610163573d6000803e3d6000fd5b5050600054604080516318caf8e360e31b8152733c44cdddb6a900fa2b585dd299e03d12fa4293bc60048201526024810191909152600a6044820152692624a8aaa4a220aa27a960b11b6064820152620100009091046001600160a01b0316925063c657c7189150608401600060405180830381600087803b1580156101e857600080fd5b505af11580156101fc573d6000803e3d6000fd5b5050600054604080516318caf8e360e31b815273c4375b7de8af5a38a93548eb8453a498222c4ff260048201526024810191909152600c60448201526b44554d425f4144445245535360a01b6064820152620100009091046001600160a01b0316925063c657c7189150608401600060405180830381600087803b15801561028357600080fd5b505af1158015610297573d6000803e3d6000fd5b5050600054604080516318caf8e360e31b8152739965507d1a55bcc2695c58ba16fb37d819b0a4dc60048201526024810191909152600760448201526620a220a82a22a960c91b6064820152620100009091046001600160a01b0316925063c657c7189150608401600060405180830381600087803b15801561031957600080fd5b505af115801561032d573d6000803e3d6000fd5b505050506102a6806103406000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101bf5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101ff565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526101619161023b565b6000604051808303816000865af19150503d806000811461019e576040519150601f19603f3d011682016040523d82523d6000602084013e6101a3565b606091505b50915050808060200190518101906101bb919061024e565b9150505b919050565b6000815160005b818110156101e557602081850181015186830152016101cb565b818111156101f4576000828601525b509290920192915050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061023360048301846101c4565b949350505050565b600061024782846101c4565b9392505050565b60006020828403121561026057600080fd5b8151801515811461024757600080fdfea2646970667358221220293f55a0ef7b60c31a89dbc50e3339c80a8fdb1f9567614b200e97598226671f64736f6c634300080a003360806040523480156200001157600080fd5b506040516201110538038062011105833981016040819052620000349162000811565b6200003f3362000734565b6040516200004d9062000784565b604051809103906000f0801580156200006a573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039283169081179091556040516310dc138160e31b81529184166004830152906386e09c0890602401600060405180830381600087803b158015620000c457600080fd5b505af1158015620000d9573d6000803e3d6000fd5b50506001546040516301ed651160e41b81526001600160a01b0385811660048301529091169250631ed651109150602401600060405180830381600087803b1580156200012557600080fd5b505af11580156200013a573d6000803e3d6000fd5b505050506040516200014c9062000792565b604051809103906000f08015801562000169573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b039283169081179091556001546040516376aad60560e01b81526004810192909252909116906376aad60590602401600060405180830381600087803b158015620001c957600080fd5b505af1158015620001de573d6000803e3d6000fd5b5050600154604051600093506001600160a01b0390911691506200020290620007a0565b6001600160a01b039091168152602001604051809103906000f0801580156200022f573d6000803e3d6000fd5b5060015460405163338f12b960e21b81526001600160a01b03808416600483015292935091169063ce3c4ae490602401600060405180830381600087803b1580156200027a57600080fd5b505af11580156200028f573d6000803e3d6000fd5b5050600154604051600093506001600160a01b039091169150620002b390620007ae565b6001600160a01b039091168152602001604051809103906000f080158015620002e0573d6000803e3d6000fd5b5060015460405163c5120b3960e01b81526001600160a01b03808416600483015292935091169063c5120b3990602401600060405180830381600087803b1580156200032b57600080fd5b505af115801562000340573d6000803e3d6000fd5b5050600154604051606093506001600160a01b03909116915082906200036690620007bc565b6200037392919062000849565b604051809103906000f08015801562000390573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831690811790915560015460405163530e784f60e01b815260048101929092529091169063530e784f90602401600060405180830381600087803b158015620003f057600080fd5b505af115801562000405573d6000803e3d6000fd5b5050600154604051600093506001600160a01b0390911691506200042990620007ca565b6001600160a01b039091168152602001604051809103906000f08015801562000456573d6000803e3d6000fd5b506001546040516356ee0d3b60e11b81526001600160a01b03808416600483015292935091169063addc1a7690602401600060405180830381600087803b158015620004a157600080fd5b505af1158015620004b6573d6000803e3d6000fd5b5050600154604051600093506001600160a01b039091169150620004da90620007d8565b6001600160a01b039091168152602001604051809103906000f08015801562000507573d6000803e3d6000fd5b506001546040516321da583760e01b81526001600160a01b0380841660048301529293509116906321da583790602401600060405180830381600087803b1580156200055257600080fd5b505af115801562000567573d6000803e3d6000fd5b505050506000306040516200057c90620007e6565b6001600160a01b039091168152602001604051809103906000f080158015620005a9573d6000803e3d6000fd5b50600154604051631795d5b360e31b81526001600160a01b03808416600483015292935091169063bcaead9890602401600060405180830381600087803b158015620005f457600080fd5b505af115801562000609573d6000803e3d6000fd5b505060405163f2fde38b60e01b81523360048201526001600160a01b038416925063f2fde38b9150602401600060405180830381600087803b1580156200064f57600080fd5b505af115801562000664573d6000803e3d6000fd5b505060015460405163f2fde38b60e01b81523360048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b158015620006ae57600080fd5b505af1158015620006c3573d6000803e3d6000fd5b505060025460405163f2fde38b60e01b81523360048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b1580156200070d57600080fd5b505af115801562000722573d6000803e3d6000fd5b505050505050505050505050620008b2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fcd80620010dd83390190565b61098c80620020aa83390190565b610f508062002a3683390190565b614da6806200398683390190565b611b45806200872c83390190565b612ced806200a27183390190565b611627806200cf5e83390190565b612b80806200e58583390190565b80516001600160a01b03811681146200080c57600080fd5b919050565b600080604083850312156200082557600080fd5b6200083083620007f4565b91506200084060208401620007f4565b90509250929050565b6001600160a01b0383811682526040602080840182905284518483018190526000938683019290916060870190865b81811015620008a3578551805186168452840151851684840152948301949186019160010162000878565b50909998505050505050505050565b61081b80620008c26000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638874ff1f1161005b5780638874ff1f146100f55780638da5cb5b14610108578063de28735914610126578063f2fde38b1461014657600080fd5b80632630c12f146100825780632954018c146100cb578063715018a6146100eb575b600080fd5b6003546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6001546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b6100f3610159565b005b6100f3610103366004610658565b6101eb565b60005473ffffffffffffffffffffffffffffffffffffffff166100a2565b6002546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b6100f3610154366004610734565b6103e3565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6101e96000610513565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461026c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d6565b60005b815181101561035c57600354825173ffffffffffffffffffffffffffffffffffffffff9091169063e8a97a3e908490849081106102ae576102ae610756565b6020026020010151600001518484815181106102cc576102cc610756565b6020026020010151602001516040518363ffffffff1660e01b815260040161031792919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600060405180830381600087803b15801561033157600080fd5b505af1158015610345573d6000803e3d6000fd5b50505050808061035490610785565b91505061026f565b506002546040517ff2fde38b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091169063f2fde38b90602401600060405180830381600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d6565b73ffffffffffffffffffffffffffffffffffffffff8116610507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d6565b61051081610513565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156105da576105da610588565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561062757610627610588565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461065357600080fd5b919050565b6000602080838503121561066b57600080fd5b823567ffffffffffffffff8082111561068357600080fd5b818501915085601f83011261069757600080fd5b8135818111156106a9576106a9610588565b6106b7848260051b016105e0565b818152848101925060069190911b8301840190878211156106d757600080fd5b928401925b8184101561072957604084890312156106f55760008081fd5b6106fd6105b7565b6107068561062f565b815261071386860161062f565b81870152835260409390930192918401916106dc565b979650505050505050565b60006020828403121561074657600080fd5b61074f8261062f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156107de577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212205ee75e57bb635aa49a1758f4ab0b04182a73115bff08f420c56a8ddb433c029364736f6c634300080a0033608060405234801561001057600080fd5b5061001a3361005f565b60405130906f20a2222922a9a9afa82927ab24a222a960811b907fb37614c7d254ea8d16eb81fa11dddaeb266aa8ba4917980859c7740aff30c69190600090a36100af565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610f0f806100be6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806377532ed9116100e3578063bcaead981161008c578063ce3c4ae411610066578063ce3c4ae414610308578063f2fde38b1461031b578063fca513a81461032e57600080fd5b8063bcaead98146102da578063c5120b39146102ed578063c513c9bb1461030057600080fd5b80639068a868116100bd5780639068a868146102b7578063addc1a76146102bf578063affd9243146102d257600080fd5b806377532ed91461027e57806386e09c08146102865780638da5cb5b1461029957600080fd5b80634c252f9111610145578063699f200f1161011f578063699f200f1461022d578063715018a61461026357806376aad6051461026b57600080fd5b80634c252f91146101fc578063530e784f1461020457806354fd4d501461021757600080fd5b80631ed65110116101765780631ed65110146101cc57806321da5837146101e157806326c74fc3146101f457600080fd5b8063060678c21461019257806308737695146101c4575b600080fd5b61019a610336565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61019a610366565b6101df6101da366004610e10565b610391565b005b6101df6101ef366004610e10565b610444565b61019a6104ef565b61019a61051a565b6101df610212366004610e10565b610545565b61021f600281565b6040519081526020016101bb565b61019a61023b366004610e4d565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101df6105f0565b6101df610279366004610e10565b61067d565b61019a610728565b6101df610294366004610e10565b610753565b60005473ffffffffffffffffffffffffffffffffffffffff1661019a565b61019a6107fe565b6101df6102cd366004610e10565b610829565b61019a6108d4565b6101df6102e8366004610e10565b6108ff565b6101df6102fb366004610e10565b6109aa565b61019a610a55565b6101df610316366004610e10565b610a80565b6101df610329366004610e10565b610b2b565b61019a610c58565b60006103617f444154415f434f4d50524553534f520000000000000000000000000000000000610c7f565b905090565b60006103617f41434c0000000000000000000000000000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6104417f54524541535552595f434f4e545241435400000000000000000000000000000082610d1d565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f574554485f47415445574159000000000000000000000000000000000000000082610d1d565b60006103617f54524541535552595f434f4e5452414354000000000000000000000000000000610c7f565b60006103617f574554485f544f4b454e00000000000000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f50524943455f4f5241434c45000000000000000000000000000000000000000082610d1d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b61067b6000610d9b565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f41434c000000000000000000000000000000000000000000000000000000000082610d1d565b60006103617f574554485f474154455741590000000000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f574554485f544f4b454e0000000000000000000000000000000000000000000082610d1d565b60006103617f4143434f554e545f464143544f52590000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f4143434f554e545f464143544f5259000000000000000000000000000000000082610d1d565b60006103617f474541525f544f4b454e00000000000000000000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f474541525f544f4b454e0000000000000000000000000000000000000000000082610d1d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f444154415f434f4d50524553534f52000000000000000000000000000000000082610d1d565b60006103617f434f4e5452414354535f52454749535445520000000000000000000000000000610c7f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b6104417f434f4e5452414354535f5245474953544552000000000000000000000000000082610d1d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040e565b73ffffffffffffffffffffffffffffffffffffffff8116610c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161040e565b61044181610d9b565b60006103617f50524943455f4f5241434c4500000000000000000000000000000000000000005b6000818152600160209081526040808320548151808301909252600382527f41503100000000000000000000000000000000000000000000000000000000009282019290925273ffffffffffffffffffffffffffffffffffffffff9091169081610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040e9190610e66565b5092915050565b60008281526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091559051909184917fb37614c7d254ea8d16eb81fa11dddaeb266aa8ba4917980859c7740aff30c6919190a35050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610e2257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610e4657600080fd5b9392505050565b600060208284031215610e5f57600080fd5b5035919050565b600060208083528351808285015260005b81811015610e9357858101830151858201604001528201610e77565b81811115610ea5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea264697066735822122083c228af017c6f5cf8c395cdf7a53276ff56fdd4f4313c39f680ab73bd75417364736f6c634300080a0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61090e8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063732818191161008c578063adce758d11610066578063adce758d14610215578063ba306df114610228578063d4eb5db01461023b578063f2fde38b1461027457600080fd5b806373281819146101b7578063819ad68e146101da5780638da5cb5b146101ed57600080fd5b806354fd4d50116100bd57806354fd4d501461016a5780635f259aba14610180578063715018a6146101af57600080fd5b806335914829146100e45780633a41ec641461011c5780634910832f14610155575b600080fd5b6101076100f236600461089b565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61010761012a36600461089b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b61016861016336600461089b565b610287565b005b610172600181565b604051908152602001610113565b61010761018e36600461089b565b60005473ffffffffffffffffffffffffffffffffffffffff91821691161490565b610168610387565b6101076101c536600461089b565b60026020526000908152604090205460ff1681565b6101686101e836600461089b565b610414565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61016861022336600461089b565b61050c565b61016861023636600461089b565b610601565b61010761024936600461089b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b61016861028236600461089b565b6106f6565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909217909155517fae26b1cfe9454ba87274a4e8330b6654684362d0f3d7bbd17f7449a1d38387c69190a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b6104126000610826565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fd400da6c0c0a894dacc0981730b88af0545d00272ee8fff1437bf560ff245fc49190a250565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f1998397e7203f7baca9d6f41b9e4da6e768daac5caad4234fb9bf5869d2715459190a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f28b01395b7e25d20552a0c8dc8ecd3b1d4abc986f14dad7885fd45b6fd73c8d99190a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610304565b73ffffffffffffffffffffffffffffffffffffffff811661081a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610304565b61082381610826565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156108ad57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108d157600080fd5b939250505056fea26469706673582212204712efbfe997070def77285a5b8753bc882b62da2133ce1937ad26cd2b48e49864736f6c634300080a003360a060405234801561001057600080fd5b50604051610f50380380610f5083398101604081905261002f916100d7565b6000805460ff19169055806001600160a01b03811661006157604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa15801561009f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c391906100d7565b6001600160a01b0316608052506101079050565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b608051610e1261013e600039600081816101e2015281816102b20152818161040f0152818161057801526108510152610e126000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638456cb5911610097578063b4ac686011610066578063b4ac686014610217578063c29277cd1461021f578063d914cd4b14610227578063e26b2f631461023a57600080fd5b80638456cb59146101cd57806394144856146101d5578063a50cf2c8146101dd578063ac4afa381461020457600080fd5b80635b16ebb7116100d35780635b16ebb7146101575780635c975abb1461018a578063673a2a1f146101955780636fbc6f6b146101aa57600080fd5b80631e16e4fc146100fa5780633f4ba83a1461013757806354fd4d5014610141575b600080fd5b61010d610108366004610c97565b61024d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013f610284565b005b610149600181565b60405190815260200161012e565b61017a610165366004610cb0565b60026020526000908152604090205460ff1681565b604051901515815260200161012e565b60005460ff1661017a565b61019d610372565b60405161012e9190610ced565b61017a6101b8366004610cb0565b60046020526000908152604090205460ff1681565b61013f6103e1565b61019d6104cd565b61010d7f000000000000000000000000000000000000000000000000000000000000000081565b61010d610212366004610c97565b61053a565b600154610149565b600354610149565b61013f610235366004610cb0565b61054a565b61013f610248366004610cb0565b610823565b6003818154811061025d57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa15801561030e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103329190610d47565b610368576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610370610af6565b565b606060018054806020026020016040519081016040528092919081815260200182805480156103d757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103ac575b5050505050905090565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa15801561046b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048f9190610d47565b6104c5576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610370610bd7565b606060038054806020026020016040519081016040528092919081815260200182805480156103d75760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103ac575050505050905090565b6001818154811061025d57600080fd5b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156105d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f89190610d47565b61062e576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051808201909152600281527f5a30000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff82166106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190610d69565b60405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff8116600090815260026020908152604091829020548251808401909352600383527f43523100000000000000000000000000000000000000000000000000000000009183019190915260ff1615610753576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190610d69565b506001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909417909355915190917ff816b5143086c89d103a0683286be86c2b741e83ebfa75135aae606e2f5c6e5391a250565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156108ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190610d47565b610907576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051808201909152600281527f5a30000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8216610989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190610d69565b5073ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604091829020548251808401909352600383527f43523200000000000000000000000000000000000000000000000000000000009183019190915260ff1615610a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190610d69565b506003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909417909355915190917f58ad3cfc4b6552a53c8c4128ae9b080e14b4378a159280643a62c6f709cee24f91a250565b60005460ff16610b62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016106b0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60005460ff1615610c44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016106b0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610bad3390565b600060208284031215610ca957600080fd5b5035919050565b600060208284031215610cc257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610ce657600080fd5b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610d3b57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610d09565b50909695505050505050565b600060208284031215610d5957600080fd5b81518015158114610ce657600080fd5b600060208083528351808285015260005b81811015610d9657858101830151858201604001528201610d7a565b81811115610da8576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea26469706673582212208f2d91c863db9ab1494a9c5db20e3fddc4b6c779ea3c3621737c105c60d9440a64736f6c634300080a003360e06040523480156200001157600080fd5b5060405162004da638038062004da6833981016040819052620000349162000160565b6001600160a01b0381166200005c57604051635919af9760e11b815260040160405180910390fd5b6001600160a01b03811660808190526040805163c513c9bb60e01b8152905163c513c9bb916004808201926020929091908290030181865afa158015620000a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cd919062000160565b6001600160a01b031660a0816001600160a01b0316815250506080516001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014d919062000160565b6001600160a01b031660c0525062000192565b6000602082840312156200017357600080fd5b81516001600160a01b03811681146200018b57600080fd5b9392505050565b60805160a05160c051614b896200021d6000396000818161018801528181611c4f0152612c5a0152600081816101ed015281816115e201528181611f5f0152818161213f0152818161223f0152818161243801528181612604015281816126bc01528181612788015281816129a501528181613c410152613d000152600061013c0152614b896000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806354fd4d5011610081578063a80deda31161005b578063a80deda31461020f578063ae093f3f1461022f578063fc9914cb1461024f57600080fd5b806354fd4d50146101bd578063663b8fdb146101d35780637a0c7b21146101e857600080fd5b80632954018c116100b25780632954018c146101375780634b2f336d146101835780634c472fc9146101aa57600080fd5b80630dbd616d146100d957806313d21cdf146101025780631bcd8fc014610122575b600080fd5b6100ec6100e73660046140fc565b610272565b6040516100f9919061430b565b60405180910390f35b61011561011036600461431e565b6114d4565b6040516100f99190614444565b61012a611f59565b6040516100f99190614453565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f9565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b61015e6101b83660046140fc565b6121f5565b6101c5600281565b6040519081526020016100f9565b6101db612432565b6040516100f991906146ea565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b61022261021d36600461431e565b6126b5565b6040516100f9919061476a565b61024261023d36600461431e565b612a75565b6040516100f991906147dd565b61026261025d3660046140fc565b613bf7565b60405190151581526020016100f9565b61035f604051806102400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001606081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600060ff168152602001600081525090565b600080600080600061037088613cf4565b509450945094509450945060008560ff1660011461041d576040517fe958b70400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015284169063e958b70490602401602060405180830381865afa1580156103f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041891906147f0565b6104ad565b6040517fe958b70400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015286169063e958b70490602401602060405180830381865afa158015610489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ad91906147f0565b60ff8716610200890181905273ffffffffffffffffffffffffffffffffffffffff808b1660208b01528b811660608b015282168952909150600114156109e9578473ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906147f0565b73ffffffffffffffffffffffffffffffffffffffff90811660808901526040517fc7de38a600000000000000000000000000000000000000000000000000000000815282821660048201529085169063c7de38a690602401602060405180830381865afa1580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f5919061480d565b60c08801526040517fdfd5946500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015285169063dfd5946590602401602060405180830381865afa158015610666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068a919061480d565b60e08801526040517f3ce0735500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015260006024830152861690633ce0735590604401602060405180830381865afa92505050801561073c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526107399181019061480d565b60015b6107455761074c565b6101408801525b6040517f3ce0735500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015260016024830152861690633ce0735590604401602060405180830381865afa9250505080156107f9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526107f69181019061480d565b60015b61080257610809565b6101608801525b60c08701516040517f996329f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820192909252600060448201529086169063996329f89060640160a060405180830381865afa9250505080156108c4575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108c191810190614826565b60015b6108cd576108da565b505015156101808a015250505b8073ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061480d565b6101a08801526040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152851690633192195c90602401602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df919061480d565b60a0880152610c26565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5891906147f0565b73ffffffffffffffffffffffffffffffffffffffff90811660808901526040517fc7de38a600000000000000000000000000000000000000000000000000000000815282821660048201529083169063c7de38a6906024016040805180830381865afa158015610acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af09190614866565b5060c08801526040517fdfd5946500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063dfd5946590602401602060405180830381865afa158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b86919061480d565b60e08801526040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152841690633192195c906024016040805180830381865afa158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a9190614866565b60a08901526101a08801525b60008660ff16600114610ca7578373ffffffffffffffffffffffffffffffffffffffff166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca291906147f0565b610d16565b8573ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1691906147f0565b90508073ffffffffffffffffffffffffffffffffffffffff166345d31f9d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d87919061480d565b6101008901526000600160ff891614610e0e578473ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e09919061480d565b610e7d565b8573ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7d919061480d565b90508760ff16600114610f1f576040517f8991b2f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152861690638991b2f190602401602060405180830381865afa158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a919061480d565b610faf565b6040517fb451cecc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015287169063b451cecc90602401602060405180830381865afa158015610f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faf919061480d565b6102208a01528067ffffffffffffffff811115610fce57610fce61488a565b60405190808252806020026020018201604052801561103e57816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610fec5790505b506101208a015260005b818110156113d657604080516080810182526000808252602082018190529181018290526060810191909152600180831b9060ff8c1614156111c5576040517faf0a650200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590528a169063af0a650290604401608060405180830381865afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906148b9565b5050602084015273ffffffffffffffffffffffffffffffffffffffff9081168084526040517ff9eaee0d0000000000000000000000000000000000000000000000000000000081526004810191909152908a169063f9eaee0d90602401602060405180830381865afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b9919061490d565b15156040830152611388565b6040517f172c48c70000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff89169063172c48c7906024016040805180830381865afa15801561122f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112539190614928565b5073ffffffffffffffffffffffffffffffffffffffff9081168084526040517f70a082310000000000000000000000000000000000000000000000000000000081529188166004830152906370a0823190602401602060405180830381865afa1580156112c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e8919061480d565b602083015281516040517ff9eaee0d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529088169063f9eaee0d90602401602060405180830381865afa15801561135c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611380919061490d565b151560408301525b6102208c015181161561139c57600161139f565b60005b151560608301526101208c01518051839190859081106113c1576113c161495e565b60209081029190910101525050600101611048565b508273ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611446919061480d565b896101c00181815250508273ffffffffffffffffffffffffffffffffffffffff16633dc54b406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bf919061480d565b6101e08a015250969998505050505050505050565b61159b604051806102000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff1681525090565b6040517f5b16ebb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015283917f000000000000000000000000000000000000000000000000000000000000000090911690635b16ebb790602401602060405180830381865afa15801561162b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164f919061490d565b611685576040517fd384b23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316808352604080517ffe14112d000000000000000000000000000000000000000000000000000000008152905185929163fe14112d9160048083019260209291908290030181865afa1580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611719919061480d565b8360c00181815250508073ffffffffffffffffffffffffffffffffffffffff1663ef8d96036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611791919061480d565b8360e00181815250508073ffffffffffffffffffffffffffffffffffffffff1663743753596040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611809919061480d565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff16634c19386c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611881919061480d565b836101000181815250508073ffffffffffffffffffffffffffffffffffffffff1663788c6bfe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fa919061480d565b836101600181815250508073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611973919061480d565b8360800181815250508073ffffffffffffffffffffffffffffffffffffffff166345d31f9d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb919061480d565b836101400181815250508073ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6491906147f0565b836040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166336dda7d56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0a91906147f0565b836060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663788c6bfe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb0919061480d565b836101600181815250508073ffffffffffffffffffffffffffffffffffffffff1663e941fa786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c29919061480d565b61018084015260408084015173ffffffffffffffffffffffffffffffffffffffff9081167f000000000000000000000000000000000000000000000000000000000000000082161460208087019190915282517f609ae31700000000000000000000000000000000000000000000000000000000815292519184169263609ae31792600480830193928290030181865afa158015611ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cef919061480d565b836101c00181815250508073ffffffffffffffffffffffffffffffffffffffff1663dbcb313b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d68919061480d565b836101a00181815250506000836060015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de7919061480d565b6040517f5427c9380000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff841690635427c93890602401602060405180830381865afa158015611e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7c919061480d565b90508015611ec7576101808501518190611eb890611e9c906127106149bc565b876101000151886101400151611eb291906149d3565b90613fd0565b611ec29190614a3f565b611ece565b8461014001515b856101200181815250508273ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061480d565b60ff166101e086015250505050919050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b4ac68606040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec919061480d565b90508067ffffffffffffffff8111156120075761200761488a565b6040519080825280602002602001820160405280156120ff57816020015b6120ec604051806102000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff1681525090565b8152602001906001900390816120255790505b50915060005b818110156121f0576040517fac4afa38000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ac4afa3890602401602060405180830381865afa15801561219b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bf91906147f0565b90506121ca816114d4565b8483815181106121dc576121dc61495e565b602090810291909101015250600101612105565b505090565b6040517f6fbc6f6b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015260009184917f00000000000000000000000000000000000000000000000000000000000000001690636fbc6f6b90602401602060405180830381865afa158015612286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122aa919061490d565b6122e0576040517f2cf3d0de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006122ee87613cf4565b5050935093505092508260ff16600114612397576040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015282169063fdd5764590602401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239291906147f0565b612427565b6040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015283169063fdd5764590602401602060405180830381865afa158015612403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242791906147f0565b979650505050505050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c29277cd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c5919061480d565b90508067ffffffffffffffff8111156124e0576124e061488a565b6040519080825280602002602001820160405280156125c457816020015b60408051610260810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c0830182905260e0830182905261010083018290526101208301819052610140830181905261016083015261018082018190526101a082018190526101c082018190526101e082018190526102008201819052610220820181905261024082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816124fe5790505b50915060005b818110156121f0576040517f1e16e4fc000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631e16e4fc90602401602060405180830381865afa158015612660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268491906147f0565b905061268f81612a75565b8483815181106126a1576126a161495e565b6020908102919091010152506001016125ca565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c29277cd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612725573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612749919061480d565b905060005b81811015612829576040517f1e16e4fc000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631e16e4fc90602401602060405180830381865afa1580156127e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280891906147f0565b90506128148187613bf7565b15612820578360010193505b5060010161274e565b508167ffffffffffffffff8111156128435761284361488a565b60405190808252806020026020018201604052801561296157816020015b61294e604051806102400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001606081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600060ff168152602001600081525090565b8152602001906001900390816128615790505b5092506000915060005b81811015612a6d576040517f1e16e4fc000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690631e16e4fc90602401602060405180830381865afa158015612a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2591906147f0565b9050612a318187613bf7565b15612a6457612a408187610272565b858581518110612a5257612a5261495e565b60209081029190910101526001909301925b5060010161296b565b505050919050565b604080516102608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201819052610140820181905261016082015261018081018290526101a081018290526101c081018290526101e08101829052610200810182905261022081018290526102408101829052908080808080612b1b88613cf4565b73ffffffffffffffffffffffffffffffffffffffff8e168d5260ff86166101808e01819052959b50939950919750955093509150600114612bca578273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc591906147f0565b612c39565b8473ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3991906147f0565b73ffffffffffffffffffffffffffffffffffffffff908116602089018190527f00000000000000000000000000000000000000000000000000000000000000009091161460408801526000600160ff881614612d03578373ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfe91906147f0565b612d72565b8573ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7291906147f0565b6040517f2e97ca2100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015291925090821690632e97ca2190602401602060405180830381865afa158015612de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e06919061490d565b15156060890152604080517f45d31f9d000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff8316916345d31f9d9160048083019260209291908290030181865afa158015612e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9c919061480d565b8860800181815250508073ffffffffffffffffffffffffffffffffffffffff1663743753596040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f14919061480d565b610100890152600160ff88161415613017578573ffffffffffffffffffffffffffffffffffffffff16639b2cb5d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f95919061480d565b8860a00181815250508573ffffffffffffffffffffffffffffffffffffffff16635f48f3936040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300d919061480d565b60c08901526130a5565b8273ffffffffffffffffffffffffffffffffffffffff1663860aefcf6040518163ffffffff1660e01b81526004016040805180830381865afa158015613061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130859190614a73565b6fffffffffffffffffffffffffffffffff90811660c08b01521660a08901525b60008760ff16600114613126578473ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613121919061480d565b613195565b8573ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613171573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613195919061480d565b90508067ffffffffffffffff8111156131b0576131b061488a565b6040519080825280602002602001820160405280156131d9578160200160208202803683370190505b506101208a01528067ffffffffffffffff8111156131f9576131f961488a565b604051908082528060200260200182016040528015613222578160200160208202803683370190505b506101608a015260005b818110156134c4578860ff16600114156133b4576040517f5e5f2e260000000000000000000000000000000000000000000000000000000081526004810182905260009073ffffffffffffffffffffffffffffffffffffffff891690635e5f2e2690602401602060405180830381865afa1580156132ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d291906147f0565b9050808b610120015183815181106132ec576132ec61495e565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517f78327438000000000000000000000000000000000000000000000000000000008152828216600482015290891690637832743890602401602060405180830381865afa158015613367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338b919061480d565b8b610160015183815181106133a2576133a261495e565b602002602001018181525050506134bc565b6040517f172c48c70000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff87169063172c48c7906024016040805180830381865afa15801561341e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134429190614928565b8061ffff1690508b610120015183815181106134605761346061495e565b602002602001018c6101600151848151811061347e5761347e61495e565b60200260200101828152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050505b60010161322c565b5060008860ff16600114613546578373ffffffffffffffffffffffffffffffffffffffff166350e036ff6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561351d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613541919061480d565b6135b5565b8673ffffffffffffffffffffffffffffffffffffffff166350e036ff6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b5919061480d565b90508067ffffffffffffffff8111156135d0576135d061488a565b60405190808252806020026020018201604052801561361557816020015b60408051808201909152600080825260208201528152602001906001900390816135ee5790505b506101408b015260005b818110156139015760408051808201909152600080825260208201528a60ff166001146136da576040517f5094cb4f0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff871690635094cb4f90602401602060405180830381865afa1580156136b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d591906147f0565b613769565b6040517f5094cb4f0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff8a1690635094cb4f90602401602060405180830381865afa158015613745573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376991906147f0565b73ffffffffffffffffffffffffffffffffffffffff168152600160ff8c16146138245780516040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529089169063fdd5764590602401602060405180830381865afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f91906147f0565b6138b7565b80516040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908a169063fdd5764590602401602060405180830381865afa158015613893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b791906147f0565b73ffffffffffffffffffffffffffffffffffffffff1660208201526101408c01518051829190849081106138ed576138ed61495e565b60209081029190910101525060010161361f565b508860ff166001141561398f578773ffffffffffffffffffffffffffffffffffffffff1663b2c53a6c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397d919061480d565b60e08b015260ff6102408b0152613be9565b73ffffffffffffffffffffffffffffffffffffffff85166101a08b01819052604080517f9408b63f0000000000000000000000000000000000000000000000000000000081529051639408b63f916004808201926020929091908290030181865afa158015613a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2691906147f0565b8a6101e0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa158015613aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613acd9190614aa6565b5015156102008c015250604080517f9fd12b77000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff881691639fd12b779160048083019260209291908290030181865afa158015613b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b66919061480d565b8a6102200181815250508573ffffffffffffffffffffffffffffffffffffffff16638345f26e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bdf9190614af7565b60ff166102408b01525b505050505050505050919050565b6040517f6fbc6f6b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015260009184917f00000000000000000000000000000000000000000000000000000000000000001690636fbc6f6b90602401602060405180830381865afa158015613c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cac919061490d565b613ce2576040517f2cf3d0de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613cec8484614023565b949350505050565b600080600080600080867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b8152600401613d73919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db4919061490d565b613dea576040517f2cf3d0de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e59919061480d565b96508660ff1660011415613ee0578795508573ffffffffffffffffffffffffffffffffffffffff1663f93f515b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed991906147f0565b9450613fc6565b8793508373ffffffffffffffffffffffffffffffffffffffff16632f7a18816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5291906147f0565b92508373ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fc391906147f0565b91505b5091939550919395565b6000821580613fdd575081155b15613fea5750600061401d565b612710613ff8600282614b1a565b61ffff1661400684866149d3565b6140109190614b3b565b61401a9190614a3f565b90505b92915050565b6040517f055ee9b500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600091829185169063055ee9b590602401602060405180830381865afa158015614094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b891906147f0565b73ffffffffffffffffffffffffffffffffffffffff1614159392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146140f957600080fd5b50565b6000806040838503121561410f57600080fd5b823561411a816140d7565b9150602083013561412a816140d7565b809150509250929050565b600081518084526020808501945080840160005b8381101561419f578151805173ffffffffffffffffffffffffffffffffffffffff168852838101518489015260408082015115159089015260609081015115159088015260809096019590820190600101614149565b509495945050505050565b805173ffffffffffffffffffffffffffffffffffffffff168252600061024060208301516141f0602086018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151614204604086018215159052565b50606083015161422c606086018273ffffffffffffffffffffffffffffffffffffffff169052565b506080830151614254608086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151828287015261429783870182614135565b92505050610140808401518186015250610160808401518186015250610180808401516142c78287018215159052565b50506101a083810151908501526101c080840151908501526101e080840151908501526102008084015160ff16908501526102209283015192909301919091525090565b60208152600061401a60208301846141aa565b60006020828403121561433057600080fd5b813561433b816140d7565b9392505050565b805173ffffffffffffffffffffffffffffffffffffffff168252602081015161436f602084018215159052565b506040810151614397604084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060608101516143bf606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080818101519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e09081015160ff16910152565b610200810161401d8284614342565b6020808252825182820181905260009190848201906040850190845b8181101561449657614482838551614342565b92840192610200929092019160010161446f565b50909695505050505050565b600081518084526020808501945080840160005b8381101561419f57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016144b6565b600081518084526020808501945080840160005b8381101561419f578151805173ffffffffffffffffffffffffffffffffffffffff9081168952908401511683880152604090960195908201906001016144fc565b600081518084526020808501945080840160005b8381101561419f57815187529582019590820190600101614551565b805173ffffffffffffffffffffffffffffffffffffffff168252600061026060208301516145b3602086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060408301516145c7604086018215159052565b5060608301516145db606086018215159052565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e0850152610100808401518186015250610120808401518282870152614628838701826144a2565b92505050610140808401518583038287015261464483826144e8565b925050506101608084015185830382870152614660838261453d565b92505050610180808401516146798287018260ff169052565b50506101a08381015173ffffffffffffffffffffffffffffffffffffffff908116918601919091526101c0808501511515908601526101e080850151909116908501526102008084015115159085015261022080840151908501526102409283015160ff1692909301919091525090565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561475d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261474b85835161456d565b94509285019290850190600101614711565b5092979650505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561475d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526147cb8583516141aa565b94509285019290850190600101614791565b60208152600061401a602083018461456d565b60006020828403121561480257600080fd5b815161433b816140d7565b60006020828403121561481f57600080fd5b5051919050565b600080600080600060a0868803121561483e57600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b6000806040838503121561487957600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156148cf57600080fd5b84516148da816140d7565b60208601516040870151606090970151919890975090945092505050565b8051801515811461490857600080fd5b919050565b60006020828403121561491f57600080fd5b61401a826148f8565b6000806040838503121561493b57600080fd5b8251614946816140d7565b602084015190925061ffff8116811461412a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156149ce576149ce61498d565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a0b57614a0b61498d565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614a4e57614a4e614a10565b500490565b80516fffffffffffffffffffffffffffffffff8116811461490857600080fd5b60008060408385031215614a8657600080fd5b614a8f83614a53565b9150614a9d60208401614a53565b90509250929050565b600080600060608486031215614abb57600080fd5b614ac484614a53565b9250614ad2602085016148f8565b9150604084015164ffffffffff81168114614aec57600080fd5b809150509250925092565b600060208284031215614b0957600080fd5b815160ff8116811461433b57600080fd5b600061ffff80841680614b2f57614b2f614a10565b92169190910492915050565b60008219821115614b4e57614b4e61498d565b50019056fea2646970667358221220d15108d0bec9cc6f3903875dd8412869a3da1b36661bdc780e2e2f0ae3136d2464736f6c634300080a003360a06040523480156200001157600080fd5b5060405162001b4538038062001b45833981016040819052620000349162000608565b6000805460ff19169055816001600160a01b0381166200006757604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cc91906200070a565b6001600160a01b031660805250805160005b818110156200014257620001398382815181106200010057620001006200072f565b6020026020010151600001518483815181106200012157620001216200072f565b6020026020010151602001516200014c60201b60201c565b600101620000de565b5050505062000822565b6001600160a01b03821615806200016a57506001600160a01b038116155b156200018957604051635919af9760e11b815260040160405180910390fd5b620001a8826001600160a01b0316620004ba60201b620006751760201c565b620001d65760405163df4c572d60e01b81526001600160a01b03831660048201526024015b60405180910390fd5b620001f5816001600160a01b0316620004ba60201b620006751760201c565b6200021f5760405163df4c572d60e01b81526001600160a01b0382166004820152602401620001cd565b806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200027c575060408051601f3d908101601f19168201909252620002799181019062000745565b60015b6200029a576040516367a7cd4360e01b815260040160405180910390fd5b8060ff16600814620002bf576040516367a7cd4360e01b815260040160405180910390fd5b506000816001600160a01b031663d62ada116040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200031f575060408051601f3d908101601f191682019092526200031c918101906200076a565b60015b6200032a576200032d565b90505b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200038c575060408051601f3d908101601f19168201909252620003899181019062000745565b60015b620003aa5760405163528ca31d60e01b815260040160405180910390fd5b60128160ff161115620003d05760405163528ca31d60e01b815260040160405180910390fd5b9050826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156200042f575060408051601f3d908101601f191682019092526200042c91810190620007a6565b60015b6200044d576040516367a7cd4360e01b815260040160405180910390fd5b8662000461576200046185858484620004c0565b5050505050620004748484848462000526565b826001600160a01b0316846001600160a01b03167fe263805b03657ab13064915d0723c5ce14981547e7cba5283f66b9e5d81f6e6e60405160405180910390a350505050565b3b151590565b60008313620004e2576040516356e05d2b60e01b815260040160405180910390fd5b836001600160501b0316816001600160501b0316108062000501575081155b15620005205760405163b1cf675560e01b815260040160405180910390fd5b50505050565b6001600160a01b03831682156200053e57600160a11b175b6200055460ff60a21b60a284901b1682620007fb565b6001600160a01b0390951660009081526001602052604090209490945550505050565b80516001600160a01b03811681146200058f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620005cf57620005cf62000594565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000600576200060062000594565b604052919050565b60008060408084860312156200061d57600080fd5b620006288462000577565b602085810151919450906001600160401b03808211156200064857600080fd5b818701915087601f8301126200065d57600080fd5b81518181111562000672576200067262000594565b62000682848260051b01620005d5565b818152848101925060069190911b830184019089821115620006a357600080fd5b928401925b81841015620006fa5785848b031215620006c25760008081fd5b620006cc620005aa565b620006d78562000577565b8152620006e686860162000577565b8187015283529285019291840191620006a8565b8096505050505050509250929050565b6000602082840312156200071d57600080fd5b620007288262000577565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200075857600080fd5b815160ff811681146200072857600080fd5b6000602082840312156200077d57600080fd5b815180151581146200072857600080fd5b80516001600160501b03811681146200058f57600080fd5b600080600080600060a08688031215620007bf57600080fd5b620007ca866200078e565b9450602086015193506040860151925060608601519150620007ef608087016200078e565b90509295509295909350565b600082198211156200081d57634e487b7160e01b600052601160045260246000fd5b500190565b6080516112f262000853600039600081816101b201528181610280015281816103e201526104ff01526112f26000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638456cb591161008c578063b66102df11610066578063b66102df146101d4578063e8a97a3e146101e7578063f190e5fa146101fa578063f9a650301461023f57600080fd5b80638456cb591461016d5780639dcb511a14610175578063a50cf2c8146101ad57600080fd5b80635c975abb116100bd5780635c975abb1461011c5780635cecbd0e146101325780637afb01041461015a57600080fd5b80633f4ba83a146100e457806341976e09146100ee57806354fd4d5014610114575b600080fd5b6100ec610252565b005b6101016100fc366004610f28565b610340565b6040519081526020015b60405180910390f35b610101600281565b60005460ff16604051901515815260200161010b565b610145610140366004610f4a565b610352565b6040805192835260208301919091520161010b565b610101610168366004610f90565b610376565b6100ec6103b4565b610188610183366004610f28565b6104a0565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010b565b6101887f000000000000000000000000000000000000000000000000000000000000000081565b6101016101e2366004610fbc565b6104b4565b6100ec6101f5366004610ff8565b6104d1565b61020d610208366004610f28565b6105c3565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845291151560208401529082015260600161010b565b61010161024d366004610f90565b61064d565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa1580156102dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103009190611022565b610336576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61033e61067b565b565b600061034b82610761565b5092915050565b60008061035f868661064d565b915061036b848461064d565b905094509492505050565b600080600061038484610761565b90925090508161039582600a611193565b61039f908761119f565b6103a991906111dc565b925050505b92915050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa15801561043e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104629190611022565b610498576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61033e610819565b60006104ab826105c3565b50909392505050565b60006104c96104c3858561064d565b83610376565b949350505050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f9190611022565b6105b5576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105bf82826108d9565b5050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260408120548190819080610624576040517f4bb8ad8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b947402000000000000000000000000000000000000000086161515945060a286901c9350915050565b600080600061065b84610761565b909250905061066b81600a611193565b61039f838761119f565b3b151590565b60005460ff166106ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600080600080610770856105c3565b8095508193508294505050506000806000808573ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156107cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f19190611231565b9450945050935093508461080b5761080b84848484610dd9565b829750505050505050915091565b60005460ff1615610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016106e3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586107373390565b73ffffffffffffffffffffffffffffffffffffffff82161580610910575073ffffffffffffffffffffffffffffffffffffffff8116155b15610947576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82163b6109ad576040517fdf4c572d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016106e3565b73ffffffffffffffffffffffffffffffffffffffff81163b610a13576040517fdf4c572d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016106e3565b8073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a98575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a9591810190611281565b60015b610ace576040517f67a7cd4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060ff16600814610b0b576040517f67a7cd4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060008173ffffffffffffffffffffffffffffffffffffffff1663d62ada116040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b93575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610b9091810190611022565b60015b610b9c57610b9f565b90505b60008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c26575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610c2391810190611281565b60015b610c5c576040517f528ca31d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60128160ff161115610c9a576040517f528ca31d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90508273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015610d21575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610d1e91810190611231565b60015b610d57576040517f67a7cd4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b86610d6857610d6885858484610dd9565b5050505050610d7984848484610e74565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe263805b03657ab13064915d0723c5ce14981547e7cba5283f66b9e5d81f6e6e60405160405180910390a350505050565b60008313610e13576040517f56e05d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8369ffffffffffffffffffff168169ffffffffffffffffffff161080610e37575081155b15610e6e576040517fb1cf675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff83168215610ea95774020000000000000000000000000000000000000000175b610ecf7503fc000000000000000000000000000000000000000060a284901b16826112a4565b73ffffffffffffffffffffffffffffffffffffffff90951660009081526001602052604090209490945550505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f2357600080fd5b919050565b600060208284031215610f3a57600080fd5b610f4382610eff565b9392505050565b60008060008060808587031215610f6057600080fd5b84359350610f7060208601610eff565b925060408501359150610f8560608601610eff565b905092959194509250565b60008060408385031215610fa357600080fd5b82359150610fb360208401610eff565b90509250929050565b600080600060608486031215610fd157600080fd5b83359250610fe160208501610eff565b9150610fef60408501610eff565b90509250925092565b6000806040838503121561100b57600080fd5b61101483610eff565b9150610fb360208401610eff565b60006020828403121561103457600080fd5b81518015158114610f4357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156110cc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156110b2576110b2611044565b808516156110bf57918102915b93841c9390800290611078565b509250929050565b6000826110e3575060016103ae565b816110f0575060006103ae565b816001811461110657600281146111105761112c565b60019150506103ae565b60ff84111561112157611121611044565b50506001821b6103ae565b5060208310610133831016604e8410600b841016171561114f575081810a6103ae565b6111598383611073565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561118b5761118b611044565b029392505050565b6000610f4383836110d4565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111d7576111d7611044565b500290565b600082611212577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b805169ffffffffffffffffffff81168114610f2357600080fd5b600080600080600060a0868803121561124957600080fd5b61125286611217565b945060208601519350604086015192506060860151915061127560808701611217565b90509295509295909350565b60006020828403121561129357600080fd5b815160ff81168114610f4357600080fd5b600082198211156112b7576112b7611044565b50019056fea2646970667358221220e7485a2cb5750973f539ca59d2211008b42bb92b6c49605a53f5d9c88c330fb164736f6c634300080a003360e06040523480156200001157600080fd5b5060405162002ced38038062002ced8339810160408190526200003491620004bb565b6000805460ff19169055806001600160a01b0381166200006757604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cc9190620004bb565b6001600160a01b039081166080526001805560408051808201909152600281526105a360f41b602082015291508216620001245760405162461bcd60e51b81526004016200011b9190620004ed565b60405180910390fd5b50806001600160a01b031663c513c9bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018a9190620004bb565b6001600160a01b031660c052604051620001a490620004ad565b604051809103906000f080158015620001c1573d6000803e3d6000fd5b506001600160a01b031660a08190526040805163204a7f0760e21b81529051638129fc1c9160048082019260009290919082900301818387803b1580156200020857600080fd5b505af11580156200021d573d6000803e3d6000fd5b50505050620002316200028a60201b60201c565b50600454600380546001600160a01b039092166001600160a01b03199283161790556000805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b8054909116905562000545565b6000620002a460a0516200038c60201b6200119b1760201c565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620002e257600080fd5b505af1158015620002f7573d6000803e3d6000fd5b5050600480546001600160a01b03908116600090815260026020908152604090912080546001600160a01b03199081169388169384179091558354169091179091556200035492506005915083906200043b811b6200127d17901c565b506040516001600160a01b038216907f9f69b6c10f6810213e055b0ba6bc0a4e2603f73c221aad77ea35da819cda7dc390600090a250565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b038116620004365760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064016200011b565b919050565b600062000452836001600160a01b0384166200045b565b90505b92915050565b6000818152600183016020526040812054620004a45750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000455565b50600062000455565b610e788062001e7583390190565b600060208284031215620004ce57600080fd5b81516001600160a01b0381168114620004e657600080fd5b9392505050565b600060208083528351808285015260005b818110156200051c57858101830151858201604001528201620004fe565b818111156200052f576000604083870101525b50601f01601f1916929092016040019392505050565b60805160a05160c0516118cf620005a66000396000818161026a015281816103680152610b7001526000818161020201526110650152600081816102c4015281816105b80152818161099601528181610a840152610e7401526118cf6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806388f64c54116100cd578063b193976311610081578063d82ecc4811610066578063d82ecc4814610309578063e3ba9ace1461031c578063f23953ab1461032f57600080fd5b8063b1939763146102f9578063b60e85181461030157600080fd5b80638f7dcfa3116100b25780638f7dcfa31461029f578063a50cf2c8146102bf578063a904aab6146102e657600080fd5b806388f64c541461026557806389b77b3e1461028c57600080fd5b806354fd4d50116101245780635da33c5b116101095780635da33c5b146101fd578063765e0159146102245780638456cb591461025d57600080fd5b806354fd4d50146101d05780635c975abb146101e657600080fd5b806313d8c8401461015657806321d18456146101a05780632932472f146101b35780633f4ba83a146101c8575b600080fd5b6004546101769073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101766101ae366004611651565b610337565b6101c66101c1366004611697565b61058a565b005b6101c6610968565b6101d8600181565b604051908152602001610197565b60005460ff165b6040519015158152602001610197565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b6101766102323660046116da565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600260205260409020541690565b6101c6610a56565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b6101c661029a3660046116da565b610b42565b6003546101769073ffffffffffffffffffffffffffffffffffffffff1681565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102f4366004611697565b610e46565b6101d8610fb8565b6101d8611033565b6101ed6103173660046116da565b611044565b61017661032a3660046116f5565b611051565b6101c661105e565b6040517f6fbc6f6b0000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636fbc6f6b90602401602060405180830381865afa1580156103c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e8919061170e565b6040518060400160405280600281526020017f43500000000000000000000000000000000000000000000000000000000000008152509061045f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b60405180910390fd5b506104686112a6565b6003805473ffffffffffffffffffffffffffffffffffffffff8082166000818152600260205260409081902080549093167fffffffffffffffffffffffff0000000000000000000000000000000000000000948516179094558154909216905590517fc75b5a710000000000000000000000000000000000000000000000000000000081523360048201526024810185905260448101849052819063c75b5a7190606401600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b505060405133925073ffffffffffffffffffffffffffffffffffffffff841691507ff3ede7039176503a8ad1fe7cfaa29475a9dbe0cdcaf04ecf9a5c10570c47b10390600090a390505b92915050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015610614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610638919061170e565b61066e576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106766112a6565b60035473ffffffffffffffffffffffffffffffffffffffff838116911614156106fa576003805473ffffffffffffffffffffffffffffffffffffffff808216600090815260026020526040902080549091167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092558154169055610865565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260026020908152604091829020548251808401909352600383527f4146330000000000000000000000000000000000000000000000000000000000918301919091529091848116911614610798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b5060045473ffffffffffffffffffffffffffffffffffffffff838116911614156107fd57600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790945591905281541690555b6040517fc75b5a7100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600060248301819052604483015283169063c75b5a7190606401600060405180830381600087803b1580156108dc57600080fd5b505af11580156108f0573d6000803e3d6000fd5b505050506109088260056112dd90919063ffffffff16565b508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f25e267469ba2ae82515be7b3d45df60bf8308343f0809e8cf7319058e2255ce660405160405180910390a3505050565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a16919061170e565b610a4c576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a546112ff565b565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015610ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b04919061170e565b610b3a576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a546113e0565b6040517f6fbc6f6b0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636fbc6f6b90602401602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf0919061170e565b6040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090610c5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b50610c6a6005826114a0565b6040518060400160405280600381526020017f414634000000000000000000000000000000000000000000000000000000000081525090610cd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b50438173ffffffffffffffffffffffffffffffffffffffff16633dc54b406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4991906117a3565b14156040518060400160405280600381526020017f414631000000000000000000000000000000000000000000000000000000000081525090610db9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104569190611730565b506004805473ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169487169485179091558454168317909355915190917fced6ab9afc868b3a088366f6631ae20752993b5cce5d5f0534ea5a59fcc57d5691a250565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015610ed0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef4919061170e565b610f2a576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f19a1603900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301528416906319a1603990604401600060405180830381600087803b158015610f9b57600080fd5b505af1158015610faf573d6000803e3d6000fd5b50505050505050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff81161561102d5773ffffffffffffffffffffffffffffffffffffffff9081166000908152600260205260409020541681611025816117eb565b925050610fd7565b50919050565b600061103f60056114cf565b905090565b60006105846005836114a0565b60006105846005836114d9565b60006110897f000000000000000000000000000000000000000000000000000000000000000061119b565b90508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110d357600080fd5b505af11580156110e7573d6000803e3d6000fd5b50506004805473ffffffffffffffffffffffffffffffffffffffff908116600090815260026020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811692871692831790915582541617905550611156905060058261127d565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907f9f69b6c10f6810213e055b0ba6bc0a4e2603f73c221aad77ea35da819cda7dc390600090a250565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c6564000000000000000000006044820152606401610456565b919050565b600061129f8373ffffffffffffffffffffffffffffffffffffffff84166114e5565b9392505050565b60035473ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416610a5457610a5461105e565b600061129f8373ffffffffffffffffffffffffffffffffffffffff8416611534565b60005460ff1661136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610456565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60005460ff161561144d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610456565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113b63390565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054151561129f565b6000610584825490565b600061129f8383611627565b600081815260018301602052604081205461152c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610584565b506000610584565b6000818152600183016020526040812054801561161d576000611558600183611824565b855490915060009061156c90600190611824565b90508181146115d157600086600001828154811061158c5761158c61183b565b90600052602060002001549050808760000184815481106115af576115af61183b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806115e2576115e261186a565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610584565b6000915050610584565b600082600001828154811061163e5761163e61183b565b9060005260206000200154905092915050565b6000806040838503121561166457600080fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461127857600080fd5b6000806000606084860312156116ac57600080fd5b6116b584611673565b92506116c360208501611673565b91506116d160408501611673565b90509250925092565b6000602082840312156116ec57600080fd5b61129f82611673565b60006020828403121561170757600080fd5b5035919050565b60006020828403121561172057600080fd5b8151801515811461129f57600080fd5b600060208083528351808285015260005b8181101561175d57858101830151858201604001528201611741565b8181111561176f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156117b557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561181d5761181d6117bc565b5060010190565b600082821015611836576118366117bc565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f1e9c81b8c3af2491c907ee66cf24e1bb76111b821db02df8f98dbb48b5ab5fa64736f6c634300080a0033608060405234801561001057600080fd5b50610e58806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806354fd4d5011610081578063c45a01551161005b578063c45a0155146101a4578063c75b5a71146101ca578063d1660f99146101dd57600080fd5b806354fd4d501461014f5780638129fc1c14610157578063c12c21c01461015f57600080fd5b80631afbb7a4116100b25780631afbb7a41461011d5780631cff79cd146101265780633dc54b401461014657600080fd5b806316128211146100d957806317d11a15146100ee57806319a160391461010a575b600080fd5b6100ec6100e7366004610b42565b6101f0565b005b6100f760035481565b6040519081526020015b60405180910390f35b6100ec610118366004610b8d565b61024c565b6100f760025481565b610139610134366004610bef565b6102c9565b6040516101019190610d49565b6100f760045481565b6100f7600181565b6100ec610344565b60015461017f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610101565b60005461017f9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6100ec6101d8366004610d5c565b610494565b6100ec6101eb366004610d8f565b61053d565b60015473ffffffffffffffffffffffffffffffffffffffff163314610241576040517f1f51116700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600291909155600355565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1633146102a3576040517fb126b84800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102c573ffffffffffffffffffffffffffffffffffffffff83168260006105b4565b5050565b60015460609073ffffffffffffffffffffffffffffffffffffffff16331461031d576040517f1f51116700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61033d73ffffffffffffffffffffffffffffffffffffffff8416836107b4565b9392505050565b600054610100900460ff1661035f5760005460ff1615610363565b303b155b6103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600054610100900460ff1615801561043357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16336201000002179055801561049157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1633146104eb576040517fb126b84800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff949094169390931790925560025560035543600455565b60015473ffffffffffffffffffffffffffffffffffffffff16331461058e576040517f1f51116700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105af73ffffffffffffffffffffffffffffffffffffffff841683836107f6565b505050565b80158061065457506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190610dcb565b155b6106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016103eb565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105af9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261084c565b606061033d83836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250610958565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105af9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610732565b60006108ae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166109589092919063ffffffff16565b8051909150156105af57808060200190518101906108cc9190610de4565b6105af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103eb565b6060610967848460008561096f565b949350505050565b606082471015610a01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103eb565b843b610a69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103eb565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a929190610e06565b60006040518083038185875af1925050503d8060008114610acf576040519150601f19603f3d011682016040523d82523d6000602084013e610ad4565b606091505b5091509150610ae4828286610aef565b979650505050505050565b60608315610afe57508161033d565b825115610b0e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103eb9190610d49565b60008060408385031215610b5557600080fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8857600080fd5b919050565b60008060408385031215610ba057600080fd5b610ba983610b64565b9150610bb760208401610b64565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060408385031215610c0257600080fd5b610c0b83610b64565b9150602083013567ffffffffffffffff80821115610c2857600080fd5b818501915085601f830112610c3c57600080fd5b813581811115610c4e57610c4e610bc0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610c9457610c94610bc0565b81604052828152886020848701011115610cad57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610cea578181015183820152602001610cd2565b83811115610cf9576000848401525b50505050565b60008151808452610d17816020860160208601610ccf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061033d6020830184610cff565b600080600060608486031215610d7157600080fd5b610d7a84610b64565b95602085013595506040909401359392505050565b600080600060608486031215610da457600080fd5b610dad84610b64565b9250610dbb60208501610b64565b9150604084013590509250925092565b600060208284031215610ddd57600080fd5b5051919050565b600060208284031215610df657600080fd5b8151801515811461033d57600080fd5b60008251610e18818460208701610ccf565b919091019291505056fea2646970667358221220448e7046078cd668c09328d857e534e2aab6cdc0e691d3d4f2c8baae8e084b1364736f6c634300080a003360c06040523480156200001157600080fd5b506040516200162738038062001627833981016040819052620000349162000177565b60408051808201909152600281526105a360f41b60208201526001600160a01b038216620000805760405162461bcd60e51b8152600401620000779190620001a9565b60405180910390fd5b50806001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e6919062000177565b6001600160a01b03166080816001600160a01b031681525050806001600160a01b031663c513c9bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000164919062000177565b6001600160a01b031660a0525062000201565b6000602082840312156200018a57600080fd5b81516001600160a01b0381168114620001a257600080fd5b9392505050565b600060208083528351808285015260005b81811015620001d857858101830151858201604001528201620001ba565b81811115620001eb576000604083870101525b50601f01601f1916929092016040019392505050565b60805160a0516113c2620002656000396000818161021f0152818161036401526106d501526000818160af0152818161012a015281816104420152818161056e015281816107b301528181610aa601528181610b890152610c6701526113c26000f3fe60806040526004361061005e5760003560e01c80635869dba8116100435780635869dba814610199578063deecfbc9146101bb578063e79a4089146101ce57600080fd5b80634f0e0ef31461011857806354fd4d501461017657600080fd5b366101135760408051808201909152600381527f574732000000000000000000000000000000000000000000000000000000000060208201523373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b60405180910390fd5b50005b600080fd5b34801561012457600080fd5b5061014c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018257600080fd5b5061018b600181565b60405190815260200161016d565b3480156101a557600080fd5b506101b96101b4366004611263565b6101ee565b005b6101b96101c936600461128f565b61031d565b3480156101da57600080fd5b506101b96101e93660046112e1565b61068e565b6040517f6fbc6f6b0000000000000000000000000000000000000000000000000000000081523360048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636fbc6f6b90602401602060405180830381865afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611318565b6040518060400160405280600281526020017f43500000000000000000000000000000000000000000000000000000000000008152509061030d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b506103188383610a77565b505050565b6040517f5b16ebb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808516600483015284917f000000000000000000000000000000000000000000000000000000000000000090911690635b16ebb790602401602060405180830381865afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d19190611318565b6040518060400160405280600281526020017f52500000000000000000000000000000000000000000000000000000000000008152509061043f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e6919061133a565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f57473100000000000000000000000000000000000000000000000000000000008152509061056b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156105d457600080fd5b505af11580156105e8573d6000803e3d6000fd5b50505050506105f78434610b3c565b6040517f9aa5d46200000000000000000000000000000000000000000000000000000000815234600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff84166044830152851690639aa5d46290606401600060405180830381600087803b15801561067057600080fd5b505af1158015610684573d6000803e3d6000fd5b5050505050505050565b6040517f5b16ebb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808516600483015284917f000000000000000000000000000000000000000000000000000000000000000090911690635b16ebb790602401602060405180830381865afa15801561071e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107429190611318565b6040518060400160405280600281526020017f5250000000000000000000000000000000000000000000000000000000000000815250906107b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610857919061133a565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f5747310000000000000000000000000000000000000000000000000000000000815250906108dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b506109703330858773ffffffffffffffffffffffffffffffffffffffff166336dda7d56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610952919061133a565b73ffffffffffffffffffffffffffffffffffffffff16929190610cd4565b6040517f05fe138b0000000000000000000000000000000000000000000000000000000081526004810184905230602482015260009073ffffffffffffffffffffffffffffffffffffffff8616906305fe138b906044016020604051808303816000875af11580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a9190611357565b9050610a168382610a77565b8273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f6de63bb986f2779478e384365c03cc2e62f06b453856acca87d5a519ce02664960405160405180910390a35050505050565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610aff57600080fd5b505af1158015610b13573d6000803e3d6000fd5b50610b389250505073ffffffffffffffffffffffffffffffffffffffff831682610d6f565b5050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015282917f00000000000000000000000000000000000000000000000000000000000000009091169063dd62ed3e90604401602060405180830381865afa158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190611357565b1015610b38576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610cb0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103189190611318565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610d69908590610ec9565b50505050565b80471015610dd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610107565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610e33576040519150601f19603f3d011682016040523d82523d6000602084013e610e38565b606091505b5050905080610318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610107565b6000610f2b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610fd59092919063ffffffff16565b8051909150156103185780806020019051810190610f499190611318565b610318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610107565b6060610fe48484600085610fee565b90505b9392505050565b606082471015611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610107565b843b6110e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610107565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516111119190611370565b60006040518083038185875af1925050503d806000811461114e576040519150601f19603f3d011682016040523d82523d6000602084013e611153565b606091505b509150915061116382828661116e565b979650505050505050565b6060831561117d575081610fe7565b82511561118d5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010791906111ed565b60005b838110156111dc5781810151838201526020016111c4565b83811115610d695750506000910152565b602081526000825180602084015261120c8160408501602087016111c1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461126057600080fd5b50565b6000806040838503121561127657600080fd5b82356112818161123e565b946020939093013593505050565b6000806000606084860312156112a457600080fd5b83356112af8161123e565b925060208401356112bf8161123e565b9150604084013561ffff811681146112d657600080fd5b809150509250925092565b6000806000606084860312156112f657600080fd5b83356113018161123e565b92506020840135915060408401356112d68161123e565b60006020828403121561132a57600080fd5b81518015158114610fe757600080fd5b60006020828403121561134c57600080fd5b8151610fe78161123e565b60006020828403121561136957600080fd5b5051919050565b600082516113828184602087016111c1565b919091019291505056fea264697066735822122017fd7fc76e4a1efcf24b78a3417fad7ab9576f0a23aa756ddb211c5e2227aa9564736f6c634300080a003360806040523480156200001157600080fd5b5060405162002b8038038062002b80833981016040819052620000349162000122565b6001600160a01b0381166200008f5760405162461bcd60e51b815260206004820152601b60248201527f5a65726f2061646472657373206973206e6f7420616c6c6f7765640000000000604482015260640160405180910390fd5b6001600160a01b03811660008181526001602052604080822080546001600160601b0319166b204fce5e3e2502611000000090811790915590517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000f99190815260200190565b60405180910390a350600680546001600160a81b031916336101000260ff191617905562000154565b6000602082840312156200013557600080fd5b81516001600160a01b03811681146200014d57600080fd5b9392505050565b612a1c80620001646000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e14610503578063e7a324dc14610555578063f1127ed81461057c578063f2fde38b146105ee57600080fd5b8063b4b5ea57146104ca578063c3cda520146104dd578063d505accf146104f057600080fd5b806395d89b41116100d357806395d89b411461045b5780639742ca4614610497578063a9059cbb146104aa578063b0660c3d146104bd57600080fd5b806370a08231146103c7578063782d6fe11461040b5780637ecebe001461043b57600080fd5b806330adf81f11610166578063481c6a7511610140578063481c6a751461031e578063587cde1e146103435780635c19a95c146103795780636fcfff451461038c57600080fd5b806330adf81f14610298578063313ce567146102bf578063349dc329146102d957600080fd5b806320606b701161019757806320606b70146102545780632185810b1461027b57806323b872dd1461028557600080fd5b806306fdde03146101be578063095ea7b31461021057806318160ddd14610233575b600080fd5b6101fa6040518060400160405280600781526020017f47656172626f780000000000000000000000000000000000000000000000000081525081565b60405161020791906124a3565b60405180910390f35b61022361021e36600461253f565b610601565b6040519015158152602001610207565b6102466b204fce5e3e2502611000000081565b604051908152602001610207565b6102467f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61028361070d565b005b610223610293366004612569565b6107ee565b6102467f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102c7601281565b60405160ff9091168152602001610207565b6007546102f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610207565b6006546102f990610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6102f96103513660046125a5565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6102836103873660046125a5565b61098a565b6103b261039a3660046125a5565b60046020526000908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610207565b6102466103d53660046125a5565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020546bffffffffffffffffffffffff1690565b61041e61041936600461253f565b610997565b6040516bffffffffffffffffffffffff9091168152602001610207565b6102466104493660046125a5565b60056020526000908152604090205481565b6101fa6040518060400160405280600481526020017f474541520000000000000000000000000000000000000000000000000000000081525081565b6102836104a53660046125a5565b610cae565b6102236104b836600461253f565b610e20565b6006546102239060ff1681565b61041e6104d83660046125a5565b610e5c565b6102836104eb3660046125d1565b610efa565b6102836104fe366004612629565b611310565b610246610511366004612693565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152602081815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b6102467fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6105c561058a3660046126c6565b600360209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6040805163ffffffff90931683526bffffffffffffffffffffffff909116602083015201610207565b6102836105fc3660046125a5565b61187a565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561063f57506bffffffffffffffffffffffff610664565b6106618360405180606001604052806025815260200161285260259139611a15565b90505b3360008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff89168085529083529281902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff871690811790915590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a360019150505b92915050565b600654610100900473ffffffffffffffffffffffffffffffffffffffff163314610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a63616c6c6572206973206e6f7420746865206d616e616765720060448201526064015b60405180910390fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f795b0e16c8da9807b0a215f3749bd6dbcc49fc0472183f4e446abb7dcbd9d00790600090a1565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081815260408083203380855290835281842054825160608101909352602580845291936bffffffffffffffffffffffff909116928592610856928892919061285290830139611a15565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156108a257506bffffffffffffffffffffffff82811614155b156109725760006108cc83836040518060600160405280603d8152602001612974603d9139611a67565b73ffffffffffffffffffffffffffffffffffffffff898116600081815260208181526040808320948a168084529482529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff87169081179091559151918252939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b61097d878783611ad5565b5060019695505050505050565b6109943382611e9c565b50565b6000438210610a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f476561723a3a6765745072696f72566f7465733a206e6f74207965742064657460448201527f65726d696e656400000000000000000000000000000000000000000000000000606482015260840161078f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205463ffffffff1680610a63576000915050610707565b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208491610a95600185612735565b63ffffffff90811682526020820192909252604001600020541611610b1b5773ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812090610ae5600184612735565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff1691506107079050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020908152604080832083805290915290205463ffffffff16831015610b63576000915050610707565b600080610b71600184612735565b90505b8163ffffffff168163ffffffff161115610c565760006002610b968484612735565b610ba0919061275a565b610baa9083612735565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260036020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152919250871415610c2a576020015194506107079350505050565b805163ffffffff16871115610c4157819350610c4f565b610c4c600183612735565b92505b5050610b74565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260036020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b600654610100900473ffffffffffffffffffffffffffffffffffffffff163314610d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a63616c6c6572206973206e6f7420746865206d616e6167657200604482015260640161078f565b73ffffffffffffffffffffffffffffffffffffffff8116610db1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5a65726f2061646472657373206973206e6f7420616c6c6f7765640000000000604482015260640161078f565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2f834d1c8c4b956018fff5faca4d99868ae635487424d9c265c257ccbc698c6a90600090a250565b600080610e45836040518060600160405280602681526020016128a760269139611a15565b9050610e52338583611ad5565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081205463ffffffff1680610e94576000610ef3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812090610ec5600184612735565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b9392505050565b604080518082018252600781527f47656172626f780000000000000000000000000000000000000000000000000060209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f028ef9f797075f74ac647c65fde04fb0f128c2d59fd40f45732269917642fd4681840152466060820152306080808301919091528351808303909101815260a0820184528051908301207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c083015273ffffffffffffffffffffffffffffffffffffffff8a1660e08301526101008201899052610120808301899052845180840390910181526101408301909452835193909201929092207f19010000000000000000000000000000000000000000000000000000000000006101608401526101628301829052610182830181905290916000906101a201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156110d8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f476561723a3a64656c656761746542795369673a20696e76616c69642073696760448201527f6e61747572650000000000000000000000000000000000000000000000000000606482015260840161078f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081208054916111d7836127a4565b919050558914611269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f476561723a3a64656c656761746542795369673a20696e76616c6964206e6f6e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161078f565b874211156112f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f476561723a3a64656c656761746542795369673a207369676e6174757265206560448201527f7870697265640000000000000000000000000000000000000000000000000000606482015260840161078f565b611303818b611e9c565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561134d57506bffffffffffffffffffffffff611372565b61136f8660405180606001604052806024815260200161291c60249139611a15565b90505b604080518082018252600781527f47656172626f780000000000000000000000000000000000000000000000000060209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f028ef9f797075f74ac647c65fde04fb0f128c2d59fd40f45732269917642fd4681840152466060820152306080808301919091528351808303909101815260a0909101835280519082012073ffffffffffffffffffffffffffffffffffffffff8b166000908152600590925291812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c919086611472836127a4565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001209050600082826040516020016115199291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff8b169284019290925260608301899052608083018890529092509060019060a0016020604051602081039080840390855afa1580156115a2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a7065726d69743a20696e76616c6964207369676e617475726500604482015260640161078f565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f476561723a3a7065726d69743a20756e617574686f72697a6564000000000000604482015260640161078f565b88421115611749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a7065726d69743a207369676e6174757265206578706972656400604482015260640161078f565b846000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161186491906bffffffffffffffffffffffff91909116815260200190565b60405180910390a3505050505050505050505050565b600654610100900473ffffffffffffffffffffffffffffffffffffffff163314611900576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476561723a3a63616c6c6572206973206e6f7420746865206d616e6167657200604482015260640161078f565b73ffffffffffffffffffffffffffffffffffffffff811661197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5a65726f2061646472657373206973206e6f7420616c6c6f7765640000000000604482015260640161078f565b60065460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6000816c010000000000000000000000008410611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f91906124a3565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611ac2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f91906124a3565b50611acd83856127dd565b949350505050565b60065460ff1680611b025750600654610100900473ffffffffffffffffffffffffffffffffffffffff1633145b80611b24575060075473ffffffffffffffffffffffffffffffffffffffff1633145b611b8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f476561723a3a7472616e73666572732061726520666f7262696464656e000000604482015260640161078f565b73ffffffffffffffffffffffffffffffffffffffff8316611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f476561723a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260448201527f616e736665722066726f6d20746865207a65726f206164647265737300000000606482015260840161078f565b73ffffffffffffffffffffffffffffffffffffffff8216611cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f476561723a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260448201527f616e7366657220746f20746865207a65726f2061646472657373000000000000606482015260840161078f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020908152604091829020548251606081019093526036808452611d2d936bffffffffffffffffffffffff90921692859291906129b190830139611a67565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff968716179055928616825290829020548251606081019093526030808452611dbf949190911692859290919061287790830139611f50565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff968716179055905193851684529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260026020526040808220548584168352912054611e9792918216911683611fc1565b505050565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260026020818152604080842080546001845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611f4a828483611fc1565b50505050565b600080611f5d8486612802565b9050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390611fb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f91906124a3565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561200b57506000816bffffffffffffffffffffffff16115b15611e975773ffffffffffffffffffffffffffffffffffffffff8316156120fd5773ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081205463ffffffff1690816120655760006120c4565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260036020526040812090612096600185612735565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b905060006120eb82856040518060600160405280602881526020016128cd60289139611a67565b90506120f9868484846121e2565b5050505b73ffffffffffffffffffffffffffffffffffffffff821615611e975773ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081205463ffffffff1690816121525760006121b1565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812090612183600185612735565b63ffffffff16815260208101919091526040016000205464010000000090046bffffffffffffffffffffffff165b905060006121d882856040518060600160405280602781526020016128f560279139611f50565b9050611308858484845b60006122064360405180606001604052806034815260200161294060349139612465565b905060008463ffffffff1611801561226d575073ffffffffffffffffffffffffffffffffffffffff8516600090815260036020526040812063ffffffff831691612251600188612735565b63ffffffff908116825260208201929092526040016000205416145b156123035773ffffffffffffffffffffffffffffffffffffffff8516600090815260036020526040812083916122a4600188612735565b63ffffffff168152602081019190915260400160002080546bffffffffffffffffffffffff92909216640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9092169190911790556123fe565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000908152600382528681208b8616825290915294909420925183549451909116640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169116179190911790556123a5846001612832565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911790555b604080516bffffffffffffffffffffffff80861682528416602082015273ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000816401000000008410611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f91905b600060208083528351808285015260005b818110156124d0578581018301518582016040015282016124b4565b818111156124e2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461253a57600080fd5b919050565b6000806040838503121561255257600080fd5b61255b83612516565b946020939093013593505050565b60008060006060848603121561257e57600080fd5b61258784612516565b925061259560208501612516565b9150604084013590509250925092565b6000602082840312156125b757600080fd5b610ef382612516565b803560ff8116811461253a57600080fd5b60008060008060008060c087890312156125ea57600080fd5b6125f387612516565b9550602087013594506040870135935061260f606088016125c0565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561264457600080fd5b61264d88612516565b965061265b60208901612516565b95506040880135945060608801359350612677608089016125c0565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156126a657600080fd5b6126af83612516565b91506126bd60208401612516565b90509250929050565b600080604083850312156126d957600080fd5b6126e283612516565b9150602083013563ffffffff811681146126fb57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff8381169083168181101561275257612752612706565b039392505050565b600063ffffffff80841680612798577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127d6576127d6612706565b5060010190565b60006bffffffffffffffffffffffff8381169083168181101561275257612752612706565b60006bffffffffffffffffffffffff80831681851680830382111561282957612829612706565b01949350505050565b600063ffffffff8083168185168083038211156128295761282961270656fe476561723a3a617070726f76653a20616d6f756e7420657863656564732039362062697473476561723a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773476561723a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473476561723a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773476561723a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773476561723a3a7065726d69743a20616d6f756e7420657863656564732039362062697473476561723a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473476561723a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365476561723a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a26469706673582212201b84fd7789a35c022f692420863210a30e82d2405659f5a28275d433fa53467f64736f6c634300080a003360806040526016805460ff1916905534801561001a57600080fd5b506040516110a73803806110a7833981016040819052610039916100b6565b600080546001600160a01b038085166001600160a01b0319928316179092556003805492841692909116919091179055610080600a6b033b2e3c9fd0803ce80000006100e9565b60075550506b033b2e3c9fd0803ce800000060155561010b565b80516001600160a01b03811681146100b157600080fd5b919050565b600080604083850312156100c957600080fd5b6100d28361009a565b91506100e06020840161009a565b90509250929050565b60008261010657634e487b7160e01b600052601260045260246000fd5b500490565b610f8d8061011a6000396000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c806367c99d5811610191578063c5f956af116100e3578063dbcb313b11610097578063f11a648711610071578063f11a648714610320578063f3fdb15a146105f1578063fe14112d1461061157600080fd5b8063dbcb313b146105d6578063e941fa78146105df578063ef8d9603146105e857600080fd5b8063cb3905e1116100c8578063cb3905e1146105c4578063cf33d95514610320578063d0efe753146105cd57600080fd5b8063c5f956af14610588578063ca9505e4146105a857600080fd5b80639aa5d46211610145578063b6ac642a1161011f578063b6ac642a14610567578063bb04b19314610567578063bf28068b1461057557600080fd5b80639aa5d46214610544578063a4e8273e14610557578063b3554a0a1461055e57600080fd5b8063788c6bfe11610176578063788c6bfe146104ef5780638456cb591461050157806396df5dc01461053157600080fd5b806367c99d58146104de57806374375359146104e757600080fd5b806336dda7d51161024a5780634d778ad1116101fe57806354fd4d50116101d857806354fd4d50146104c05780635c975abb146104c8578063609ae317146104d557600080fd5b80634d778ad114610491578063532fe502146104a45780635427c938146104ad57600080fd5b80633f4ba83a1161022f5780633f4ba83a1461045257806345d31f9d1461047f5780634c19386c1461048857600080fd5b806336dda7d51461040f5780633e163df01461042f57600080fd5b80632495a599116102a157806329f3d3b61161028657806329f3d3b6146103b35780632a3354c9146103bc5780632e97ca21146103dc57600080fd5b80632495a599146103735780632954018c1461039357600080fd5b8063078c4781116102d2578063078c4781146103205780630fce70fb146103335780631e16e4fc1461033b57600080fd5b8063030dbb04146102ee57806305fe138b1461030a575b600080fd5b6102f760105481565b6040519081526020015b60405180910390f35b6102f7610318366004610ce8565b600092915050565b61033161032e366004610d14565b50565b005b6015546102f7565b61034e610349366004610d2f565b610618565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610301565b60035461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b60005461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f760095481565b600a5461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103ff6103ea366004610d14565b60066020526000908152604090205460ff1681565b6040519015158152602001610301565b60055461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103ff61043d366004610d14565b60146020526000908152604090205460ff1681565b610331601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6102f760075481565b6102f760015481565b6102f761049f366004610d2f565b61064f565b6102f760115481565b6102f76104bb366004610d2f565b61066d565b6102f7600181565b6016546103ff9060ff1681565b6102f760085481565b6102f7600d5481565b6102f7610685565b6b033b2e3c9fd0803ce80000006102f7565b610331601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61033161053f366004610d2f565b601555565b610331610552366004610d48565b505050565b60016102f7565b6102f7600e5481565b61033161032e366004610d2f565b610331610583366004610ce8565b61071d565b60135461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b6103316105b6366004610d7d565b600b92909255600c55600d55565b6102f7600c5481565b6102f7600b5481565b6102f760155481565b6102f7600f5481565b6102f760025481565b60125461034e9073ffffffffffffffffffffffffffffffffffffffff1681565b60006102f7565b6004818154811061062857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6000610667826b033b2e3c9fd0803ce800000061077a565b92915050565b6000610667826b033b2e3c9fd0803ce80000006108e9565b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190610da9565b905090565b6009829055600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155600354610776911682846109fe565b5050565b60408051808201909152600281527f4d330000000000000000000000000000000000000000000000000000000000006020820152600090826107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b60405180910390fd5b506000610800600284610e72565b90506b033b2e3c9fd0803ce8000000610839827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ead565b6108439190610e72565b8411156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b5082816108cd6b033b2e3c9fd0803ce800000087610ec4565b6108d79190610f01565b6108e19190610e72565b949350505050565b60008215806108f6575081155b1561090357506000610667565b8161091b60026b033b2e3c9fd0803ce8000000610e72565b610945907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ead565b61094f9190610e72565b8311156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b506b033b2e3c9fd0803ce80000006109d9600282610e72565b6109e38486610ec4565b6109ed9190610f01565b6109f79190610e72565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261055292869291600091610ac9918516908490610b73565b8051909150156105525780806020019051810190610ae79190610f19565b610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107e9565b60606108e1848460008585843b610be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107e9565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610c0f9190610f3b565b60006040518083038185875af1925050503d8060008114610c4c576040519150601f19603f3d011682016040523d82523d6000602084013e610c51565b606091505b5091509150610c61828286610c6c565b979650505050505050565b60608315610c7b5750816109f7565b825115610c8b5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99190610df2565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ce357600080fd5b919050565b60008060408385031215610cfb57600080fd5b82359150610d0b60208401610cbf565b90509250929050565b600060208284031215610d2657600080fd5b6109f782610cbf565b600060208284031215610d4157600080fd5b5035919050565b600080600060608486031215610d5d57600080fd5b83359250610d6d60208501610cbf565b9150604084013590509250925092565b600080600060608486031215610d9257600080fd5b505081359360208301359350604090920135919050565b600060208284031215610dbb57600080fd5b5051919050565b60005b83811015610ddd578181015183820152602001610dc5565b83811115610dec576000848401525b50505050565b6020815260008251806020840152610e11816040850160208701610dc2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082610ea8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015610ebf57610ebf610e43565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610efc57610efc610e43565b500290565b60008219821115610f1457610f14610e43565b500190565b600060208284031215610f2b57600080fd5b815180151581146109f757600080fd5b60008251610f4d818460208701610dc2565b919091019291505056fea26469706673582212204edb887d94928b3914f60ab48df0182da9eb30ddbb7021b164cc728b60a655d564736f6c634300080a00336101606040526000805462ff00001916620c00001790553480156200002357600080fd5b50604051620058e8380380620058e8833981016040819052620000469162000537565b806001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab919062000537565b6000805460ff191690556001600160a01b038116620000dd57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000142919062000537565b6001600160a01b03166080816001600160a01b031681525050506000816001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c3919062000537565b6001600160a01b03831661010081905260e081905260408051632495a59960e01b81529051929350600092632495a599916004808201926020929091908290030181865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000537565b6001600160a01b03811660c05290506200025a8162000472565b816001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000537565b6001600160a01b0316610120816001600160a01b031681525050816001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e919062000537565b6001600160a01b0316610140816001600160a01b031681525050816001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bd919062000537565b6001600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000537565b6001600160a01b031660a0525050600380546001600160a01b031916331790555062000588565b6001600160a01b03811660009081526006602052604090205415620004aa57604051632e5a5c7760e01b815260040160405180910390fd5b61010060055410620004cf57604051631cbbe18560e01b815260040160405180910390fd5b600580546001600160a01b0383166000818152600660209081526040808320600190951b948590558483526004909152812091909155825491929062000515836200055e565b91905055505050565b6001600160a01b03811681146200053457600080fd5b50565b6000602082840312156200054a57600080fd5b815162000557816200051e565b9392505050565b60006000198214156200058157634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e051610100516101205161014051615248620006a0600039600081816107e20152818161371001526137c501526000818161052f01526136780152600081816103d301528181610e5701528181610ebb015281816124ff0152818161265a01528181612aa101528181612b8c01528181612c4e01528181612d0d0152613b8f015260006105a401526000818161062701528181610d2201528181610db301528181610e0001528181610e3601528181610f3f0152818161203a01528181612b6b015281816130ee015281816134dc015281816135a90152613fe601526000818161081c01528181610fe101526124c20152600081816107a80152818161118401526122cb01526152486000f3fe608060405234801561001057600080fd5b50600436106103415760003560e01c8063830aa745116101bd578063a70bc542116100f9578063e75538c7116100a2578063f9aa028a1161007c578063f9aa028a1461089d578063fdd57645146108bd578063fe47cde7146108f3578063ff6875431461091357600080fd5b8063e75538c714610864578063e958b70414610877578063f67c5bd01461088a57600080fd5b8063db7ceb80116100d3578063db7ceb8014610817578063dc2b21c11461083e578063e1998cf91461085157600080fd5b8063a70bc542146107ca578063c5e10eef146107dd578063d48bfca71461080457600080fd5b806394cf073a116101665780639f5f86ae116101405780639f5f86ae146107745780639fd12b7714610787578063a366f49614610790578063a50cf2c8146107a357600080fd5b806394cf073a146106f557806395373018146107085780639af1d35a1461071b57600080fd5b80638991b2f1116101975780638991b2f1146106af5780638fe3f93f146106cf578063944ac59f146106e257600080fd5b8063830aa7451461066f5780638345f26e146106825780638456cb59146106a757600080fd5b8063458936f51161028c578063570a7af2116102355780636ce4074a1161020f5780636ce4074a146105ef5780636e98e5e41461060f5780636f307dc314610622578063783274381461064957600080fd5b8063570a7af21461059f5780635c975abb146105c6578063654a9eda146105dc57600080fd5b80635063524a116102665780635063524a1461055157806351e3f1601461058457806354fd4d501461059757600080fd5b8063458936f51461050e57806346fb371d146105175780634f0e0ef31461052a57600080fd5b80632630c12f116102ee5780633192195c116102c85780633192195c146104be5780633e8297ca146104e65780633f4ba83a1461050657600080fd5b80632630c12f1461045857806329df0b93146104845780632f7a18811461049757600080fd5b806316f0115b1161031f57806316f0115b146103ce578063172c48c7146103f55780632362a2d81461043757600080fd5b8063055ee9b5146103465780630d8f9cee146103a657806311ca4fc2146103bb575b600080fd5b61037c610354366004614a87565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6103b96103b4366004614aa4565b610949565b005b6103b96103c9366004614aa4565b610a76565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b610408610403366004614add565b610b4e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff90911660208301520161039d565b61044a610445366004614b13565b610b66565b60405190815260200161039d565b6001546a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661037c565b6103b9610492366004614a87565b6110be565b60005461037c906301000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6104d16104cc366004614a87565b611122565b6040805192835260208301919091520161039d565b61044a6104f4366004614a87565b60096020526000908152604090205481565b6103b9611156565b61044a60055481565b6103b9610525366004614b95565b611244565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b61056461055f366004614be6565b61149b565b60408051948552602085019390935291830152606082015260800161039d565b6103b9610592366004614aa4565b611602565b61044a600281565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff16604051901515815260200161039d565b6103b96105ea366004614c21565b611703565b6106026105fd366004614d40565b611bbb565b60405161039d9190614e5b565b6103b961061d366004614aa4565b611e8e565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b61065c610657366004614a87565b612036565b60405161ffff909116815260200161039d565b6103b961067d366004614b95565b61210f565b6000546106959062010000900460ff1681565b60405160ff909116815260200161039d565b6103b961229d565b61044a6106bd366004614a87565b60086020526000908152604090205481565b61037c6106dd366004614e6e565b612389565b6103b96106f0366004614ea5565b612718565b61044a610703366004614f0a565b612845565b6103b9610716366004614a87565b612e5a565b6001546040805161ffff808416825262010000840481166020830152640100000000840481169282019290925266010000000000008304821660608201526801000000000000000090920416608082015260a00161039d565b6103b9610782366004614a87565b612f85565b61044a60075481565b6103b961079e366004614add565b613045565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b96107d8366004614f4c565b61309b565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b9610812366004614a87565b613221565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b6103b961084c366004614f81565b61327b565b6103b961085f366004614aa4565b613306565b610408610872366004614add565b6134c9565b61037c610885366004614a87565b613541565b61044a610898366004614a87565b6135a5565b60035461037c9073ffffffffffffffffffffffffffffffffffffffff1681565b61037c6108cb366004614a87565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600c5461037c9073ffffffffffffffffffffffffffffffffffffffff1681565b61037c610921366004614a87565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561099b57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b156109d2576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615610a14576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610a4a828261362e565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314610ac7576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff9384166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff90911617905560018054919092166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909116179055565b600080610b5d6001841b6134c9565b91509150915091565b6000805460ff1615610bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff1615610c1b576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314610ca0576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cab89613541565b90506000806000806000610cbe86611122565b9094509050610ccf8c8e868461149b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152939b5093985090955093506000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190614fa4565b9050610d9b8887614fec565b610da6906001614fec565b811115610de657610de1877f00000000000000000000000000000000000000000000000000000000000000008d60018c8b870303038d61366e565b610e30565b610e3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168d8960018a8d01869003016138c0565b610e7e877f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089600061366e565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ca9505e490606401600060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b50505050505050506001841115610f6757610f67837f00000000000000000000000000000000000000000000000000000000000000008d87600061366e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902054861916610f9c8489888461395b565b6040517f89b77b3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f000000000000000000000000000000000000000000000000000000000000000016906389b77b3e90602401600060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff909c16600090815260026020526040812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550929a9950505050505050505050565b6000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314611116576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111f81613a35565b50565b60008060008061113185613aa6565b91955092509050816111438286615004565b61114d9190615041565b92505050915091565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa1580156111e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611204919061507c565b61123a576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611242613c24565b565b60005460ff16156112b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156112f3576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff9081169084161480159061137457506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b80156113985750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b806113b7575073ffffffffffffffffffffffffffffffffffffffff8316155b156113ee576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113f7826135a5565b61142d576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061143885613541565b9050611448838583856000613d05565b61146c5761145b83858360006001613d05565b5061146a838583856001613d05565b505b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6001546000908190819081906127109061ffff166114b98888615099565b6114c39190615004565b6114cd9190615041565b6114d79086614fec565b935060018760028111156114ed576114ed6150b0565b1415611587576001546000906127109061151390640100000000900461ffff168b615004565b61151d9190615041565b6001549091506127109061153b9062010000900461ffff168b615004565b6115459190615041565b61154f9086614fec565b94508481111561156657600185820303935061156a565b8094505b85811061157b578585039250611581565b84860391505b506115f7565b600287600281111561159b5761159b6150b0565b14156115f157600154600090612710906115c59068010000000000000000900461ffff168b615004565b6115cf9190615041565b6001549091506127109061153b906601000000000000900461ffff168b615004565b84840391505b945094509450949050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561165457506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561168b576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156116cd576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610a4a8282613ea6565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561175557506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561178c576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156117ce576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556118048584613ea6565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908616906370a0823190602401602060405180830381865afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190614fa4565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918616906370a0823190602401602060405180830381865afa15801561190a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192e9190614fa4565b60015490915060009081906a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16635cecbd0e61196c8689615099565b8a6119778988615099565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301528a1660648201526084016040805180830381865afa1580156119f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1791906150df565b9150915060018411611a2d57611a2d898961362e565b611a3687612036565b611a449061ffff1682615004565b9050611a4f88612036565b611a5d9061ffff1683615004565b9150818110611a7857611a6f89613a35565b5050505061146c565b73ffffffffffffffffffffffffffffffffffffffff891660009081526009602052604081205483611ab56b033b2e3c9fd0803ce800000085615004565b611abf9190615041565b611ad5906b033b2e3c9fd0803ce8000000615099565b611adf9190614fec565b60015490915061271090611b0a906b033b2e3c9fd0803ce80000009062010000900461ffff16615004565b611b149190615041565b8111611b555773ffffffffffffffffffffffffffffffffffffffff8a166000908152600960205260409020819055611b4b8a613a35565b505050505061146c565b611b5e8a613f56565b50505073ffffffffffffffffffffffffffffffffffffffff871660009081526009602052604090206001905550505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6060611bc960005460ff1690565b15611c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff1615611c72576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416141580611ce7575073ffffffffffffffffffffffffffffffffffffffff8316155b15611d3d57600c5473ffffffffffffffffffffffffffffffffffffffff163314611d3d576040517f5d2e3a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d4885613541565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a36040517f1cff79cd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631cff79cd90611df89087908790600401615103565b6000604051808303816000875af1158015611e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611e5d9190810190615132565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314611edf576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615611f4f5773ffffffffffffffffffffffffffffffffffffffff8281166000908152600a6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b73ffffffffffffffffffffffffffffffffffffffff811615611fbf5773ffffffffffffffffffffffffffffffffffffffff8181166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169184169190911790555b73ffffffffffffffffffffffffffffffffffffffff811673cccccccccccccccccccccccccccccccccccccccc141561203257600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ba5750506001547e01000000000000000000000000000000000000000000000000000000000000900461ffff1690565b60006120c5836135a5565b9050806120fe576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612107816134c9565b949350505050565b60005460ff161561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156121be576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314612243576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61224d8383613ea6565b61226f73ffffffffffffffffffffffffffffffffffffffff83168585846138c0565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015612327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234b919061507c565b612381576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112426142d4565b6000805460ff16156123f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff1615612439576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146124be576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166321d18456857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258c9190614fa4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af11580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b91906151a0565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80831660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050506126c28382614394565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206001905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612769576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff97851662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931694909816939093171794909416949094179190911716919091179055565b6000805460ff16156128b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156128f5576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461297a576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600061298887613aa6565b925092509250846129a25761299d8684615099565b6129ac565b6129ac8684614fec565b935060008515612b045769021e19e0c9bab24000008510612a15576129d583603689901c615004565b6129e3603686901c84615004565b6129ed9190614fec565b603686901c6129fc8585615004565b612a069190615004565b612a109190615041565b612a52565b612a1f8388615004565b612a298584615004565b612a339190614fec565b85612a3e8585615004565b612a489190615004565b612a529190615041565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff8a811660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b158015612ae757600080fd5b505af1158015612afb573d6000803e3d6000fd5b50505050612d9f565b60008484612b128583615004565b612b1c9190615041565b612b269190615099565b60015490915060009061271090612b419061ffff1684615004565b612b4b9190615041565b905073ffffffffffffffffffffffffffffffffffffffff8a1663d1660f997f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612bb6878f614fec565b612bc09190614fec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b158015612c3457600080fd5b505af1158015612c48573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca9505e4838b612c949190614fec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526024810184905260006044820152606401600060405180830381600087803b158015612cf357600080fd5b505af1158015612d07573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9a9190614fa4565b925050505b6040517f16128211000000000000000000000000000000000000000000000000000000008152600481018690526024810182905273ffffffffffffffffffffffffffffffffffffffff891690631612821190604401600060405180830381600087803b158015612e0e57600080fd5b505af1158015612e22573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055509498975050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015612eac57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15612ee3576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615612f25576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055612f5a81613f56565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314612fd6576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff163314613096576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600755565b60035473ffffffffffffffffffffffffffffffffffffffff1633146130ec576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613193576001805461ffff83167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790555050565b600061319e836135a5565b9050806131d7576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1675ffff000000000000000000000000000000000000000060a084901b161790555050565b60035473ffffffffffffffffffffffffffffffffffffffff163314613272576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111f81614467565b60035473ffffffffffffffffffffffffffffffffffffffff1633146132cc576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460ff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60005460ff1615613373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600054610100900460ff16156133b5576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461343a576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344583613541565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055905061349c8282614394565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b60008082600114156135275750506001547f0000000000000000000000000000000000000000000000000000000000000000927e0100000000000000000000000000000000000000000000000000000000000090910461ffff169150565b50506000908152600460205260409020549060a082901c90565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526002602052604090205416806135a0576040517fb5ba4c4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146136255773ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040902054613628565b60015b92915050565b6000613639826135a5565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260086020526040902080549319939093169092555050565b8080156136c657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613828576040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b15801561376357600080fd5b505af1158015613777573d6000803e3d6000fd5b50506040517f5869dba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169250635869dba89150604401600060405180830381600087803b15801561380b57600080fd5b505af115801561381f573d6000803e3d6000fd5b505050506138b9565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b1580156138a057600080fd5b505af11580156138b4573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261395590859061455b565b50505050565b60025b8181116138b95781811615613a2d576000613978826134c9565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918316906370a0823190602401602060405180830381865afa1580156139eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0f9190614fa4565b90506002811115613a2a57613a2a878388600185038961366e565b50505b60011b61395e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205490613a6582614667565b60005490915062010000900460ff16811115613aa1576000613a86836146a7565b613a91906001614fec565b905061395584848460008561470b565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1a9190614fa4565b92508373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8b9190614fa4565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1c9190614fa4565b929491935050565b60005460ff16613c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610bd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291517f1cff79cd000000000000000000000000000000000000000000000000000000008152600092861691631cff79cd91613dc6918a91600401615103565b6000604051808303816000875af1925050508015613e2457506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613e219190810190615132565b60015b613e2d57613e61565b80511580613e50575080806020019051810190613e4a919061507c565b15156001145b15613e5f576001915050613e9d565b505b8115613e99576040517f76e3e29c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060005b95945050505050565b6000613eb1826135a5565b9050801580613ec35750600754811615155b15613efa576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020548116613aa15773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805482179055505050565b60015473ffffffffffffffffffffffffffffffffffffffff8281166000908152600860205260408120546a010000000000000000000090930490911691908080613f9f86611122565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526127108202600482015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166024830152919350908716915063f9a6503090604401602060405180830381865afa15801561403a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405e9190614fa4565b9250614069846146a7565b6001019150506000806000805b848110156142a157801561408f5760018186031b614092565b60015b935086841615614299576000806140a8866134c9565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529294509092506000918416906370a0823190602401602060405180830381865afa15801561411d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141419190614fa4565b9050600181111561428c576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff841691908d169063f9a6503090604401602060405180830381865afa1580156141c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ea9190614fa4565b6141f49190615004565b6141fe9087614fec565b95508886106142875760006142128b614667565b60005490915062010000900460ff16811115614249576142448d8c836001891561423e57898e0361470b565b8d61470b565b614278565b85156142785773ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602052604090208b90555b50505050505050505050505050565b614295565b98861898600194505b5050505b600101614076565b506040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff1615614341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bd0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cdb3390565b73ffffffffffffffffffffffffffffffffffffffff821615806143dd575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615155b15614414576040517f9e59609e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040902054156144c4576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010060055410614501576040517f1cbbe18500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff83166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290614552836151bd565b91905055505050565b60006145bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166148799092919063ffffffff16565b805190915015613aa157808060200190518101906145db919061507c565b613aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610bd0565b60008060005b6101008110156146a0576001811b91508382161561468c578260010192505b838210614698576146a0565b60010161466d565b5050919050565b600081600114156146ba57506000919050565b61010060015b60016146cc8284614fec565b901c92506001831b848116158015906146e75750600185851c145b156146f257506146a0565b84811061470157839250614705565b8391505b506146c0565b815b81811015614846576001811b8581161561483d57600061472c826134c9565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529192506000918316906370a0823190602401602060405180830381865afa15801561479f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147c39190614fa4565b90506001811161483a57600054978318977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9097019660ff6201000090910416871161483a5750505073ffffffffffffffffffffffffffffffffffffffff86166000908152600860205260409020859055506138b9565b50505b5060010161470d565b506040517f53275fcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606148888484600085614892565b90505b9392505050565b606082471015614924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610bd0565b843b61498c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bd0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516149b591906151f6565b60006040518083038185875af1925050503d80600081146149f2576040519150601f19603f3d011682016040523d82523d6000602084013e6149f7565b606091505b5091509150614a07828286614a12565b979650505050505050565b60608315614a2157508161488b565b825115614a315782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd09190614e5b565b73ffffffffffffffffffffffffffffffffffffffff8116811461111f57600080fd5b600060208284031215614a9957600080fd5b813561488b81614a65565b60008060408385031215614ab757600080fd5b8235614ac281614a65565b91506020830135614ad281614a65565b809150509250929050565b600060208284031215614aef57600080fd5b5035919050565b8035600381106135a057600080fd5b801515811461111f57600080fd5b600080600080600080600060e0888a031215614b2e57600080fd5b8735614b3981614a65565b9650614b4760208901614af6565b9550604088013594506060880135614b5e81614a65565b93506080880135614b6e81614a65565b925060a0880135915060c0880135614b8581614b05565b8091505092959891949750929550565b60008060008060808587031215614bab57600080fd5b8435614bb681614a65565b93506020850135614bc681614a65565b92506040850135614bd681614a65565b9396929550929360600135925050565b60008060008060808587031215614bfc57600080fd5b84359350614c0c60208601614af6565b93969395505050506040820135916060013590565b600080600080600060a08688031215614c3957600080fd5b8535614c4481614a65565b94506020860135614c5481614a65565b93506040860135614c6481614a65565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614cf257614cf2614c7c565b604052919050565b600067ffffffffffffffff821115614d1457614d14614c7c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080600060608486031215614d5557600080fd5b8335614d6081614a65565b92506020840135614d7081614a65565b9150604084013567ffffffffffffffff811115614d8c57600080fd5b8401601f81018613614d9d57600080fd5b8035614db0614dab82614cfa565b614cab565b818152876020838501011115614dc557600080fd5b816020840160208301376000602083830101528093505050509250925092565b60005b83811015614e00578181015183820152602001614de8565b838111156139555750506000910152565b60008151808452614e29816020860160208601614de5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061488b6020830184614e11565b60008060408385031215614e8157600080fd5b823591506020830135614ad281614a65565b803561ffff811681146135a057600080fd5b600080600080600060a08688031215614ebd57600080fd5b614ec686614e93565b9450614ed460208701614e93565b9350614ee260408701614e93565b9250614ef060608701614e93565b9150614efe60808701614e93565b90509295509295909350565b600080600060608486031215614f1f57600080fd5b8335614f2a81614a65565b9250602084013591506040840135614f4181614b05565b809150509250925092565b60008060408385031215614f5f57600080fd5b8235614f6a81614a65565b9150614f7860208401614e93565b90509250929050565b600060208284031215614f9357600080fd5b813560ff8116811461488b57600080fd5b600060208284031215614fb657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614fff57614fff614fbd565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561503c5761503c614fbd565b500290565b600082615077577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561508e57600080fd5b815161488b81614b05565b6000828210156150ab576150ab614fbd565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080604083850312156150f257600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006148886040830184614e11565b60006020828403121561514457600080fd5b815167ffffffffffffffff81111561515b57600080fd5b8201601f8101841361516c57600080fd5b805161517a614dab82614cfa565b81815285602083850101111561518f57600080fd5b613e9d826020830160208601614de5565b6000602082840312156151b257600080fd5b815161488b81614a65565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151ef576151ef614fbd565b5060010190565b60008251615208818460208701614de5565b919091019291505056fea26469706673582212209d39bb9d4972b515acdad1ffb757acd15e103ca6ee762f88a6382b36243734ba64736f6c634300080a00336101606040526000805462ff00001916620c00001790553480156200002357600080fd5b5060405162005c8438038062005c8483398101604081905262000046916200053a565b80806001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000086573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ac91906200053a565b6000805460ff191690556001600160a01b038116620000de57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014391906200053a565b6001600160a01b03166080816001600160a01b031681525050506000816001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c491906200053a565b6001600160a01b03831661010081905260e081905260408051632495a59960e01b81529051929350600092632495a599916004808201926020929091908290030181865afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024191906200053a565b6001600160a01b03811660c05290506200025b8162000475565b816001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c091906200053a565b6001600160a01b0316610120816001600160a01b031681525050816001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f91906200053a565b6001600160a01b0316610140816001600160a01b031681525050816001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000398573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003be91906200053a565b6001600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c91906200053a565b6001600160a01b031660a0525050600380546001600160a01b03191633179055506200058b9050565b6001600160a01b03811660009081526006602052604090205415620004ad57604051632e5a5c7760e01b815260040160405180910390fd5b61010060055410620004d257604051631cbbe18560e01b815260040160405180910390fd5b600580546001600160a01b0383166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290620005188362000561565b91905055505050565b6001600160a01b03811681146200053757600080fd5b50565b6000602082840312156200054d57600080fd5b81516200055a8162000521565b9392505050565b60006000198214156200058457634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051610140516155e1620006a3600039600081816109040152818161397e0152613a330152600081816105e001526138e601526000818161043e01528181610fda0152818161103e01528181612680015281816127db01528181612c2201528181612d0d01528181612dcf01528181612e8e0152613df6015260006106470152600081816106ca01528181610ea501528181610f3601528181610f8301528181610fb9015281816110c2015281816121bb01528181612cec015281816132800152818161374b01528181613818015261424d01526000818161095301528181611164015261264301526000818161084b01528181611307015261244c01526155e16000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c8063830aa745116101e9578063b5b12cd71161010f578063e1998cf9116100ad578063f9aa028a1161007c578063f9aa028a146109d4578063fdd57645146109f4578063fe47cde714610a2a578063ff68754314610a4a57600080fd5b8063e1998cf914610988578063e75538c71461099b578063e958b704146109ae578063f67c5bd0146109c157600080fd5b8063ced342b5116100e9578063ced342b514610926578063d48bfca71461093b578063db7ceb801461094e578063dc2b21c11461097557600080fd5b8063b5b12cd714610893578063b7ac50c6146108c1578063c5e10eef146108ff57600080fd5b80639537301811610187578063a366f49611610156578063a366f49614610833578063a50cf2c814610846578063a64bec9e1461086d578063a70bc5421461088057600080fd5b806395373018146107ab5780639af1d35a146107be5780639f5f86ae146108175780639fd12b771461082a57600080fd5b80638991b2f1116101c35780638991b2f1146107525780638fe3f93f14610772578063944ac59f1461078557806394cf073a1461079857600080fd5b8063830aa745146107125780638345f26e146107255780638456cb591461074a57600080fd5b80633f4ba83a116102ce57806355aabafd1161026c5780636ce4074a1161023b5780636ce4074a146106925780636e98e5e4146106b25780636f307dc3146106c557806378327438146106ec57600080fd5b806355aabafd14610630578063570a7af2146106425780635c975abb14610669578063654a9eda1461067f57600080fd5b80634f0e0ef3116102a85780634f0e0ef3146105db5780635063524a1461060257806351e3f1601461061557806354fd4d501461062857600080fd5b80633f4ba83a146105b7578063458936f5146105bf57806346fb371d146105c857600080fd5b806322995f5d1161033b57806329df0b931161031557806329df0b93146105355780632f7a1881146105485780633192195c1461056f5780633e8297ca1461059757600080fd5b806322995f5d146104d55780632362a2d8146104e85780632630c12f1461050957600080fd5b806311ca4fc21161037757806311ca4fc21461042657806316f0115b14610439578063172c48c7146104605780631b0c8234146104a257600080fd5b8063055ee9b51461039e5780630d8f9cee146103fe5780630d92632d14610413575b600080fd5b6103d46103ac366004614cee565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61041161040c366004614d0b565b610a80565b005b610411610421366004614d52565b610bad565b610411610434366004614d0b565b610bc1565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b61047361046e366004614dba565b610c99565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff9091166020830152016103f5565b6104b56104b0366004614de2565b610cb1565b6040805194855260208501939093529183015260608201526080016103f5565b6104116104e3366004614e1d565b610cd7565b6104fb6104f6366004614e6e565b610ce9565b6040519081526020016103f5565b6001546a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff166103d4565b610411610543366004614cee565b611241565b6000546103d4906301000000900473ffffffffffffffffffffffffffffffffffffffff1681565b61058261057d366004614cee565b6112a5565b604080519283526020830191909152016103f5565b6104fb6105a5366004614cee565b60096020526000908152604090205481565b6104116112d9565b6104fb60055481565b6104116105d6366004614ef0565b6113c7565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104b5610610366004614de2565b61161e565b610411610623366004614d0b565b611783565b6104fb600281565b6104fb61063e366004614dba565b5490565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1660405190151581526020016103f5565b61041161068d366004614f31565b611884565b6106a56106a0366004615050565b611d3c565b6040516103f5919061516b565b6104116106c0366004614d0b565b61200f565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6106ff6106fa366004614cee565b6121b7565b60405161ffff90911681526020016103f5565b610411610720366004614ef0565b612290565b6000546107389062010000900460ff1681565b60405160ff90911681526020016103f5565b61041161241e565b6104fb610760366004614cee565b60086020526000908152604090205481565b6103d461078036600461517e565b61250a565b6104116107933660046151b5565b612899565b6104fb6107a636600461521a565b6129c6565b6104116107b9366004614cee565b612fdb565b6001546040805161ffff808416825262010000840481166020830152640100000000840481169282019290925266010000000000008304821660608201526801000000000000000090920416608082015260a0016103f5565b610411610825366004614cee565b613106565b6104fb60075481565b610411610841366004614dba565b6131c6565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104fb61087b366004614dba565b61321c565b61041161088e36600461525c565b61322d565b6108a66108a1366004614cee565b6133b3565b604080519384526020840192909252908201526060016103f5565b6104116108cf36600461525c565b73ffffffffffffffffffffffffffffffffffffffff909116600090815260096020526040902061ffff9091169055565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b61092e6133ce565b6040516103f59190615291565b610411610949366004614cee565b613490565b6103d47f000000000000000000000000000000000000000000000000000000000000000081565b6104116109833660046152eb565b6134ea565b610411610996366004614d0b565b613575565b6104736109a9366004614dba565b613738565b6103d46109bc366004614cee565b6137b0565b6104fb6109cf366004614cee565b613814565b6003546103d49073ffffffffffffffffffffffffffffffffffffffff1681565b6103d4610a02366004614cee565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600c546103d49073ffffffffffffffffffffffffffffffffffffffff1681565b6103d4610a58366004614cee565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015610ad257506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15610b09576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615610b4b576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610b81828261389c565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b610bba85858585856138dc565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c12576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff9384166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff90911617905560018054919092166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909116179055565b600080610ca86001841b613738565b91509150915091565b600080600080610cc38888888861161e565b93509350935093505b945094509450949050565b610ce384848484613b2d565b50505050565b6000805460ff1615610d5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff1615610d9e576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314610e23576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e2e896137b0565b90506000806000806000610e41866112a5565b9094509050610e528c8e868461161e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152939b5093985090955093506000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f12919061530e565b9050610f1e8887615356565b610f29906001615356565b811115610f6957610f64877f00000000000000000000000000000000000000000000000000000000000000008d60018c8b870303038d6138dc565b610fb3565b610fb373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168d8960018a8d0186900301613c07565b611001877f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008960006138dc565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ca9505e490606401600060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b505050505050505060018411156110ea576110ea837f00000000000000000000000000000000000000000000000000000000000000008d8760006138dc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205486191661111f84898884613b2d565b6040517f89b77b3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f000000000000000000000000000000000000000000000000000000000000000016906389b77b3e90602401600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff909c16600090815260026020526040812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550929a9950505050505050505050565b6000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314611299576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112a281613c9c565b50565b6000806000806112b485613d0d565b91955092509050816112c6828661536e565b6112d091906153ab565b92505050915091565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906153e6565b6113bd576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c5613e8b565b565b60005460ff1615611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615611476576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416148015906114f757506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b801561151b5750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b8061153a575073ffffffffffffffffffffffffffffffffffffffff8316155b15611571576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61157a82613814565b6115b0576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115bb856137b0565b90506115cb838583856000613f6c565b6115ef576115de83858360006001613f6c565b506115ed838583856001613f6c565b505b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6001546000908190819081906127109061ffff1661163c8888615403565b611646919061536e565b61165091906153ab565b61165a9086615356565b935060018760028111156116705761167061541a565b141561170a576001546000906127109061169690640100000000900461ffff168b61536e565b6116a091906153ab565b600154909150612710906116be9062010000900461ffff168b61536e565b6116c891906153ab565b6116d29086615356565b9450848111156116e95760018582030393506116ed565b8094505b8581106116fe578585039250611704565b84860391505b50610ccc565b600287600281111561171e5761171e61541a565b141561177457600154600090612710906117489068010000000000000000900461ffff168b61536e565b61175291906153ab565b600154909150612710906116be906601000000000000900461ffff168b61536e565b92979196505091860393509150565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156117d557506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561180c576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161561184e576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610b81828261410d565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156118d657506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b1561190d576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161561194f576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055611985858461410d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908616906370a0823190602401602060405180830381865afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a19919061530e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918616906370a0823190602401602060405180830381865afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf919061530e565b60015490915060009081906a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16635cecbd0e611aed8689615403565b8a611af88988615403565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301528a1660648201526084016040805180830381865afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b989190615449565b9150915060018411611bae57611bae898961389c565b611bb7876121b7565b611bc59061ffff168261536e565b9050611bd0886121b7565b611bde9061ffff168361536e565b9150818110611bf957611bf089613c9c565b505050506115ef565b73ffffffffffffffffffffffffffffffffffffffff891660009081526009602052604081205483611c366b033b2e3c9fd0803ce80000008561536e565b611c4091906153ab565b611c56906b033b2e3c9fd0803ce8000000615403565b611c609190615356565b60015490915061271090611c8b906b033b2e3c9fd0803ce80000009062010000900461ffff1661536e565b611c9591906153ab565b8111611cd65773ffffffffffffffffffffffffffffffffffffffff8a166000908152600960205260409020819055611ccc8a613c9c565b50505050506115ef565b611cdf8a6141bd565b50505073ffffffffffffffffffffffffffffffffffffffff871660009081526009602052604090206001905550505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6060611d4a60005460ff1690565b15611db1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615611df3576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416141580611e68575073ffffffffffffffffffffffffffffffffffffffff8316155b15611ebe57600c5473ffffffffffffffffffffffffffffffffffffffff163314611ebe576040517f5d2e3a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ec9856137b0565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a36040517f1cff79cd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631cff79cd90611f79908790879060040161546d565b6000604051808303816000875af1158015611f98573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611fde919081019061549c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612060576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216156120d05773ffffffffffffffffffffffffffffffffffffffff8281166000908152600a6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b73ffffffffffffffffffffffffffffffffffffffff8116156121405773ffffffffffffffffffffffffffffffffffffffff8181166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169184169190911790555b73ffffffffffffffffffffffffffffffffffffffff811673cccccccccccccccccccccccccccccccccccccccc14156121b357600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561223b5750506001547e01000000000000000000000000000000000000000000000000000000000000900461ffff1690565b600061224683613814565b90508061227f576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61228881613738565b949350505050565b60005460ff16156122fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff161561233f576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146123c4576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123ce838361410d565b6123f073ffffffffffffffffffffffffffffffffffffffff8316858584613c07565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa1580156124a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cc91906153e6565b612502576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c561453b565b6000805460ff1615612578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff16156125ba576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff16331461263f576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166321d18456857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270d919061530e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af1158015612768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278c919061550a565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80831660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b15801561282157600080fd5b505af1158015612835573d6000803e3d6000fd5b5050505061284383826145fb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206001905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146128ea576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff97851662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931694909816939093171794909416949094179190911716919091179055565b6000805460ff1615612a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615612a76576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff163314612afb576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000612b0987613d0d565b92509250925084612b2357612b1e8684615403565b612b2d565b612b2d8684615356565b935060008515612c855769021e19e0c9bab24000008510612b9657612b5683603689901c61536e565b612b64603686901c8461536e565b612b6e9190615356565b603686901c612b7d858561536e565b612b87919061536e565b612b9191906153ab565b612bd3565b612ba0838861536e565b612baa858461536e565b612bb49190615356565b85612bbf858561536e565b612bc9919061536e565b612bd391906153ab565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff8a811660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b50505050612f20565b60008484612c93858361536e565b612c9d91906153ab565b612ca79190615403565b60015490915060009061271090612cc29061ffff168461536e565b612ccc91906153ab565b905073ffffffffffffffffffffffffffffffffffffffff8a1663d1660f997f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612d37878f615356565b612d419190615356565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b158015612db557600080fd5b505af1158015612dc9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca9505e4838b612e159190615356565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526024810184905260006044820152606401600060405180830381600087803b158015612e7457600080fd5b505af1158015612e88573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1b919061530e565b925050505b6040517f16128211000000000000000000000000000000000000000000000000000000008152600481018690526024810182905273ffffffffffffffffffffffffffffffffffffffff891690631612821190604401600060405180830381600087803b158015612f8f57600080fd5b505af1158015612fa3573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055509498975050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1615801561302d57506000546301000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15613064576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16156130a6576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556130db816141bd565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff163314613157576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff163314613217576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600755565b6000613227826146ce565b92915050565b60035473ffffffffffffffffffffffffffffffffffffffff16331461327e576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613325576001805461ffff83167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790555050565b600061333083613814565b905080613369576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1675ffff000000000000000000000000000000000000000060a084901b161790555050565b60008060006133c184613d0d565b9250925092509193909250565b6005546060908067ffffffffffffffff8111156133ed576133ed614f8c565b604051908082528060200260200182016040528015613416578160200160208202803683370190505b50915060005b8181101561348b5761342d81610c99565b5083828151811061344057613440615527565b602002602001018173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050808061348390615556565b91505061341c565b505090565b60035473ffffffffffffffffffffffffffffffffffffffff1633146134e1576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112a281614739565b60035473ffffffffffffffffffffffffffffffffffffffff16331461353b576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460ff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60005460ff16156135e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600054610100900460ff1615613624576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617908190556301000000900473ffffffffffffffffffffffffffffffffffffffff1633146136a9576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006136b4836137b0565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055905061370b82826145fb565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b60008082600114156137965750506001547f0000000000000000000000000000000000000000000000000000000000000000927e0100000000000000000000000000000000000000000000000000000000000090910461ffff169150565b50506000908152600460205260409020549060a082901c90565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260026020526040902054168061380f576040517fb5ba4c4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146138945773ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040902054613227565b600192915050565b60006138a782613814565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260086020526040902080549319939093169092555050565b80801561393457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613a96576040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b1580156139d157600080fd5b505af11580156139e5573d6000803e3d6000fd5b50506040517f5869dba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169250635869dba89150604401600060405180830381600087803b158015613a7957600080fd5b505af1158015613a8d573d6000803e3d6000fd5b50505050610bba565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b158015613b0e57600080fd5b505af1158015613b22573d6000803e3d6000fd5b505050505050505050565b60025b818111610bba5781811615613bff576000613b4a82613738565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918316906370a0823190602401602060405180830381865afa158015613bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be1919061530e565b90506002811115613bfc57613bfc87838860018503896138dc565b50505b60011b613b30565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610ce390859061482d565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205490613ccc82614939565b60005490915062010000900460ff16811115613d08576000613ced836146ce565b613cf8906001615356565b9050610ce3848484600085614972565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d81919061530e565b92508373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df2919061530e565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e83919061530e565b929491935050565b60005460ff16613ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610d53565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291517f1cff79cd000000000000000000000000000000000000000000000000000000008152600092861691631cff79cd9161402d918a9160040161546d565b6000604051808303816000875af192505050801561408b57506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052614088919081019061549c565b60015b614094576140c8565b805115806140b75750808060200190518101906140b191906153e6565b15156001145b156140c6576001915050614104565b505b8115614100576040517f76e3e29c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060005b95945050505050565b600061411882613814565b905080158061412a5750600754811615155b15614161576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020548116613d085773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805482179055505050565b60015473ffffffffffffffffffffffffffffffffffffffff8281166000908152600860205260408120546a010000000000000000000090930490911691908080614206866112a5565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526127108202600482015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166024830152919350908716915063f9a6503090604401602060405180830381865afa1580156142a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c5919061530e565b92506142d0846146ce565b6001019150506000806000805b848110156145085780156142f65760018186031b6142f9565b60015b9350868416156145005760008061430f86613738565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529294509092506000918416906370a0823190602401602060405180830381865afa158015614384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a8919061530e565b905060018111156144f3576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff841691908d169063f9a6503090604401602060405180830381865afa15801561442d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614451919061530e565b61445b919061536e565b6144659087615356565b95508886106144ee5760006144798b614939565b60005490915062010000900460ff168111156144b0576144ab8d8c83600189156144a557898e03614972565b8d614972565b6144df565b85156144df5773ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602052604090208b90555b50505050505050505050505050565b6144fc565b98861898600194505b5050505b6001016142dd565b506040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff16156145a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d53565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613f423390565b73ffffffffffffffffffffffffffffffffffffffff82161580614644575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615155b1561467b576040517f9e59609e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600081600114156146e157506000919050565b61010060015b60016146f38284615356565b901c92506001831b8481161580159061470e5750600185851c145b156147195750614732565b8481106147285783925061472c565b8391505b506146e7565b5050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090205415614796576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610100600554106147d3576040517f1cbbe18500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff83166000818152600660209081526040808320600190951b948590558483526004909152812091909155825491929061482483615556565b91905055505050565b600061488f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16614ae09092919063ffffffff16565b805190915015613d0857808060200190518101906148ad91906153e6565b613d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d53565b60008060005b610100811015614732576001811b91508382161561495e578260010192505b83821061496a57614732565b60010161493f565b815b81811015614aad576001811b85811615614aa457600061499382613738565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529192506000918316906370a0823190602401602060405180830381865afa158015614a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a2a919061530e565b905060018111614aa157600054978318977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9097019660ff62010000909104168711614aa15750505073ffffffffffffffffffffffffffffffffffffffff8616600090815260086020526040902085905550610bba565b50505b50600101614974565b506040517f53275fcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060614aef8484600085614af9565b90505b9392505050565b606082471015614b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d53565b843b614bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d53565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051614c1c919061558f565b60006040518083038185875af1925050503d8060008114614c59576040519150601f19603f3d011682016040523d82523d6000602084013e614c5e565b606091505b5091509150614c6e828286614c79565b979650505050505050565b60608315614c88575081614af2565b825115614c985782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d53919061516b565b73ffffffffffffffffffffffffffffffffffffffff811681146112a257600080fd5b600060208284031215614d0057600080fd5b8135614af281614ccc565b60008060408385031215614d1e57600080fd5b8235614d2981614ccc565b91506020830135614d3981614ccc565b809150509250929050565b80151581146112a257600080fd5b600080600080600060a08688031215614d6a57600080fd5b8535614d7581614ccc565b94506020860135614d8581614ccc565b93506040860135614d9581614ccc565b9250606086013591506080860135614dac81614d44565b809150509295509295909350565b600060208284031215614dcc57600080fd5b5035919050565b80356003811061380f57600080fd5b60008060008060808587031215614df857600080fd5b84359350614e0860208601614dd3565b93969395505050506040820135916060013590565b60008060008060808587031215614e3357600080fd5b8435614e3e81614ccc565b93506020850135614e4e81614ccc565b92506040850135614e5e81614d44565b9396929550929360600135925050565b600080600080600080600060e0888a031215614e8957600080fd5b8735614e9481614ccc565b9650614ea260208901614dd3565b9550604088013594506060880135614eb981614ccc565b93506080880135614ec981614ccc565b925060a0880135915060c0880135614ee081614d44565b8091505092959891949750929550565b60008060008060808587031215614f0657600080fd5b8435614f1181614ccc565b93506020850135614f2181614ccc565b92506040850135614e5e81614ccc565b600080600080600060a08688031215614f4957600080fd5b8535614f5481614ccc565b94506020860135614f6481614ccc565b93506040860135614f7481614ccc565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561500257615002614f8c565b604052919050565b600067ffffffffffffffff82111561502457615024614f8c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561506557600080fd5b833561507081614ccc565b9250602084013561508081614ccc565b9150604084013567ffffffffffffffff81111561509c57600080fd5b8401601f810186136150ad57600080fd5b80356150c06150bb8261500a565b614fbb565b8181528760208385010111156150d557600080fd5b816020840160208301376000602083830101528093505050509250925092565b60005b838110156151105781810151838201526020016150f8565b83811115610ce35750506000910152565b600081518084526151398160208601602086016150f5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000614af26020830184615121565b6000806040838503121561519157600080fd5b823591506020830135614d3981614ccc565b803561ffff8116811461380f57600080fd5b600080600080600060a086880312156151cd57600080fd5b6151d6866151a3565b94506151e4602087016151a3565b93506151f2604087016151a3565b9250615200606087016151a3565b915061520e608087016151a3565b90509295509295909350565b60008060006060848603121561522f57600080fd5b833561523a81614ccc565b925060208401359150604084013561525181614d44565b809150509250925092565b6000806040838503121561526f57600080fd5b823561527a81614ccc565b9150615288602084016151a3565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156152df57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016152ad565b50909695505050505050565b6000602082840312156152fd57600080fd5b813560ff81168114614af257600080fd5b60006020828403121561532057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561536957615369615327565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a6576153a6615327565b500290565b6000826153e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156153f857600080fd5b8151614af281614d44565b60008282101561541557615415615327565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000806040838503121561545c57600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000614aef6040830184615121565b6000602082840312156154ae57600080fd5b815167ffffffffffffffff8111156154c557600080fd5b8201601f810184136154d657600080fd5b80516154e46150bb8261500a565b8181528560208385010111156154f957600080fd5b6141048260208301602086016150f5565b60006020828403121561551c57600080fd5b8151614af281614ccc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561558857615588615327565b5060010190565b600082516155a18184602087016150f5565b919091019291505056fea26469706673582212209a61b2b1203f2f5e63c5e3bdfef5184c4cbbb88b745f884592632c989b91297064736f6c634300080a00339c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c860a06040523480156200001157600080fd5b506040516200175838038062001758833981016040819052620000349162000269565b8251839083906200004d906003906020850190620000f6565b50805162000063906004906020840190620000f6565b505050620000806200007a620000a060201b60201c565b620000a4565b60ff166080525050600680546001600160a01b031916331790556200032b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010490620002ee565b90600052602060002090601f01602090048101928262000128576000855562000173565b82601f106200014357805160ff191683800117855562000173565b8280016001018555821562000173579182015b828111156200017357825182559160200191906001019062000156565b506200018192915062000185565b5090565b5b8082111562000181576000815560010162000186565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c457600080fd5b81516001600160401b0380821115620001e157620001e16200019c565b604051601f8301601f19908116603f011681019082821181831017156200020c576200020c6200019c565b816040528381526020925086838588010111156200022957600080fd5b600091505b838210156200024d57858201830151818301840152908201906200022e565b838211156200025f5760008385830101525b9695505050505050565b6000806000606084860312156200027f57600080fd5b83516001600160401b03808211156200029757600080fd5b620002a587838801620001b2565b94506020860151915080821115620002bc57600080fd5b50620002cb86828701620001b2565b925050604084015160ff81168114620002e357600080fd5b809150509250925092565b600181811c908216806200030357607f821691505b602082108114156200032557634e487b7160e01b600052602260045260246000fd5b50919050565b60805161141162000347600039600061025f01526114116000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd5780639dc29fac11610081578063a9059cbb11610066578063a9059cbb1461034c578063dd62ed3e1461035f578063f2fde38b146103a557600080fd5b80639dc29fac14610326578063a457c2d71461033957600080fd5b806379cc6790116100b257806379cc6790146102ed5780638da5cb5b1461030057806395d89b411461031e57600080fd5b806370a08231146102af578063715018a6146102e557600080fd5b806318160ddd11610124578063313ce56711610109578063313ce56714610258578063395093511461028957806340c10f191461029c57600080fd5b806318160ddd1461023357806323b872dd1461024557600080fd5b806306fdde03146101565780630754617214610174578063095ea7b3146101b95780631652e9fc146101dc575b600080fd5b61015e6103b8565b60405161016b91906111d2565b60405180910390f35b6006546101949073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6101cc6101c736600461126e565b61044a565b604051901515815260200161016b565b6102316101ea366004611298565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b005b6002545b60405190815260200161016b565b6101cc6102533660046112ba565b610460565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016b565b6101cc61029736600461126e565b61054b565b6101cc6102aa36600461126e565b610594565b6102376102bd366004611298565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102316106a3565b6101cc6102fb36600461126e565b610730565b60055473ffffffffffffffffffffffffffffffffffffffff16610194565b61015e6107be565b6101cc61033436600461126e565b6107cd565b6101cc61034736600461126e565b6107d9565b6101cc61035a36600461126e565b6108b1565b61023761036d3660046112f6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102316103b3366004611298565b6108be565b6060600380546103c790611329565b80601f01602080910402602001604051908101604052809291908181526020018280546103f390611329565b80156104405780601f1061041557610100808354040283529160200191610440565b820191906000526020600020905b81548152906001019060200180831161042357829003601f168201915b5050505050905090565b60006104573384846109ee565b50600192915050565b600061046d848484610ba2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61054085338584036109ee565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161045791859061058f9086906113ac565b6109ee565b60065460009073ffffffffffffffffffffffffffffffffffffffff163314610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b60065473ffffffffffffffffffffffffffffffffffffffff163314610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610e56565b60055473ffffffffffffffffffffffffffffffffffffffff163314610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b61072e6000610f76565b565b60065460009073ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d696e7465722063616c6c73206f6e6c79000000000000000000000000000000604482015260640161052a565b6104578383610fed565b6060600480546103c790611329565b60006104578383610fed565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548281101561089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161052a565b6108a733858584036109ee565b5060019392505050565b6000610457338484610ba2565b60055473ffffffffffffffffffffffffffffffffffffffff16331461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b73ffffffffffffffffffffffffffffffffffffffff81166109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161052a565b6109eb81610f76565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610de29084906113ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e4891815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052a565b8060026000828254610ee591906113ac565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f1f9084906113ac565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906111829084906113c4565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b95565b600060208083528351808285015260005b818110156111ff578581018301518582016040015282016111e3565b81811115611211576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461126957600080fd5b919050565b6000806040838503121561128157600080fd5b61128a83611245565b946020939093013593505050565b6000602082840312156112aa57600080fd5b6112b382611245565b9392505050565b6000806000606084860312156112cf57600080fd5b6112d884611245565b92506112e660208501611245565b9150604084013590509250925092565b6000806040838503121561130957600080fd5b61131283611245565b915061132060208401611245565b90509250929050565b600181811c9082168061133d57607f821691505b60208210811415611377577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113bf576113bf61137d565b500190565b6000828210156113d6576113d661137d565b50039056fea2646970667358221220fd9684963a1e0e9d3eb55681a6f85f5c76804530c79f10cf8d0cfbd35511577164736f6c634300080a003360a060405234801561001057600080fd5b506040516106ca3803806106ca83398101604081905261002f9161006c565b60009190915560ff166080526001805460506001600160501b031991821681179092556004805490911690911790554260028190556003556100a2565b6000806040838503121561007f57600080fd5b82519150602083015160ff8116811461009757600080fd5b809150509250929050565b60805161060e6100bc600039600060d3015261060e6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80639a6fc8f511610081578063d62ada111161005b578063d62ada11146102dc578063f7a30806146102f4578063feaf968c1461030757600080fd5b80639a6fc8f5146101cd578063bd18ad531461023a578063cd653afc1461024d57600080fd5b806354fd4d50116100b257806354fd4d501461012d57806367e8d83d1461013c5780637284e4161461018e57600080fd5b8063313ce567146100ce5780633fd0875f1461010c575b600080fd5b6100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020015b60405180910390f35b6004546a0100000000000000000000900460ff166040516101039190610441565b60405160018152602001610103565b61018c61014a366004610482565b600480549115156c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b005b604080518082018252600c81527f7072696365206f7261636c6500000000000000000000000000000000000000006020820152905161010391906104ab565b6102036101db36600461053d565b60015460005460025460035460045469ffffffffffffffffffff948516941691939590929450565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610103565b61018c610248366004610558565b61030f565b61018c61025b366004610579565b6001805469ffffffffffffffffffff9586167fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090911617905560029290925560035560048054919092167fffffffffffffffffffffffffffffffffffffffff00ff00000000000000000000909116176b020000000000000000000000179055565b6102e461035f565b6040519015158152602001610103565b61018c6103023660046105bf565b600055565b610203610385565b600480548291907fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff166b01000000000000000000000083600281111561035757610357610412565b021790555050565b600454600090610380906b010000000000000000000000900460ff166103d6565b905090565b60008060008060006004600c9054906101000a900460ff16156103a757600080fd5b505060015460005460025460035460045469ffffffffffffffffffff9485169893975091955093509190911690565b600060028260028111156103ec576103ec610412565b14156103f757600080fd5b600182600281111561040b5761040b610412565b1492915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016006831061047c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561049457600080fd5b813580151581146104a457600080fd5b9392505050565b600060208083528351808285015260005b818110156104d8578581018301518582016040015282016104bc565b818111156104ea576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803569ffffffffffffffffffff8116811461053857600080fd5b919050565b60006020828403121561054f57600080fd5b6104a48261051e565b60006020828403121561056a57600080fd5b8135600381106104a457600080fd5b6000806000806080858703121561058f57600080fd5b6105988561051e565b935060208501359250604085013591506105b46060860161051e565b905092959194509250565b6000602082840312156105d157600080fd5b503591905056fea264697066735822122014874f7a973b86501c4c1a8be32490fe902c8f088ee234d25f9b2497e19f9e5264736f6c634300080a0033637265646974436f6e666967757261746f72206973206e6f742073657420636f72726563746c794c49515549444154494f4e20574954482050524f4649542026205a45524f2052454d41494e494e472046554e44534c495155494441544f522068617320696e636f727265637420696e697469616c2062616c616e6365496e636f7272656374206c69717569646174696f6e5072656d69756d45787069726564496e636f7272656374206e756d626572206f6620746f6b656e7320656e61626c656463756d756c617469766544726f70417446617374436865636b206973206e6f742030496e636f727265637420746f6b656e206d61736b20666f7220756e6465726c79696e6720746f6b656e556e6976657273616c2061646170746572206973206e6f7420636f72726563746c7920736574496e636f727265637420616d6f756e742077657265207061696420746f206c7169756461696461746f724c49515549444154494f4e20574954482050524f46495420262052454d41494e494e472046554e4453696e636f7272656374206c7420666f7220756e6465726c79696e6720746f6b656e637265646974436f6e666967757261746f7220697320616c7265616479207468652073616d65496e636f7272656374204441495f4143434f554e545f414d4f554e5420696e20506f6f6c2063616c6c637265646974466163616465206973206e6f742073657420636f72726563746c79496e636f72726563742062616c616e6365206f6e20637265646974206163636f756e744c49515549444154494f4e204f46204558504952454420574954482050524f4649542026205a45524f2052454d41494e494e472046554e4453496e636f72726563637420637265646974206163636f756e74206164647265737361646170746572546f436f6e747261637428414441505445522920697320616c7265616479207468652073616d65496e636f727265637420637265646974206163636f756e7420696e206c656e644372656469744163636f756e742063616c6c6372656469744661636164652820697320616c7265616479207468652073616d65496e636f72726563742072657475726e6564206e6577426f72726f776564416d6f756e74637265646974206163636f756e74206973206e6f7420696e206163636f756e74466163746f7279207461696c21437265646974206163636f756e74206973206e6f74206173736f63696174656420776974682075736572496e636f727265637420616d6f756e742077657265207061696420746f206c697169756461746f7220667269656e6420616464726573736372656469744163636f756e742068617320696e636f727265637420696e697469616c2062616c616e6365555345522067657420696e636f727265637420616d6f756e742061732072656d616e696e672066756e6473636f6c6c61746572616c546f6b656e73436f756e742077616e7420696e6372656d656e746564637265646974206163636f756e7420697320616c726561647920696e207461696c21496e636f727265637420626f72726f77656420616d6f756e742073657420696e2043414c49515549444154494f4e204f46204558504952454420574954482050524f46495420262052454d41494e494e472046554e445363756d756c617469766544726f70417446617374436865636b20776173206368616e67656461646170746572546f436f6e7472616374206973206e6f742073657420636f72726563746c796578706563746564466f726269644d61736b20697320616c7265616479207468652073616d65556e6465726c79696e67206173736574732077657265207472616e7366666572656421a2646970667358221220f83f3deb62d439fd2dfc2a3627de72bf2be34b41934d293c513e493f7206733564736f6c634300080a0033";
|
|
957
|
-
|
|
958
|
-
type CreditManagerTestConstructorParams =
|
|
959
|
-
| [signer?: Signer]
|
|
960
|
-
| ConstructorParameters<typeof ContractFactory>;
|
|
961
|
-
|
|
962
|
-
const isSuperArgs = (
|
|
963
|
-
xs: CreditManagerTestConstructorParams
|
|
964
|
-
): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
|
|
965
|
-
|
|
966
|
-
export class CreditManagerTest__factory extends ContractFactory {
|
|
967
|
-
constructor(...args: CreditManagerTestConstructorParams) {
|
|
968
|
-
if (isSuperArgs(args)) {
|
|
969
|
-
super(...args);
|
|
970
|
-
} else {
|
|
971
|
-
super(_abi, _bytecode, args[0]);
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
override deploy(
|
|
976
|
-
overrides?: Overrides & { from?: string | Promise<string> }
|
|
977
|
-
): Promise<CreditManagerTest> {
|
|
978
|
-
return super.deploy(overrides || {}) as Promise<CreditManagerTest>;
|
|
979
|
-
}
|
|
980
|
-
override getDeployTransaction(
|
|
981
|
-
overrides?: Overrides & { from?: string | Promise<string> }
|
|
982
|
-
): TransactionRequest {
|
|
983
|
-
return super.getDeployTransaction(overrides || {});
|
|
984
|
-
}
|
|
985
|
-
override attach(address: string): CreditManagerTest {
|
|
986
|
-
return super.attach(address) as CreditManagerTest;
|
|
987
|
-
}
|
|
988
|
-
override connect(signer: Signer): CreditManagerTest__factory {
|
|
989
|
-
return super.connect(signer) as CreditManagerTest__factory;
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
static readonly bytecode = _bytecode;
|
|
993
|
-
static readonly abi = _abi;
|
|
994
|
-
static createInterface(): CreditManagerTestInterface {
|
|
995
|
-
return new utils.Interface(_abi) as CreditManagerTestInterface;
|
|
996
|
-
}
|
|
997
|
-
static connect(
|
|
998
|
-
address: string,
|
|
999
|
-
signerOrProvider: Signer | Provider
|
|
1000
|
-
): CreditManagerTest {
|
|
1001
|
-
return new Contract(address, _abi, signerOrProvider) as CreditManagerTest;
|
|
1002
|
-
}
|
|
1003
|
-
}
|