60806040523480156200001157600080fd5b50604051620045dd380380620045dd833981810160405260808110156200003757600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006357600080fd5b9083019060208201858111156200007957600080fd5b82516401000000008111828201881017156200009457600080fd5b82525081516020918201929091019080838360005b83811015620000c3578181015183820152602001620000a9565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b9083019060208201858111156200012b57600080fd5b82516401000000008111828201881017156200014657600080fd5b82525081516020918201929091019080838360005b83811015620001755781810151838201526020016200015b565b50505050905090810190601f168015620001a35780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001c3906003906020850190620004a4565b508051620001d9906004906020840190620004a4565b505060058054601260ff1990911617610100600160a81b0319166101006001600160a01b038881168202929092179283905560408051630dfe168160e01b81529051919093049091169250630dfe168191600480820192602092909190829003018186803b1580156200024b57600080fd5b505afa15801562000260573d6000803e3d6000fd5b505050506040513d60208110156200027757600080fd5b5051600680546001600160a01b0319166001600160a01b039283161790556005546040805163d21220a760e01b815290516101009092049092169163d21220a7916004808301926020929190829003018186803b158015620002d857600080fd5b505afa158015620002ed573d6000803e3d6000fd5b505050506040513d60208110156200030457600080fd5b5051600780546001600160a01b0319166001600160a01b039283161790556005546040805163ddca3f4360e01b815290516101009092049092169163ddca3f43916004808301926020929190829003018186803b1580156200036557600080fd5b505afa1580156200037a573d6000803e3d6000fd5b505050506040513d60208110156200039157600080fd5b50516007805462ffffff60a01b1916600160a01b62ffffff90931692909202919091179055600554604080516334324e9f60e21b815290516101009092046001600160a01b03169163d0c93a7c91600480820192602092909190829003018186803b1580156200040057600080fd5b505afa15801562000415573d6000803e3d6000fd5b505050506040513d60208110156200042c57600080fd5b50516007805460029290920b62ffffff16600160b81b0262ffffff60b81b199092169190911790555050600880546001600160a01b03909216660100000000000002600160301b600160d01b0319909216919091179055506000600b556000196009819055600a55600d805460ff1916905562000550565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004dc576000855562000527565b82601f10620004f757805160ff191683800117855562000527565b8280016001018555821562000527579182015b82811115620005275782518255916020019190600101906200050a565b506200053592915062000539565b5090565b5b808211156200053557600081556001016200053a565b61407d80620005606000396000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c8063888a913411610191578063bb032a66116100e3578063d348799711610097578063f2fde38b11610071578063f2fde38b146108c0578063fa082743146108e6578063fa461e33146108ee576102e9565b8063d3487997146107f6578063dd62ed3e14610872578063ddca3f43146108a0576102e9565b8063d0c93a7c116100c8578063d0c93a7c146107de578063d21220a7146107e6578063d2eabcfc146107ee576102e9565b8063bb032a66146107b0578063c4a7761e146107d6576102e9565b8063a049de6b11610145578063aaf5eb681161011f578063aaf5eb6814610721578063abbffcb914610729578063b460af9414610763576102e9565b8063a049de6b14610699578063a457c2d7146106c9578063a9059cbb146106f5576102e9565b80638dbdbe6d116101765780638dbdbe6d1461063357806395ccea671461066557806395d89b4114610691576102e9565b8063888a9134146106235780638da5cb5b1461062b576102e9565b8063395093511161024a57806351e87af7116101fe57806370a08231116101d857806370a08231146105525780637e15144b146105785780637fe75b0714610580576102e9565b806351e87af7146104f2578063549f6dc9146104fa578063648cab851461054a576102e9565b80633e091ee91161022f5780633e091ee9146104a85780633f3e4c11146104cd5780634d461fbb146104ea576102e9565b806339509351146104745780633d9287fa146104a0576102e9565b806316f0115b116102a157806323b872dd1161028657806323b872dd146104185780632ab4d0521461044e578063313ce56714610456576102e9565b806316f0115b146103f657806318160ddd146103fe576102e9565b8063095ea7b3116102d2578063095ea7b31461038a5780630dfe1681146103ca5780630f35bcac146103ee576102e9565b8063065e5360146102ee57806306fdde031461030d575b600080fd5b6102f661096a565b6040805160029290920b8252519081900360200190f35b6103156109ee565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034f578181015183820152602001610337565b50505050905090810190601f16801561037c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103b6600480360360408110156103a057600080fd5b506001600160a01b038135169060200135610a84565b604080519115158252519081900360200190f35b6103d2610aa2565b604080516001600160a01b039092168252519081900360200190f35b6102f6610ab1565b6103d2610ac1565b610406610ad5565b60408051918252519081900360200190f35b6103b66004803603606081101561042e57600080fd5b506001600160a01b03813581169160208101359091169060400135610adb565b610406610b63565b61045e610b69565b6040805160ff9092168252519081900360200190f35b6103b66004803603604081101561048a57600080fd5b506001600160a01b038135169060200135610b72565b6103b6610bc0565b6104cb600480360360408110156104be57600080fd5b5080359060200135610bc9565b005b6104cb600480360360208110156104e357600080fd5b5035610c27565b610406610c7f565b6102f6610c85565b6104cb600480360360c081101561051057600080fd5b508035600290810b916020810135820b916040820135810b91606081013590910b906001600160a01b036080820135169060a00135610c8e565b61040661166c565b6104066004803603602081101561056857600080fd5b50356001600160a01b0316611672565b6104cb611691565b6104cb6004803603602081101561059657600080fd5b8101906020810181356401000000008111156105b157600080fd5b8201836020820111156105c357600080fd5b803590602001918460208302840111640100000000831117156105e557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061170b945050505050565b6102f66117c0565b6103d26117d0565b6104066004803603606081101561064957600080fd5b50803590602081013590604001356001600160a01b03166117e6565b6104cb6004803603604081101561067b57600080fd5b506001600160a01b038135169060200135611d0c565b610315611d73565b6106a1611dd4565b604080516001600160801b039094168452602084019290925282820152519081900360600190f35b6103b6600480360360408110156106df57600080fd5b506001600160a01b038135169060200135611e5a565b6103b66004803603604081101561070b57600080fd5b506001600160a01b038135169060200135611ec2565b610406611ed6565b6104cb6004803603606081101561073f57600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316611ee9565b6107976004803603606081101561077957600080fd5b508035906001600160a01b0360208201358116916040013516612076565b6040805192835260208301919091528051918290030190f35b6103b6600480360360208110156107c657600080fd5b50356001600160a01b031661243a565b61079761244f565b6102f661255f565b6103d261256f565b6106a161257e565b6104cb6004803603606081101561080c57600080fd5b81359160208101359181019060608101604082013564010000000081111561083357600080fd5b82018360208201111561084557600080fd5b8035906020019184600183028401116401000000008311171561086757600080fd5b5090925090506125da565b6104066004803603604081101561088857600080fd5b506001600160a01b0381358116916020013516612698565b6108a86126c3565b6040805162ffffff9092168252519081900360200190f35b6104cb600480360360208110156108d657600080fd5b50356001600160a01b03166126e6565b6102f661277a565b6104cb6004803603606081101561090457600080fd5b81359160208101359181019060608101604082013564010000000081111561092b57600080fd5b82018360208201111561093d57600080fd5b8035906020019184600183028401116401000000008311171561095f57600080fd5b50909250905061278a565b6000600560019054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156109ba57600080fd5b505afa1580156109ce573d6000803e3d6000fd5b505050506040513d60e08110156109e457600080fd5b5060200151919050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a7a5780601f10610a4f57610100808354040283529160200191610a7a565b820191906000526020600020905b815481529060010190602001808311610a5d57829003601f168201915b5050505050905090565b6000610a98610a9161285c565b8484612860565b5060015b92915050565b6006546001600160a01b031681565b6008546301000000900460020b81565b60055461010090046001600160a01b031681565b60025490565b6000610ae884848461294c565b610b5884610af461285c565b610b5385604051806060016040528060288152602001613f66602891396001600160a01b038a16600090815260016020526040812090610b3261285c565b6001600160a01b031681526020810191909152604001600020549190612aa7565b612860565b5060015b9392505050565b600b5481565b60055460ff1690565b6000610a98610b7f61285c565b84610b538560016000610b9061285c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612b3e565b600d5460ff1681565b600854600160301b90046001600160a01b03163314610c1c576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600991909155600a55565b600854600160301b90046001600160a01b03163314610c7a576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600b55565b600a5481565b60085460020b81565b600854600160301b90046001600160a01b03163314610ce1576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b8460020b8660020b128015610d135750600754600160b81b9004600290810b810b9087900b81610d0d57fe5b0760020b155b8015610d3c5750600754600160b81b9004600290810b810b9086900b81610d3657fe5b0760020b155b610d8d576040805162461bcd60e51b815260206004820152601560248201527f6261736520706f736974696f6e20696e76616c69640000000000000000000000604482015290519081900360640190fd5b8260020b8460020b128015610dbf5750600754600160b81b9004600290810b810b9085900b81610db957fe5b0760020b155b8015610de85750600754600160b81b9004600290810b810b9084900b81610de257fe5b0760020b155b610e39576040805162461bcd60e51b815260206004820152601660248201527f6c696d697420706f736974696f6e20696e76616c696400000000000000000000604482015290519081900360640190fd5b600754600090610e5e90600160d01b8104600290810b91600160e81b9004900b612b98565b50909150506001600160801b03811615610f17576005546007546040805163a34123a760e01b8152600160d01b8304600290810b810b6004830152600160e81b909304830b90920b602483015260006044830181905281516101009094046001600160a01b03169363a34123a79360648082019493918390030190829087803b158015610eea57600080fd5b505af1158015610efe573d6000803e3d6000fd5b505050506040513d6040811015610f1457600080fd5b50505b600854600090610f3590600281810b9163010000009004900b612b98565b50909150506001600160801b03811615610fe7576005546008546040805163a34123a760e01b8152600283810b810b60048301526301000000909304830b90920b602483015260006044830181905281516101009094046001600160a01b03169363a34123a79360648082019493918390030190829087803b158015610fba57600080fd5b505af1158015610fce573d6000803e3d6000fd5b505050506040513d6040811015610fe457600080fd5b50505b600754600090819061100e90600160d01b8104600290810b91600160e81b9004900b612b98565b6008546001600160801b0392831695509116925060009150819061104090600281810b9163010000009004900b612b98565b6001600160801b0391821694501691506000905061105e8386612b3e565b9050600061106c8386612b3e565b60075490915061109590600160d01b8104600290810b91600160e81b9004900b8a306001612c77565b50506008546110b690600281810b9163010000009004900b89306001612c77565b505081156110e0576110e08a6110cd84600a612e5e565b6006546001600160a01b03169190612ec5565b8015611108576111088a6110f583600a612e5e565b6007546001600160a01b03169190612ec5565b7fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d61113161096a565b600654604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561117c57600080fd5b505afa158015611190573d6000803e3d6000fd5b505050506040513d60208110156111a657600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156111f357600080fd5b505afa158015611207573d6000803e3d6000fd5b505050506040513d602081101561121d57600080fd5b50518585611229610ad5565b6040805160029790970b87526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190a188156113d75760055461010090046001600160a01b031663128acb083060008c138061128f578c600003611291565b8c5b60008e136112b35773fffd8963efd1fc6a506488495d951d5263988d256112ba565b6401000276a45b3060405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018515158152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561135b578181015183820152602001611343565b50505050905090810190601f1680156113885780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156113aa57600080fd5b505af11580156113be573d6000803e3d6000fd5b505050506040513d60408110156113d457600080fd5b50505b8d6007601a6101000a81548162ffffff021916908360020b62ffffff1602179055508c6007601d6101000a81548162ffffff021916908360020b62ffffff1602179055506115486007601a9054906101000a900460020b6007601d9054906101000a900460020b600660009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156114a057600080fd5b505afa1580156114b4573d6000803e3d6000fd5b505050506040513d60208110156114ca57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561151757600080fd5b505afa15801561152b573d6000803e3d6000fd5b505050506040513d602081101561154157600080fd5b5051612f31565b60075490985061156f90600160d01b8104600290810b91600160e81b9004900b8a30612fd7565b50508b600860006101000a81548162ffffff021916908360020b62ffffff1602179055508a600860036101000a81548162ffffff021916908360020b62ffffff16021790555061163a600860009054906101000a900460020b600860039054906101000a900460020b600660009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156114a057600080fd5b60085490975061165a90600281810b9163010000009004900b8930612fd7565b50505050505050505050505050505050565b60095481565b6001600160a01b0381166000908152602081905260409020545b919050565b600854600160301b90046001600160a01b031633146116e4576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600d5460ff166116f55760016116f8565b60005b600d805460ff1916911515919091179055565b600854600160301b90046001600160a01b0316331461175e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b60005b81518160ff1610156117bc576001600c6000848460ff168151811061178257fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101611761565b5050565b600754600160e81b900460020b81565b600854600160301b90046001600160a01b031681565b6000808411806117f65750600083115b611847576040805162461bcd60e51b815260206004820152601860248201527f6465706f73697473206d757374206265206e6f6e7a65726f0000000000000000604482015290519081900360640190fd5b600954841080156118595750600a5483105b6118945760405162461bcd60e51b815260040180806020018281038252602a815260200180613faf602a913960400191505060405180910390fd5b6001600160a01b038216158015906118b557506001600160a01b0382163014155b6118eb576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b600d5460ff1615611963576001600160a01b0382166000908152600c602052604090205460ff16611963576040805162461bcd60e51b815260206004820152601360248201527f6d757374206265206f6e20746865206c69737400000000000000000000000000604482015290519081900360640190fd5b60075460009061198890600160d01b8104600290810b91600160e81b9004900b612b98565b50909150506001600160801b03811615611a41576005546007546040805163a34123a760e01b8152600160d01b8304600290810b810b6004830152600160e81b909304830b90920b602483015260006044830181905281516101009094046001600160a01b03169363a34123a79360648082019493918390030190829087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b505050506040513d6040811015611a3e57600080fd5b50505b600854600090611a5f90600281810b9163010000009004900b612b98565b50909150506001600160801b03811615611b11576005546008546040805163a34123a760e01b8152600283810b810b60048301526301000000909304830b90920b602483015260006044830181905281516101009094046001600160a01b03169363a34123a79360648082019493918390030190829087803b158015611ae457600080fd5b505af1158015611af8573d6000803e3d6000fd5b505050506040513d6040811015611b0e57600080fd5b50505b6000611b23611b1e61096a565b613147565b90506000611b6c611b3d6001600160a01b03841680613486565b6ec097ce7bc90715b34b9f100000000078010000000000000000000000000000000000000000000000006134df565b9050600080611b7961244f565b90925090506000611ba36ec097ce7bc90715b34b9f1000000000611b9d8d87613486565b90612e5e565b9050611baf8a82612b3e565b97508a15611bcf57600654611bcf906001600160a01b031633308e61358e565b8915611bed57600754611bed906001600160a01b031633308d61358e565b611bf5610ad5565b15611c3e576000611c196ec097ce7bc90715b34b9f1000000000611b9d8688613486565b9050611c3a611c288285612b3e565b611b9d611c33610ad5565b8c90613486565b9850505b611c488989613603565b60408051898152602081018d90528082018c905290516001600160a01b038b169133917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a3600b541580611cad5750600b54611caa610ad5565b11155b611cfe576040805162461bcd60e51b815260206004820152600e60248201527f6d6178546f74616c537570706c79000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050509392505050565b600854600160301b90046001600160a01b03163314611d5f576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6117bc6001600160a01b0383163383612ec5565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a7a5780601f10610a4f57610100808354040283529160200191610a7a565b60085460009081908190819081908190611dfc90600281810b9163010000009004900b612b98565b6008549295509093509150611e2090600281810b9163010000009004900b856136f3565b9095509350611e38856001600160801b038416612b3e565b9450611e4d846001600160801b038316612b3e565b9350829550505050909192565b6000610a98611e6761285c565b84610b538560405180606001604052806025815260200161404c6025913960016000611e9161285c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612aa7565b6000610a98611ecf61285c565b848461294c565b6ec097ce7bc90715b34b9f100000000081565b600854600160301b90046001600160a01b03163314611f3c576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6005546040805163a34123a760e01b8152600286810b600483015285900b60248201526001600160801b038416604482015281516101009093046001600160a01b03169263a34123a7926064808401939192918290030181600087803b158015611fa557600080fd5b505af1158015611fb9573d6000803e3d6000fd5b505050506040513d6040811015611fcf57600080fd5b5050600554604080516309e3d67b60e31b8152336004820152600286810b602483015285900b60448201526001600160801b0360648201819052608482015281516101009093046001600160a01b031692634f1eb3d89260a4808401939192918290030181600087803b15801561204557600080fd5b505af1158015612059573d6000803e3d6000fd5b505050506040513d604081101561206f57600080fd5b5050505050565b600080600085116120ce576040805162461bcd60e51b815260206004820152600660248201527f7368617265730000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03841661210e576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b600754600090819061214390600160d01b8104600290810b91600160e81b9004900b61213b82828c61379d565b896000612c77565b6008549193509150600090819061217690600281810b9163010000009004900b61216e82828e61379d565b8b6000612c77565b915091506000612184610ad5565b9050600061222482611b9d8d600660009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156121f257600080fd5b505afa158015612206573d6000803e3d6000fd5b505050506040513d602081101561221c57600080fd5b505190613486565b9050600061229283611b9d8e600760009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156121f257600080fd5b905081156122b1576006546122b1906001600160a01b03168c84612ec5565b80156122ce576007546122ce906001600160a01b03168c83612ec5565b6122e2826122dc8988612b3e565b90612b3e565b98506122f2816122dc8887612b3e565b97506001600160a01b038a163314806123805750336001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561234957600080fd5b505afa15801561235d573d6000803e3d6000fd5b505050506040513d602081101561237357600080fd5b50516001600160a01b0316145b6123d1576040805162461bcd60e51b815260206004820152601a60248201527f53656e646572206d757374206f776e2074686520746f6b656e73000000000000604482015290519081900360640190fd5b6123db8a8d6137dd565b604080518d8152602081018b90528082018a905290516001600160a01b03808e1692908d16917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360600190a350505050505050935093915050565b600c6020526000908152604090205460ff1681565b60008060008061245d61257e565b925092505060008061246d611dd4565b600654604080516370a0823160e01b815230600482015290519396509194506124fb935085926122dc9289926001600160a01b0316916370a0823191602480820192602092909190829003018186803b1580156124c957600080fd5b505afa1580156124dd573d6000803e3d6000fd5b505050506040513d60208110156124f357600080fd5b505190612b3e565b600754604080516370a0823160e01b815230600482015290519298506125559284926122dc9288926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156124c957600080fd5b9450505050509091565b600754600160b81b900460020b81565b6007546001600160a01b031681565b6000806000806000806125af6007601a9054906101000a900460020b6007601d9054906101000a900460020b612b98565b6007549295509093509150611e2090600160d01b8104600290810b91600160e81b9004900b856136f3565b60055461010090046001600160a01b031633146125f657600080fd5b60008282602081101561260857600080fd5b50356001600160a01b031690503081141561265c57841561263a5760065461263a906001600160a01b03163387612ec5565b831561265757600754612657906001600160a01b03163386612ec5565b61206f565b841561267a5760065461267a906001600160a01b031682338861358e565b831561206f5760075461206f906001600160a01b031682338761358e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60075474010000000000000000000000000000000000000000900462ffffff1681565b600854600160301b90046001600160a01b03163314612739576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600880546001600160a01b03909216600160301b027fffffffffffff0000000000000000000000000000000000000000ffffffffffff909216919091179055565b600754600160d01b900460020b81565b60055461010090046001600160a01b031633146127a657600080fd5b6000828260208110156127b857600080fd5b50356001600160a01b031690506000851315612813576001600160a01b0381163014156127fb576006546127f6906001600160a01b03163387612ec5565b612657565b600654612657906001600160a01b031682338861358e565b600084131561206f576001600160a01b03811630141561284457600754612657906001600160a01b03163386612ec5565b60075461206f906001600160a01b031682338761358e565b3390565b6001600160a01b0383166128a55760405162461bcd60e51b8152600401808060200182810382526024815260200180613ffe6024913960400191505060405180910390fd5b6001600160a01b0382166128ea5760405162461bcd60e51b8152600401808060200182810382526022815260200180613ed76022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166129915760405162461bcd60e51b8152600401808060200182810382526025815260200180613fd96025913960400191505060405180910390fd5b6001600160a01b0382166129d65760405162461bcd60e51b8152600401808060200182810382526023815260200180613e926023913960400191505060405180910390fd5b6129e1838383612f2c565b612a1e81604051806060016040528060268152602001613ef9602691396001600160a01b0386166000908152602081905260409020549190612aa7565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a4d9082612b3e565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115612b365760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612afb578181015183820152602001612ae3565b50505050905090810190601f168015612b285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610b5c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080513060601b602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a83018085528151919092012060055463514ea4bf60e01b909252603e830181905292516000938493849391926101009092046001600160a01b03169163514ea4bf91605e8082019260a092909190829003018186803b158015612c3157600080fd5b505afa158015612c45573d6000803e3d6000fd5b505050506040513d60a0811015612c5b57600080fd5b5080516060820151608090920151909891975095509350505050565b6000806001600160801b03851615612e54576005546040805163a34123a760e01b815260028a810b600483015289900b60248201526001600160801b0388166044820152815160009384936101009091046001600160a01b03169263a34123a7926064808301939282900301818787803b158015612cf457600080fd5b505af1158015612d08573d6000803e3d6000fd5b505050506040513d6040811015612d1e57600080fd5b5080516020909101519092509050600085612d4157612d3c836138d9565b612d4a565b6001600160801b035b9050600086612d6157612d5c836138d9565b612d6a565b6001600160801b035b90506000826001600160801b03161180612d8d57506000816001600160801b0316115b15612e4f57600554604080516309e3d67b60e31b81526001600160a01b038b8116600483015260028f810b60248401528e900b60448301526001600160801b0380871660648401528516608483015282516101009094041692634f1eb3d89260a4808401939192918290030181600087803b158015612e0b57600080fd5b505af1158015612e1f573d6000803e3d6000fd5b505050506040513d6040811015612e3557600080fd5b5080516020909101516001600160801b0391821697501694505b505050505b9550959350505050565b6000808211612eb4576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612ebd57fe5b049392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052612f2c9084906138f0565b505050565b600080600560019054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015612f8257600080fd5b505afa158015612f96573d6000803e3d6000fd5b505050506040513d60e0811015612fac57600080fd5b50519050612fcd81612fbd88613147565b612fc688613147565b87876139a1565b9695505050505050565b6000806001600160801b0384161561313e57600560019054906101000a90046001600160a01b03166001600160a01b0316633c8a7d8d308888888860405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156130b657818101518382015260200161309e565b50505050905090810190601f1680156130e35780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561310557600080fd5b505af1158015613119573d6000803e3d6000fd5b505050506040513d604081101561312f57600080fd5b50805160209091015190925090505b94509492505050565b60008060008360020b1261315e578260020b613166565b8260020b6000035b9050620d89e88111156131a4576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166131c5577001000000000000000000000000000000006131d7565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561320b576ffff97272373d413259a46990580e213a0260801c5b600482161561322a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613249576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613268576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613287576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156132a6576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156132c5576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156132e5576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613305576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613325576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613345576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613365576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613385576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156133a5576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156133c5576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156133e6576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613406576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613425576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613442576b048a170391f7dc42444e8fa20260801c5b60008460020b131561345d57806000198161345957fe5b0490505b640100000000810615613471576001613474565b60005b60ff16602082901c0192505050919050565b60008261349557506000610a9c565b828202828482816134a257fe5b0414610b5c5760405162461bcd60e51b8152600401808060200182810382526021815260200180613f456021913960400191505060405180910390fd5b6000808060001985870986860292508281109083900303905080613515576000841161350a57600080fd5b508290049050610b5c565b80841161352157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526135fd9085906138f0565b50505050565b6001600160a01b03821661365e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61366a60008383612f2c565b6002546136779082612b3e565b6002556001600160a01b03821660009081526020819052604090205461369d9082612b3e565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000806000600560019054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561374657600080fd5b505afa15801561375a573d6000803e3d6000fd5b505050506040513d60e081101561377057600080fd5b505190506137908161378188613147565b61378a88613147565b87613a59565b9250925050935093915050565b6000806137aa8585612b98565b505090506137d46137cf6137bc610ad5565b611b9d6001600160801b03851687613486565b6138d9565b95945050505050565b6001600160a01b0382166138225760405162461bcd60e51b8152600401808060200182810382526021815260200180613f8e6021913960400191505060405180910390fd5b61382e82600083612f2c565b61386b81604051806060016040528060228152602001613eb5602291396001600160a01b0385166000908152602081905260409020549190612aa7565b6001600160a01b0383166000908152602081905260409020556002546138919082613af4565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006001600160801b038211156138ec57fe5b5090565b6000613945826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b519092919063ffffffff16565b805190915015612f2c5780806020019051602081101561396457600080fd5b5051612f2c5760405162461bcd60e51b815260040180806020018281038252602a815260200180614022602a913960400191505060405180910390fd5b6000836001600160a01b0316856001600160a01b031611156139c1579293925b846001600160a01b0316866001600160a01b0316116139ec576139e5858585613b68565b90506137d4565b836001600160a01b0316866001600160a01b03161015613a4e576000613a13878686613b68565b90506000613a22878986613bcb565b9050806001600160801b0316826001600160801b031610613a435780613a45565b815b925050506137d4565b612fcd858584613bcb565b600080836001600160a01b0316856001600160a01b03161115613a7a579293925b846001600160a01b0316866001600160a01b031611613aa557613a9e858585613c08565b915061313e565b836001600160a01b0316866001600160a01b03161015613ade57613aca868585613c08565b9150613ad7858785613c71565b905061313e565b613ae9858585613c71565b905094509492505050565b600082821115613b4b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6060613b608484600085613cb4565b949350505050565b6000826001600160a01b0316846001600160a01b03161115613b88579192915b6000613bab856001600160a01b0316856001600160a01b0316600160601b6134df565b90506137d4613bc684838888036001600160a01b03166134df565b613e0f565b6000826001600160a01b0316846001600160a01b03161115613beb579192915b613b60613bc683600160601b8787036001600160a01b03166134df565b6000826001600160a01b0316846001600160a01b03161115613c28579192915b836001600160a01b0316613c61606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b03166134df565b81613c6857fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115613c91579192915b613b60826001600160801b03168585036001600160a01b0316600160601b6134df565b606082471015613cf55760405162461bcd60e51b8152600401808060200182810382526026815260200180613f1f6026913960400191505060405180910390fd5b613cfe85613e25565b613d4f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310613d8d5780518252601f199092019160209182019101613d6e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613def576040519150601f19603f3d011682016040523d82523d6000602084013e613df4565b606091505b5091509150613e04828286613e2b565b979650505050505050565b806001600160801b038116811461168c57600080fd5b3b151590565b60608315613e3a575081610b5c565b825115613e4a5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315612afb578181015183820152602001612ae356fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f20616464726573736465706f73697473206d757374206265206c657373207468616e206d6178696d756d20616d6f756e747345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a000000000000000000000000bc9b75563e8df1dc761589444103342ec582cc290000000000000000000000003e738bef54e64be0c99759e0c77d9c72c5a8666e000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000165669736f7220464f5254482d45544820556e6920763300000000000000000000000000000000000000000000000000000000000000000000000000000000000e76464f5254482d45544856332d31000000000000000000000000000000000000