0x60a06040523060601b6080523480156200001857600080fd5b50600054610100900460ff16158080156200003a5750600054600160ff909116105b806200006a575062000057306200014460201b620026861760201c565b1580156200006a575060005460ff166001145b620000d25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000f6576000805461ff0019166101001790555b80156200013d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000153565b6001600160a01b03163b151590565b60805160601c615f4c6200018e60003960008181610ba201528181610c3801528181611330015281816113c601526114c10152615f4c6000f3fe6080604052600436106102e75760003560e01c80638881016f11610184578063b6ed701e116100d6578063d82d58a51161008a578063e3795cc111610064578063e3795cc11461096b578063ef9e5e2814610982578063f2fde38b1461099557600080fd5b8063d82d58a5146108fd578063e17efd4814610936578063e18910a31461095657600080fd5b8063caaf43f1116100bb578063caaf43f11461089b578063cb718a9b146108c8578063d47eed45146108dd57600080fd5b8063b6ed701e14610868578063b9256d281461088857600080fd5b80639a8a059211610138578063aac4129211610112578063aac41292146106ef578063b5dcc9111461080f578063b5ec02611461082f57600080fd5b80639a8a0592146107a5578063a38d81c6146107cd578063a4ae35e0146107ef57600080fd5b80638da5cb5b116101695780638da5cb5b146107475780639474f45b1461076557806396834ad31461078557600080fd5b80638881016f146106ef57806389a5bb4d1461072757600080fd5b806352d1902d1161023d5780636c72f51b116101f15780637b72bcae116101cb5780637b72bcae1461065b57806384acd1bb1461069057806387c5bd1b146106c257600080fd5b80636c72f51b146105fa578063711a2e2814610626578063715018a61461064657600080fd5b8063586d3cf811610222578063586d3cf81461058e57806358c67635146105ad5780636b7f53ca146105cd57600080fd5b806352d1902d1461052d57806354fd4d501461054257600080fd5b8063437209a71161029f5780634c469d8c116102795780634c469d8c146104aa5780634d7a734e146104fa5780634f1ef2861461051a57600080fd5b8063437209a7146103d55780634716e9c51461046b57806348b6404d1461048b57600080fd5b806331d98b3f116102d057806331d98b3f146103425780633659cfe61461036f578063426234e41461038f57600080fd5b8063146faf77146102ec57806314dd317f1461030e575b600080fd5b3480156102f857600080fd5b5061030c6103073660046152ff565b6109b5565b005b34801561031a57600080fd5b5061032e610329366004615632565b610b06565b604051905181526020015b60405180910390f35b34801561034e57600080fd5b5061036261035d366004615574565b610b61565b6040516103399190615b80565b34801561037b57600080fd5b5061030c61038a3660046152e5565b610b97565b34801561039b57600080fd5b506040805180820182526000808252602091820152815180830190925260d05461ffff16825260d154908201526040516103399190615af5565b3480156103e157600080fd5b5061045b6103f0366004615846565b6040805160f09390931b7fffff000000000000000000000000000000000000000000000000000000000000166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b6040519015158152602001610339565b61047e6104793660046154e2565b610d52565b6040516103399190615a49565b34801561049757600080fd5b5060ce545b604051908152602001610339565b3480156104b657600080fd5b506104e16104c5366004615574565b600090815260d5602052604090205467ffffffffffffffff1690565b60405167ffffffffffffffff9091168152602001610339565b34801561050657600080fd5b5061032e610515366004615632565b61128b565b61030c6105283660046153c0565b611325565b34801561053957600080fd5b5061049c6114b4565b34801561054e57600080fd5b50604080518082018252600581527f312e332e30000000000000000000000000000000000000000000000000000000602082015290516103399190615ac7565b34801561059a57600080fd5b5060d25467ffffffffffffffff166104e1565b3480156105b957600080fd5b5061045b6105c8366004615846565b611579565b3480156105d957600080fd5b506105ed6105e8366004615632565b61159c565b6040516103399190615b10565b34801561060657600080fd5b5060d45463ffffffff165b60405163ffffffff9091168152602001610339565b34801561063257600080fd5b506103626106413660046155a4565b6117a0565b34801561065257600080fd5b5061030c611816565b34801561066757600080fd5b5061067b610676366004615632565b61182a565b604051905163ffffffff168152602001610339565b34801561069c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610339565b3480156106ce57600080fd5b506106e26106dd366004615632565b611858565b6040516103399190615bbb565b3480156106fb57600080fd5b5061070f61070a366004615632565b6119d5565b60405190516001600160a01b03168152602001610339565b34801561073357600080fd5b5061049c610742366004615665565b611a06565b34801561075357600080fd5b506033546001600160a01b03166106aa565b34801561077157600080fd5b50610362610780366004615574565b611a70565b34801561079157600080fd5b506103626107a0366004615574565b611b03565b3480156107b157600080fd5b506107ba611ba5565b60405161ffff9091168152602001610339565b3480156107d957600080fd5b506107e2611c2e565b6040516103399190615a11565b3480156107fb57600080fd5b5061036261080a3660046155a4565b611ca1565b34801561081b57600080fd5b5061036261082a366004615574565b611cce565b34801561083b57600080fd5b5061045b61084a366004615574565b600090815260d5602052604090205467ffffffffffffffff16151590565b34801561087457600080fd5b5061030c6108833660046155c5565b611cfe565b61030c61089636600461544c565b612018565b3480156108a757600080fd5b506108bb6108b6366004615574565b61212b565b6040516103399190615b71565b3480156108d457600080fd5b5060cf5461049c565b3480156108e957600080fd5b5061049c6108f836600461540c565b612308565b34801561090957600080fd5b50610929610918366004615632565b604080516020810190915290815290565b6040516103399190615ada565b34801561094257600080fd5b5061049c610951366004615574565b612473565b34801561096257600080fd5b5061049c612489565b34801561097757600080fd5b506397a6f304610611565b61030c61099036600461540c565b612494565b3480156109a157600080fd5b5061030c6109b03660046152e5565b6125f9565b600054610100900460ff16158080156109d55750600054600160ff909116105b806109ef5750303b1580156109ef575060005460ff166001145b610a665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610a89576000805461ff0019166101001790555b610a91612695565b610a9961271a565b610aab8b8b8b8b8b8b8b8b8b8b612797565b610ab3611816565b8015610af9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6040805160208101909152600081526000610b218382612a0b565b67ffffffffffffffff168252610b38600882615d07565b905080835114610b5b576040516397363b3560e01b815260040160405180910390fd5b50919050565b604080516080810182526000808252602082018190529181018290526060810191909152610b918261080a612489565b92915050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610c365760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610a5d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610d0d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610a5d565b610d1681612a71565b610d4f8160005b6040519080825280601f01601f191660200182016040528015610d47576020820181803683370190505b506000612a79565b50565b60606000610d608888612308565b905080341015610d9c576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508367ffffffffffffffff811115610dc457634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610e5457816020015b610e41604080516060808201835260008083528351608081018552818152602081810183905294810182905291820152909182019081526040805160808101825260008082526020828101829052928201819052606082015291015290565b815260200190600190039081610de25790505b50905060005b8681101561120a576004888883818110610e8457634e487b7160e01b600052603260045260246000fd5b9050602002810190610e969190615bd6565b9050118015610eea575063504e4155610ee2898984818110610ec857634e487b7160e01b600052603260045260246000fd5b9050602002810190610eda9190615bd6565b503560e01c90565b63ffffffff16145b156110d757600080610f2c8a8a85818110610f1557634e487b7160e01b600052603260045260246000fd5b9050602002810190610f279190615bd6565b612c2d565b90925090506000818015610f5057634e487b7160e01b600052602160045260246000fd5b14610f6e5760405163734fff6760e11b815260040160405180910390fd5b50600080366000610fb08d8d88818110610f9857634e487b7160e01b600052603260045260246000fd5b9050602002810190610faa9190615bd6565b87612cf4565b93985091965094509250905060005b8360ff168110156110ac576040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052906110088786868b612e3f565b91995092509050600061101c8f8f84612f54565b90508d81148061105657508a818151811061104757634e487b7160e01b600052603260045260246000fd5b60209081029190910101515115155b15611063575050506110a4565b825167ffffffffffffffff908116908e16811080159061108d57508c67ffffffffffffffff168111155b1561109f5761109f8c83858785612fa5565b505050505b600101610fbf565b508481146110cd5760405163734fff6760e11b815260040160405180910390fd5b5050505050611202565b606060006111158a8a858181106110fe57634e487b7160e01b600052603260045260246000fd5b90506020028101906111109190615bd6565b6131e9565b60e00151915060009050808061112a8461333a565b92509250925060005b828110156111fc576040848601015160209060006111528e8e84612f54565b90508c81148061118c575089818151811061117d57634e487b7160e01b600052603260045260246000fd5b60209081029190910101515115155b1561119d57505050928101926111f4565b60006111aa898988613469565b50805190915067ffffffffffffffff908116908e1681108015906111d857508c67ffffffffffffffff168111155b156111ea576111ea8c84868585612fa5565b5050509483019450505b600101611133565b50505050505b600101610e5a565b5060005b848110156112805781818151811061123657634e487b7160e01b600052603260045260246000fd5b602090810291909101015151611278576040517f45805f5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161120e565b509695505050505050565b6040805160208101909152600081526000806112a78482612a0b565b90506112b4600883615d07565b915060006112c28584612a0b565b90506112cf600884615d07565b92506112e667ffffffffffffffff8216600a615d62565b6112fa9067ffffffffffffffff8416615e0a565b84528451831461131d576040516397363b3560e01b815260040160405180910390fd5b505050919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156113c45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610a5d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661141f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461149b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610a5d565b6114a482612a71565b6114b082826001612a79565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115545760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a5d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60d05460009061ffff8481169116148015611595575060d15482145b9392505050565b6115c8604080516080810190915280600081526020016000815260006020820152606060409091015290565b6000806115d58482613579565b905063ffffffff8116635054474d14611601576040516397363b3560e01b815260040160405180910390fd5b61160c600483615d07565b9150600061161a85846135df565b90508060ff16600181111561163f57634e487b7160e01b600052602160045260246000fd5b8490600181111561166057634e487b7160e01b600052602160045260246000fd5b9081600181111561168157634e487b7160e01b600052602160045260246000fd5b90525061168f600184615d07565b92506001845160018111156116b457634e487b7160e01b600052602160045260246000fd5b146116d2576040516363daeb7760e01b815260040160405180910390fd5b60006116de86856135df565b90508060ff16600681111561170357634e487b7160e01b600052602160045260246000fd5b8560200190600681111561172757634e487b7160e01b600052602160045260246000fd5b9081600681111561174857634e487b7160e01b600052602160045260246000fd5b905250611756600185615d07565b93506117628685613645565b61ffff166040860152611776600285615d07565b9350611791848588516117899190615e29565b8891906136ab565b60608601525092949350505050565b6040805160808101825260008082526020820181905291810182905260608101919091526117cd83611a70565b9050816117de4283606001516137d3565b1115610b91576040517f19abf40e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181e6137f8565b6118286000613852565b565b60408051602081019091526000815260006118458382613579565b63ffffffff168252610b38600482615d07565b60408051602081019091526060815260008061187484826135df565b9050611881600183615d07565b91508060ff1667ffffffffffffffff8111156118ad57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156118f257816020015b60408051808201909152600080825260208201528152602001906001900390816118cb5790505b50835260005b8160ff168110156119ac5761190d8584613645565b845180518390811061192f57634e487b7160e01b600052603260045260246000fd5b602090810291909101015161ffff909116905261194d600284615d07565b925061195985846138b1565b845180518390811061197b57634e487b7160e01b600052603260045260246000fd5b602002602001015160200181815250506020836119989190615d07565b9250806119a481615e6c565b9150506118f8565b50818451146119ce576040516397363b3560e01b815260040160405180910390fd5b5050919050565b60408051602081019091526000815260006119f08382613917565b6001600160a01b03168252610b38601482615d07565b600081600001518260200151604051602001611a5392919060f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b604051602081830303815290604052805190602001209050919050565b60408051608081018252600080825260208083018281528385018381526060850184815287855260d590935294909220805467ffffffffffffffff808216938490526801000000000000000091829004600390810b810b900b9096526001820154600781810b810b900b865204909416909152909190610b5b57604051630295d7cd60e31b815260040160405180910390fd5b60408051608081018252600080825260208083018281528385018381526060850184815287855260d590935294909220805467ffffffffffffffff80821693849052680100000000000000008204600390810b810b900b9096526c010000000000000000000000008104600790810b810b900b8552600160a01b9004909416909152909190610b5b57604051630295d7cd60e31b815260040160405180910390fd5b6000611bb960c9546001600160a01b031690565b6001600160a01b0316639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015611bf157600080fd5b505afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c29919061582a565b905090565b606060c9600301805480602002602001604051908101604052809291908181526020016000905b82821015611c985760008481526020908190206040805180820190915260028502909101805461ffff168252600190810154828401529083529092019101611c55565b50505050905090565b6040805160808101825260008082526020820181905291810182905260608101919091526117cd83611b03565b604080516080810182526000808252602082018190529181018290526060810191909152610b9182610641612489565b6000611d3f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061398d92505050565b90506000611d508260e0015161159c565b9050611d5a611ba5565b61ffff16816040015161ffff1614158015611d7c5750604081015161ffff1615155b15611d9a576040516363daeb7760e01b815260040160405180910390fd5b600081602001516006811115611dc057634e487b7160e01b600052602160045260246000fd5b1415611e0657604081015161ffff16611dec576040516363daeb7760e01b815260040160405180910390fd5b611e01611dfc82606001516119d5565b613b6e565b612012565b600181602001516006811115611e2c57634e487b7160e01b600052602160045260246000fd5b1415611e5357611e01611e4e8260600151604080516020810190915290815290565b613b77565b600281602001516006811115611e7957634e487b7160e01b600052602160045260246000fd5b1415611e9457611e01611e8f8260600151611858565b613eaa565b600381602001516006811115611eba57634e487b7160e01b600052602160045260246000fd5b1415611ed557611e01611ed0826060015161128b565b614053565b600481602001516006811115611efb57634e487b7160e01b600052602160045260246000fd5b1415611f1657611e01611f118260600151610b06565b6140a5565b600581602001516006811115611f3c57634e487b7160e01b600052602160045260246000fd5b1415611f5b576040516397363b3560e01b815260040160405180910390fd5b600681602001516006811115611f8157634e487b7160e01b600052602160045260246000fd5b1415611ff957604081015161ffff16611fad576040516363daeb7760e01b815260040160405180910390fd5b611e01611fbd82606001516119d5565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506140e292505050565b6040516397363b3560e01b815260040160405180910390fd5b50505050565b8281146120385760405163a9cb9e0d60e01b815260040160405180910390fd5b60005b838110156120f05782828281811061206357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612078919061588b565b67ffffffffffffffff166120c88686848181106120a557634e487b7160e01b600052603260045260246000fd5b90506020020135600090815260d5602052604090205467ffffffffffffffff1690565b67ffffffffffffffff1610156120e8576120e28787612494565b50612123565b60010161203b565b506040517fde2c57fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b61218a604080516060808201835260008083528351608081018552818152602081810183905294810182905291820152909182019081526040805160808101825260008082526020828101829052928201819052606082015291015290565b6040805160c08082018352600080835260208084018290528385018290526060808501839052608080860184905260a095860184905288845260d5835286842087519586018852805467ffffffffffffffff808216885268010000000000000000808304600390810b810b900b968901969096526c010000000000000000000000008204600790810b810b810b9a89019a909a52600160a01b9091048116938701939093526001015480880b880b90970b90850152940490931691810191909152805190915067ffffffffffffffff1661227757604051630295d7cd60e31b815260040160405180910390fd5b91815260408083015160208084018051600793840b840b9052606080870151825167ffffffffffffffff9182169085015283880180518451600391820b820b9089015289519451948316948401949094526080890151878901805191880b90970b905260a089015186519083169501949094529251845190830b90920b919094015293519051931692019190915290565b600080805b8381101561246157600485858381811061233757634e487b7160e01b600052603260045260246000fd5b90506020028101906123499190615bd6565b9050118015612383575063504e415561237b868684818110610ec857634e487b7160e01b600052603260045260246000fd5b63ffffffff16145b15612441576000806123ae878785818110610f1557634e487b7160e01b600052603260045260246000fd5b909250905060008180156123d257634e487b7160e01b600052602160045260246000fd5b146123f05760405163734fff6760e11b815260040160405180910390fd5b61242b87878581811061241357634e487b7160e01b600052603260045260246000fd5b90506020028101906124259190615bd6565b8461433a565b6124389060ff1685615d07565b9350505061244f565b61244c600183615d07565b91505b8061245981615e6c565b91505061230d565b5061246b81614371565b949350505050565b60008161247f60ce5490565b610b919190615e0a565b6000611c2960cf5490565b6000805b828110156125b15760048484838181106124c257634e487b7160e01b600052603260045260246000fd5b90506020028101906124d49190615bd6565b905011801561250e575063504e4155612506858584818110610ec857634e487b7160e01b600052603260045260246000fd5b63ffffffff16145b156125615761254d84848381811061253657634e487b7160e01b600052603260045260246000fd5b90506020028101906125489190615bd6565b614386565b61255a9060ff1683615d07565b91506125a9565b61259b84848381811061258457634e487b7160e01b600052603260045260246000fd5b90506020028101906125969190615bd6565b614604565b6125a6600183615d07565b91505b600101612498565b5060006125bd82614371565b905080341015612012576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126016137f8565b6001600160a01b03811661267d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a5d565b610d4f81613852565b6001600160a01b03163b151590565b600054610100900460ff166127125760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a5d565b611828614616565b600054610100900460ff166118285760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a5d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038c161790558786146127df5760405163a9cb9e0d60e01b815260040160405180910390fd5b60005b888110156129a257600060405180604001604052808c8c8581811061281757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061282c919061580e565b61ffff1681526020018a8a8581811061285557634e487b7160e01b600052603260045260246000fd5b602090810292909201359092528251838201516040805160f09390931b7fffff00000000000000000000000000000000000000000000000000000000000016838501526022808401929092528051808403909201825260429092018252805190830120600090815260cd9092529020549192505060ff16156128ea5760405163a9cb9e0d60e01b815260040160405180910390fd5b600160cd60006128f984611a06565b81526020808201929092526040016000908120805460ff19169315159390931790925560cc8054600181018255925282517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe6002909302928301805461ffff191661ffff90921691909117905591909101517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebf909101558061299a81615e6c565b9150506127e2565b506040805180820190915261ffff86168082526020820186905260d0805461ffff1916909117905560d185905560d2805467ffffffffffffffff191667ffffffffffffffff8616179055506129f68260cf55565b6129ff8160ce55565b50505050505050505050565b6000612a18826008615d07565b83511015612a685760405162461bcd60e51b815260206004820152601460248201527f746f55696e7436345f6f75744f66426f756e64730000000000000000000000006044820152606401610a5d565b50016008015190565b610d4f6137f8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612ab157612aac8361469c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612aea57600080fd5b505afa925050508015612b1a575060408051601f3d908101601f19168201909252612b179181019061558c565b60015b612b8c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610a5d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612c215760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610a5d565b50612aac838383614767565b60046000833560e01c63504e41558114612c5a5760405163734fff6760e11b815260040160405180910390fd5b60018084019386013560f81c908114612c865760405163734fff6760e11b815260040160405180910390fd5b50508184016001013560f890811c9092016002818101939186010135901c60ff168015612cc357634e487b7160e01b600052602160045260246000fd5b60019290920191905081831015612ced5760405163734fff6760e11b815260040160405180910390fd5b9250929050565b600080803681612d0888888880820361478c565b600296509092509050813560f01c60606000612d2e612d2986868b8761478c565b6147b6565b60e0015160048082015161ffff86169a909a01999193509150634155575663ffffffff821614612d715760405163734fff6760e11b815260040160405180910390fd5b8183016001015160009060ff168015612d9a57634e487b7160e01b600052602160045260246000fd5b60019093019290506000818015612dc157634e487b7160e01b600052602160045260246000fd5b14612ddf5760405163734fff6760e11b815260040160405180910390fd5b602c848401015184516c0100000000000000000000000090910460601b9950602090930192831115612e245760405163734fff6760e11b815260040160405180910390fd5b5050600188019b969a505050509381013560f81c9550935050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052600283019282903690829088013560f01c612e8d8989898461478c565b925092508061ffff16870196506000612eaa8a8a8a8e8888614940565b9750905080612ecc5760405163734fff6760e11b815260040160405180910390fd5b6000843560f81c8015612eef57634e487b7160e01b600052602160045260246000fd5b90506000818015612f1057634e487b7160e01b600052602160045260246000fd5b1415612f2c57612f22858560016149f2565b9097509550612f45565b60405163734fff6760e11b815260040160405180910390fd5b50505050509450945094915050565b6000805b8381101561246b5782858583818110612f8157634e487b7160e01b600052603260045260246000fd5b905060200201351415612f935761246b565b80612f9d81615e6c565b915050612f58565b82858581518110612fc657634e487b7160e01b600052603260045260246000fd5b602002602001015160000181815250508160400151858581518110612ffb57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516000019060070b908160070b81525050816060015185858151811061303c57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516020019067ffffffffffffffff16908167ffffffffffffffff1681525050816020015185858151811061308b57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516040019060030b908160030b81525050808585815181106130c857634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516060018181525050816080015185858151811061310157634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516000019060070b908160070b815250508160a0015185858151811061314257634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516020019067ffffffffffffffff16908167ffffffffffffffff1681525050816020015185858151811061319157634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516040019060030b908160030b81525050808585815181106131ce57634e487b7160e01b600052603260045260246000fd5b60200260200101516040015160600181815250505050505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018190526101008201839052610120820152610140810191909152600061325560c9546001600160a01b031690565b6001600160a01b031663c0fd8bde85856040518363ffffffff1660e01b8152600401613282929190615a98565b60006040518083038186803b15801561329a57600080fd5b505afa1580156132ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132d691908101906156bc565b509092509050806132fa57604051632acbe91560e01b815260040160405180910390fd5b5061330481614a8c565b610b91576040517fe60dce7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080808061334d858260049101015190565b90506004840193508063ffffffff1663503257481461337f5760405163734fff6760e11b815260040160405180910390fd5b6002858501810151940193600361ffff8216146133af5760405163734fff6760e11b815260040160405180910390fd5b60028501945060006133c5878760029101015190565b905060028601955060006133dd888860019101015190565b90508161ffff16870196508060ff1660021461340c5760405163734fff6760e11b815260040160405180910390fd5b505050508284016002015161ffff169150600283019250613431848460029101015190565b61ffff16905060028301925081810283018451146134625760405163734fff6760e11b815260040160405180910390fd5b9193909250565b6040805160c081018252600080825260208201818152828401828152606084018381526080850184815260a08601948552888a01968701516048880151600790810b810b909452605088015167ffffffffffffffff9081169093526054880151600390810b900b909452605c870151830b90920b909152606485015181169092526065840151607d94850151909216835291929060ff8116600114156135145760188201915061354e565b8582018701600881015167ffffffffffffffff90811686526010820151600790810b900b6040870152601891820151166060860152909101905b50838111156135705760405163734fff6760e11b815260040160405180910390fd5b50935093915050565b6000613586826004615d07565b835110156135d65760405162461bcd60e51b815260206004820152601460248201527f746f55696e7433325f6f75744f66426f756e64730000000000000000000000006044820152606401610a5d565b50016004015190565b60006135ec826001615d07565b8351101561363c5760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610a5d565b50016001015190565b6000613652826002615d07565b835110156136a25760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610a5d565b50016002015190565b6060816136b981601f615d07565b10156137075760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610a5d565b6137118284615d07565b845110156137615760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610a5d565b60608215801561378057604051915060008252602082016040526137ca565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156137b95780518352602092830192016137a1565b5050858452601f01601f1916604052505b50949350505050565b6000818311156137ee576137e78284615e29565b9050610b91565b6137e78383615e29565b6033546001600160a01b031633146118285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a5d565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006138be826020615d07565b8351101561390e5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610a5d565b50016020015190565b6000613924826014615d07565b835110156139745760405162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e647300000000000000000000006044820152606401610a5d565b5001602001516c01000000000000000000000000900490565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820181905261010082018390526101208201526101408101919091526000806139fa60c9546001600160a01b031690565b6001600160a01b031663c0fd8bde856040518263ffffffff1660e01b8152600401613a259190615ac7565b60006040518083038186803b158015613a3d57600080fd5b505afa158015613a51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7991908101906156bc565b509150915080613a9c57604051632acbe91560e01b815260040160405180910390fd5b613aae82606001518360800151611579565b613ae4576040517f360f2d8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d25467ffffffffffffffff1667ffffffffffffffff168260a0015167ffffffffffffffff1611613b41576040517f88d1b84700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a082015160d2805467ffffffffffffffff191667ffffffffffffffff9092169190911790555092915050565b610d4f81614b06565b6000613bab6040805180820182526000808252602091820152815180830190925260d05461ffff16825260d1549082015290565b9050600080613bc260c9546001600160a01b031690565b84516040517fc0fd8bde0000000000000000000000000000000000000000000000000000000081526001600160a01b03929092169163c0fd8bde91613c0991600401615ac7565b60006040518083038186803b158015613c2157600080fd5b505afa158015613c35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c5d91908101906156bc565b509150915080613c8057604051632acbe91560e01b815260040160405180910390fd5b6000613c8f8360e0015161159c565b9050613c99611ba5565b61ffff16816040015161ffff1614158015613cbb5750604081015161ffff1615155b15613cd9576040516363daeb7760e01b815260040160405180910390fd5b600581602001516006811115613cff57634e487b7160e01b600052602160045260246000fd5b14613d1d576040516397363b3560e01b815260040160405180910390fd5b6000613d2c826060015161182a565b805190915063ffffffff16613d4660d45463ffffffff1690565b63ffffffff1610613d83576040517f88d1b84700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160d480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff909216919091179055604080518082018252606086015161ffff168082526080870151602080840182905260d0805461ffff19168417905560d182905560a089015160d2805467ffffffffffffffff191667ffffffffffffffff90921691909117905584518086018652600080825290820152845180860190955291845290830152907f6bce23ef3d34e51710fe4700b43ba5f1733a6215c883f384671a4ece3ea8aa2090879060d25460408051845161ffff908116825260209586015186830152845116918101919091529290910151606083015267ffffffffffffffff16608082015260a0015b60405180910390a150505050505050565b6000613eb4611c2e565b905060005b8151811015613f2c57600060c96004016000613efb858581518110613eee57634e487b7160e01b600052603260045260246000fd5b6020026020010151611a06565b81526020810191909152604001600020805460ff1916911515919091179055613f25600182615d07565b9050613eb9565b50613f3960cc600061509d565b60005b82515181101561400e578251805160cc919083908110613f6c57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182546001808201855560009485528385208351600290930201805461ffff191661ffff90931692909217825591909201519181019190915584518051919260cd929091613fdd9186908110613eee57634e487b7160e01b600052603260045260246000fd5b81526020810191909152604001600020805460ff19169115159190911790558061400681615e6c565b915050613f3c565b507fd451e0fcb7c5b9e13de533604d158069dad159841c45f39f09d379bfc423080d81614039611c2e565b604051614047929190615a24565b60405180910390a15050565b600061405e60ce5490565b825160ce5590507f74dbbbe280ef27b79a8a0c449d5ae2ba7a31849103241d0f98df70bbc9d03e378161409060ce5490565b60408051928352602083019190915201614047565b60006140b060cf5490565b825160cf5590507fcdb88a22f82ddd76115ab7c66cf08eb1e40afe80c9b31017eb2cbdb1570b33ae8161409060cf5490565b60006140f660c9546001600160a01b031690565b835160c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691821790556040517fc0fd8bde00000000000000000000000000000000000000000000000000000000815291925060009182919063c0fd8bde90614166908790600401615ac7565b60006040518083038186803b15801561417e57600080fd5b505afa158015614192573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141ba91908101906156bc565b5091509150806141dd576040516397363b3560e01b815260040160405180910390fd5b6141ef82606001518360800151611579565b61420c576040516397363b3560e01b815260040160405180910390fd5b60d25467ffffffffffffffff1667ffffffffffffffff168260a0015167ffffffffffffffff1614614250576040516309e9f6c160e11b815260040160405180910390fd5b600061425f8360e0015161159c565b905060068160200151600681111561428757634e487b7160e01b600052602160045260246000fd5b146142a5576040516309e9f6c160e11b815260040160405180910390fd5b60006142b482606001516119d5565b875181519192506001600160a01b039182169116146142e6576040516309e9f6c160e11b815260040160405180910390fd5b7fd495c4e5b386d59bccca38a2277b5d70a0f5e47d7b6587a45a6f5aca221a31258561431a60c9546001600160a01b031690565b604080516001600160a01b03938416815292909116602083015201613e99565b60008382013560f01c61434e600284615d07565b925061435e61ffff821684615d07565b92508483013560f81c5b95945050505050565b600061437c60ce5490565b610b919083615e0a565b60008060006143958585612c2d565b909250905060008180156143b957634e487b7160e01b600052602160045260246000fd5b146143d75760405163734fff6760e11b815260040160405180910390fd5b6000803660006143e8898988612cf4565b919a50929650909450909250905060005b8760ff168110156145d7576040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052906144428686868a612e3f565b600081815260d560205260409020548251939a50919450925067ffffffffffffffff90811691168110156145cc57600082815260d560209081526040918290208551815487840151888601516060808b015167ffffffffffffffff9586166bffffffffffffffffffffffff1990951685176801000000000000000063ffffffff60039690960b959095168502177fffffffff00000000000000000000000000000000ffffffffffffffffffffffff166c01000000000000000000000000600794850b808916919091027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff1691909117600160a01b92881692830217885560808d01516001909801805460a08f01519990950b88167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417979096169093029590951790558551918252938101919091529283019190915283917fd06a6b7f4918494b3719217d1802786c1f5112a6c1d88fe2cfec00b4584f6aec910160405180910390a25b5050506001016143f9565b508381146145f85760405163734fff6760e11b815260040160405180910390fd5b50505050505092915050565b6114b061461183836131e9565b614c56565b600054610100900460ff166146935760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a5d565b61182833613852565b6001600160a01b0381163b6147195760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610a5d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61477083614e78565b60008251118061477d5750805b15612aac576120128383614eb8565b36600085848661479c8683615d07565b926147a993929190615cdf565b9150915094509492505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018190526101008201839052610120820152610140810191909152600061482260c9546001600160a01b031690565b6001600160a01b031663c0fd8bde85856040518363ffffffff1660e01b815260040161484f929190615a98565b60006040518083038186803b15801561486757600080fd5b505afa15801561487b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148a391908101906156bc565b509092509050806148c757604051632acbe91560e01b815260040160405180910390fd5b50613304816060015182608001516040805160f09390931b7fffff000000000000000000000000000000000000000000000000000000000000166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b600080600061498485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614fba92505050565b600188019790915089013560f81c60005b8160ff168110156149cc5760148901988b01356bffffffffffffffffffffffff19166149c18482614fed565b935050600101614995565b50506bffffffffffffffffffffffff199081169516949094149794965093945050505050565b6040805160c08082018352838601602081810135831c600790810b810b958501959095526028820135831c6060850152603082013560e01c600390810b900b908401526034810135821c83526044810135821c840b90930b6080830152604c830135901c60a0820152605490920191903583831115614a845760405163734fff6760e11b815260040160405180910390fd5b935093915050565b6000610b91826060015183608001516040805160f09390931b7fffff000000000000000000000000000000000000000000000000000000000000166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b6000614b397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b8251909150614b49906000610d1d565b306001600160a01b031663e3795cc16040518163ffffffff1660e01b815260040160206040518083038186803b158015614b8257600080fd5b505afa158015614b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bba9190615871565b63ffffffff166397a6f30414614be3576040516397363b3560e01b815260040160405180910390fd5b7f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4981614c367f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604080516001600160a01b03938416815292909116602083015201614047565b60e081015160008080614c688461333a565b92509250925060005b82811015614e1e57600080614c87878786613469565b600081815260d5602052604090205482519887019892945090925067ffffffffffffffff9081169116811015614e1357600082815260d560209081526040918290208551815487840151888601516060808b015167ffffffffffffffff9586166bffffffffffffffffffffffff1990951685176801000000000000000063ffffffff60039690960b959095168502177fffffffff00000000000000000000000000000000ffffffffffffffffffffffff166c01000000000000000000000000600794850b808916919091027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff1691909117600160a01b92881692830217885560808d01516001909801805460a08f01519990950b88167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417979096169093029590951790558551918252938101919091529283019190915283917fd06a6b7f4918494b3719217d1802786c1f5112a6c1d88fe2cfec00b4584f6aec910160405180910390a25b505050600101614c71565b50606085015160a08601516040805161ffff909316835267ffffffffffffffff90911660208301527f943f0e8a16c19895fb87cbeb1a349ed86d7f31923089dd36c1a1ed5e300f267b910160405180910390a15050505050565b614e818161469c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b614f375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610a5d565b600080846001600160a01b031684604051614f5291906159aa565b600060405180830381855af49150503d8060008114614f8d576040519150601f19603f3d011682016040523d82523d6000602084013e614f92565b606091505b50915091506143688282604051806060016040528060278152602001615ef06027913961505f565b6000610b91600083604051602001614fd39291906159c6565b604051602081830303815290604052805160209091012090565b60006bffffffffffffffffffffffff19808316908416111561500d579091905b6040517f010000000000000000000000000000000000000000000000000000000000000060208201526bffffffffffffffffffffffff1980851660218301528316603582015261159590604901614fd3565b6060831561506e575081611595565b61159583838151156150835781518083602001fd5b8060405162461bcd60e51b8152600401610a5d9190615ac7565b5080546000825560020290600052602060002090810190610d4f91905b808211156150da57805461ffff19168155600060018201556002016150ba565b5090565b80356001600160a01b03811681146150f557600080fd5b919050565b60008083601f84011261510b578182fd5b50813567ffffffffffffffff811115615122578182fd5b6020830191508360208260051b8501011115612ced57600080fd5b600082601f83011261514d578081fd5b8151602067ffffffffffffffff82111561516957615169615eb3565b615177818360051b01615c86565b80838252828201915082860187848660071b8901011115615196578586fd5b855b858110156151f957608080838b0312156151b0578788fd5b6151b8615c39565b83518152868401518782015260406151d18186016152d4565b9082015260606151e28582016152d4565b908201528552938501939190910190600101615198565b5090979650505050505050565b805180151581146150f557600080fd5b600082601f830112615226578081fd5b813561523961523482615cb7565b615c86565b81815284602083860101111561524d578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112615277578081fd5b815161528561523482615cb7565b818152846020838601011115615299578283fd5b61246b826020830160208701615e40565b80516150f581615ec9565b805163ffffffff811681146150f557600080fd5b80516150f581615ed9565b805160ff811681146150f557600080fd5b6000602082840312156152f6578081fd5b611595826150de565b6000806000806000806000806000806101008b8d03121561531e578586fd5b6153278b6150de565b995060208b013567ffffffffffffffff80821115615343578788fd5b61534f8e838f016150fa565b909b50995060408d0135915080821115615367578788fd5b506153748d828e016150fa565b90985096505060608b013561538881615ec9565b945060808b0135935060a08b013561539f81615ed9565b8093505060c08b0135915060e08b013590509295989b9194979a5092959850565b600080604083850312156153d2578182fd5b6153db836150de565b9150602083013567ffffffffffffffff8111156153f6578182fd5b61540285828601615216565b9150509250929050565b6000806020838503121561541e578182fd5b823567ffffffffffffffff811115615434578283fd5b615440858286016150fa565b90969095509350505050565b60008060008060008060608789031215615464578384fd5b863567ffffffffffffffff8082111561547b578586fd5b6154878a838b016150fa565b9098509650602089013591508082111561549f578586fd5b6154ab8a838b016150fa565b909650945060408901359150808211156154c3578384fd5b506154d089828a016150fa565b979a9699509497509295939492505050565b600080600080600080608087890312156154fa578384fd5b863567ffffffffffffffff80821115615511578586fd5b61551d8a838b016150fa565b90985096506020890135915080821115615535578586fd5b5061554289828a016150fa565b909550935050604087013561555681615ed9565b9150606087013561556681615ed9565b809150509295509295509295565b600060208284031215615585578081fd5b5035919050565b60006020828403121561559d578081fd5b5051919050565b600080604083850312156155b6578182fd5b50508035926020909101359150565b600080602083850312156155d7578182fd5b823567ffffffffffffffff808211156155ee578384fd5b818501915085601f830112615601578384fd5b81358181111561560f578485fd5b866020828501011115615620578485fd5b60209290920196919550909350505050565b600060208284031215615643578081fd5b813567ffffffffffffffff811115615659578182fd5b61246b84828501615216565b600060408284031215615676578081fd5b6040516040810181811067ffffffffffffffff8211171561569957615699615eb3565b60405282356156a781615ec9565b81526020928301359281019290925250919050565b6000806000606084860312156156d0578081fd5b835167ffffffffffffffff808211156156e7578283fd5b9085019061016082880312156156fb578283fd5b615703615c62565b61570c836152d4565b815261571a602084016152b5565b602082015261572b604084016152b5565b604082015261573c606084016152aa565b60608201526080830151608082015261575760a084016152c9565b60a082015261576860c084016152d4565b60c082015260e08301518281111561577e578485fd5b61578a89828601615267565b60e08301525061010061579e8185016152b5565b9082015261012083810151838111156157b5578586fd5b6157c18a82870161513d565b9183019190915250610140838101519082015294506157e260208701615206565b935060408601519150808211156157f7578283fd5b5061580486828701615267565b9150509250925092565b60006020828403121561581f578081fd5b813561159581615ec9565b60006020828403121561583b578081fd5b815161159581615ec9565b60008060408385031215615858578182fd5b823561586381615ec9565b946020939093013593505050565b600060208284031215615882578081fd5b611595826152b5565b60006020828403121561589c578081fd5b813561159581615ed9565b6000815180845260208085019450808401835b838110156158ee576158db878351805161ffff168252602090810151910152565b60409690960195908201906001016158ba565b509495945050505050565b60008151808452615911816020860160208601615e40565b601f01601f19169290920160200192915050565b80518252602081015161596c6020840182805160070b825267ffffffffffffffff6020820151166020830152604081015160030b6040830152606081015160608301525050565b50604090810151805160070b60a0840152602081015167ffffffffffffffff1660c08401529081015160030b60e08301526060015161010090910152565b600082516159bc818460208701615e40565b9190910192915050565b7fff000000000000000000000000000000000000000000000000000000000000008360f81b16815260008251615a03816001850160208701615e40565b919091016001019392505050565b60208152600061159560208301846158a7565b604081526000615a3760408301856158a7565b828103602084015261436881856158a7565b6020808252825182820181905260009190848201906040850190845b81811015615a8c57615a78838551615925565b928401926101209290920191600101615a65565b50909695505050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60208152600061159560208301846158f9565b602081526000825160208084015261246b60408401826158f9565b815161ffff1681526020808301519082015260408101610b91565b602081526000825160028110615b2857615b28615e9d565b80602084015250602083015160078110615b4457615b44615e9d565b8060408401525061ffff6040840151166060830152606083015160808084015261246b60a08401826158f9565b6101208101610b918284615925565b815160070b815260208083015167ffffffffffffffff169082015260408083015160030b908201526060808301519082015260808101610b91565b602081526000825160208084015261246b60408401826158a7565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615c0a578283fd5b83018035915067ffffffffffffffff821115615c24578283fd5b602001915036819003821315612ced57600080fd5b6040516080810167ffffffffffffffff81118282101715615c5c57615c5c615eb3565b60405290565b604051610160810167ffffffffffffffff81118282101715615c5c57615c5c615eb3565b604051601f8201601f1916810167ffffffffffffffff81118282101715615caf57615caf615eb3565b604052919050565b600067ffffffffffffffff821115615cd157615cd1615eb3565b50601f01601f191660200190565b60008085851115615cee578182fd5b83861115615cfa578182fd5b5050820193919092039150565b60008219821115615d1a57615d1a615e87565b500190565b600181815b80851115615d5a578160001904821115615d4057615d40615e87565b80851615615d4d57918102915b93841c9390800290615d24565b509250929050565b60006115958383600082615d7857506001610b91565b81615d8557506000610b91565b8160018114615d9b5760028114615da557615dc1565b6001915050610b91565b60ff841115615db657615db6615e87565b50506001821b610b91565b5060208310610133831016604e8410600b8410161715615de4575081810a610b91565b615dee8383615d1f565b8060001904821115615e0257615e02615e87565b029392505050565b6000816000190483118215151615615e2457615e24615e87565b500290565b600082821015615e3b57615e3b615e87565b500390565b60005b83811015615e5b578181015183820152602001615e43565b838111156120125750506000910152565b6000600019821415615e8057615e80615e87565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff81168114610d4f57600080fd5b67ffffffffffffffff81168114610d4f57600080fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099b939a0e68f7cf23dd87f1d08ae171925bb84265dfec2ec4a23e360576bf68364736f6c63430008040033
0x6080604052600436106102e75760003560e01c80638881016f11610184578063b6ed701e116100d6578063d82d58a51161008a578063e3795cc111610064578063e3795cc11461096b578063ef9e5e2814610982578063f2fde38b1461099557600080fd5b8063d82d58a5146108fd578063e17efd4814610936578063e18910a31461095657600080fd5b8063caaf43f1116100bb578063caaf43f11461089b578063cb718a9b146108c8578063d47eed45146108dd57600080fd5b8063b6ed701e14610868578063b9256d281461088857600080fd5b80639a8a059211610138578063aac4129211610112578063aac41292146106ef578063b5dcc9111461080f578063b5ec02611461082f57600080fd5b80639a8a0592146107a5578063a38d81c6146107cd578063a4ae35e0146107ef57600080fd5b80638da5cb5b116101695780638da5cb5b146107475780639474f45b1461076557806396834ad31461078557600080fd5b80638881016f146106ef57806389a5bb4d1461072757600080fd5b806352d1902d1161023d5780636c72f51b116101f15780637b72bcae116101cb5780637b72bcae1461065b57806384acd1bb1461069057806387c5bd1b146106c257600080fd5b80636c72f51b146105fa578063711a2e2814610626578063715018a61461064657600080fd5b8063586d3cf811610222578063586d3cf81461058e57806358c67635146105ad5780636b7f53ca146105cd57600080fd5b806352d1902d1461052d57806354fd4d501461054257600080fd5b8063437209a71161029f5780634c469d8c116102795780634c469d8c146104aa5780634d7a734e146104fa5780634f1ef2861461051a57600080fd5b8063437209a7146103d55780634716e9c51461046b57806348b6404d1461048b57600080fd5b806331d98b3f116102d057806331d98b3f146103425780633659cfe61461036f578063426234e41461038f57600080fd5b8063146faf77146102ec57806314dd317f1461030e575b600080fd5b3480156102f857600080fd5b5061030c6103073660046152ff565b6109b5565b005b34801561031a57600080fd5b5061032e610329366004615632565b610b06565b604051905181526020015b60405180910390f35b34801561034e57600080fd5b5061036261035d366004615574565b610b61565b6040516103399190615b80565b34801561037b57600080fd5b5061030c61038a3660046152e5565b610b97565b34801561039b57600080fd5b506040805180820182526000808252602091820152815180830190925260d05461ffff16825260d154908201526040516103399190615af5565b3480156103e157600080fd5b5061045b6103f0366004615846565b6040805160f09390931b7fffff000000000000000000000000000000000000000000000000000000000000166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b6040519015158152602001610339565b61047e6104793660046154e2565b610d52565b6040516103399190615a49565b34801561049757600080fd5b5060ce545b604051908152602001610339565b3480156104b657600080fd5b506104e16104c5366004615574565b600090815260d5602052604090205467ffffffffffffffff1690565b60405167ffffffffffffffff9091168152602001610339565b34801561050657600080fd5b5061032e610515366004615632565b61128b565b61030c6105283660046153c0565b611325565b34801561053957600080fd5b5061049c6114b4565b34801561054e57600080fd5b50604080518082018252600581527f312e332e30000000000000000000000000000000000000000000000000000000602082015290516103399190615ac7565b34801561059a57600080fd5b5060d25467ffffffffffffffff166104e1565b3480156105b957600080fd5b5061045b6105c8366004615846565b611579565b3480156105d957600080fd5b506105ed6105e8366004615632565b61159c565b6040516103399190615b10565b34801561060657600080fd5b5060d45463ffffffff165b60405163ffffffff9091168152602001610339565b34801561063257600080fd5b506103626106413660046155a4565b6117a0565b34801561065257600080fd5b5061030c611816565b34801561066757600080fd5b5061067b610676366004615632565b61182a565b604051905163ffffffff168152602001610339565b34801561069c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610339565b3480156106ce57600080fd5b506106e26106dd366004615632565b611858565b6040516103399190615bbb565b3480156106fb57600080fd5b5061070f61070a366004615632565b6119d5565b60405190516001600160a01b03168152602001610339565b34801561073357600080fd5b5061049c610742366004615665565b611a06565b34801561075357600080fd5b506033546001600160a01b03166106aa565b34801561077157600080fd5b50610362610780366004615574565b611a70565b34801561079157600080fd5b506103626107a0366004615574565b611b03565b3480156107b157600080fd5b506107ba611ba5565b60405161ffff9091168152602001610339565b3480156107d957600080fd5b506107e2611c2e565b6040516103399190615a11565b3480156107fb57600080fd5b5061036261080a3660046155a4565b611ca1565b34801561081b57600080fd5b5061036261082a366004615574565b611cce565b34801561083b57600080fd5b5061045b61084a366004615574565b600090815260d5602052604090205467ffffffffffffffff16151590565b34801561087457600080fd5b5061030c6108833660046155c5565b611cfe565b61030c61089636600461544c565b612018565b3480156108a757600080fd5b506108bb6108b6366004615574565b61212b565b6040516103399190615b71565b3480156108d457600080fd5b5060cf5461049c565b3480156108e957600080fd5b5061049c6108f836600461540c565b612308565b34801561090957600080fd5b50610929610918366004615632565b604080516020810190915290815290565b6040516103399190615ada565b34801561094257600080fd5b5061049c610951366004615574565b612473565b34801561096257600080fd5b5061049c612489565b34801561097757600080fd5b506397a6f304610611565b61030c61099036600461540c565b612494565b3480156109a157600080fd5b5061030c6109b03660046152e5565b6125f9565b600054610100900460ff16158080156109d55750600054600160ff909116105b806109ef5750303b1580156109ef575060005460ff166001145b610a665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610a89576000805461ff0019166101001790555b610a91612695565b610a9961271a565b610aab8b8b8b8b8b8b8b8b8b8b612797565b610ab3611816565b8015610af9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6040805160208101909152600081526000610b218382612a0b565b67ffffffffffffffff168252610b38600882615d07565b905080835114610b5b576040516397363b3560e01b815260040160405180910390fd5b50919050565b604080516080810182526000808252602082018190529181018290526060810191909152610b918261080a612489565b92915050565b306001600160a01b037f000000000000000000000000f5bbe9558f4bf37f1eb82fb2cedb1c775fa56832161415610c365760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610a5d565b7f000000000000000000000000f5bbe9558f4bf37f1eb82fb2cedb1c775fa568326001600160a01b0316610c917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610d0d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610a5d565b610d1681612a71565b610d4f8160005b6040519080825280601f01601f191660200182016040528015610d47576020820181803683370190505b506000612a79565b50565b60606000610d608888612308565b905080341015610d9c576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508367ffffffffffffffff811115610dc457634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610e5457816020015b610e41604080516060808201835260008083528351608081018552818152602081810183905294810182905291820152909182019081526040805160808101825260008082526020828101829052928201819052606082015291015290565b815260200190600190039081610de25790505b50905060005b8681101561120a576004888883818110610e8457634e487b7160e01b600052603260045260246000fd5b9050602002810190610e969190615bd6565b9050118015610eea575063504e4155610ee2898984818110610ec857634e487b7160e01b600052603260045260246000fd5b9050602002810190610eda9190615bd6565b503560e01c90565b63ffffffff16145b156110d757600080610f2c8a8a85818110610f1557634e487b7160e01b600052603260045260246000fd5b9050602002810190610f279190615bd6565b612c2d565b90925090506000818015610f5057634e487b7160e01b600052602160045260246000fd5b14610f6e5760405163734fff6760e11b815260040160405180910390fd5b50600080366000610fb08d8d88818110610f9857634e487b7160e01b600052603260045260246000fd5b9050602002810190610faa9190615bd6565b87612cf4565b93985091965094509250905060005b8360ff168110156110ac576040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052906110088786868b612e3f565b91995092509050600061101c8f8f84612f54565b90508d81148061105657508a818151811061104757634e487b7160e01b600052603260045260246000fd5b60209081029190910101515115155b15611063575050506110a4565b825167ffffffffffffffff908116908e16811080159061108d57508c67ffffffffffffffff168111155b1561109f5761109f8c83858785612fa5565b505050505b600101610fbf565b508481146110cd5760405163734fff6760e11b815260040160405180910390fd5b5050505050611202565b606060006111158a8a858181106110fe57634e487b7160e01b600052603260045260246000fd5b90506020028101906111109190615bd6565b6131e9565b60e00151915060009050808061112a8461333a565b92509250925060005b828110156111fc576040848601015160209060006111528e8e84612f54565b90508c81148061118c575089818151811061117d57634e487b7160e01b600052603260045260246000fd5b60209081029190910101515115155b1561119d57505050928101926111f4565b60006111aa898988613469565b50805190915067ffffffffffffffff908116908e1681108015906111d857508c67ffffffffffffffff168111155b156111ea576111ea8c84868585612fa5565b5050509483019450505b600101611133565b50505050505b600101610e5a565b5060005b848110156112805781818151811061123657634e487b7160e01b600052603260045260246000fd5b602090810291909101015151611278576040517f45805f5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161120e565b509695505050505050565b6040805160208101909152600081526000806112a78482612a0b565b90506112b4600883615d07565b915060006112c28584612a0b565b90506112cf600884615d07565b92506112e667ffffffffffffffff8216600a615d62565b6112fa9067ffffffffffffffff8416615e0a565b84528451831461131d576040516397363b3560e01b815260040160405180910390fd5b505050919050565b306001600160a01b037f000000000000000000000000f5bbe9558f4bf37f1eb82fb2cedb1c775fa568321614156113c45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610a5d565b7f000000000000000000000000f5bbe9558f4bf37f1eb82fb2cedb1c775fa568326001600160a01b031661141f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461149b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610a5d565b6114a482612a71565b6114b082826001612a79565b5050565b6000306001600160a01b037f000000000000000000000000f5bbe9558f4bf37f1eb82fb2cedb1c775fa5683216146115545760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a5d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60d05460009061ffff8481169116148015611595575060d15482145b9392505050565b6115c8604080516080810190915280600081526020016000815260006020820152606060409091015290565b6000806115d58482613579565b905063ffffffff8116635054474d14611601576040516397363b3560e01b815260040160405180910390fd5b61160c600483615d07565b9150600061161a85846135df565b90508060ff16600181111561163f57634e487b7160e01b600052602160045260246000fd5b8490600181111561166057634e487b7160e01b600052602160045260246000fd5b9081600181111561168157634e487b7160e01b600052602160045260246000fd5b90525061168f600184615d07565b92506001845160018111156116b457634e487b7160e01b600052602160045260246000fd5b146116d2576040516363daeb7760e01b815260040160405180910390fd5b60006116de86856135df565b90508060ff16600681111561170357634e487b7160e01b600052602160045260246000fd5b8560200190600681111561172757634e487b7160e01b600052602160045260246000fd5b9081600681111561174857634e487b7160e01b600052602160045260246000fd5b905250611756600185615d07565b93506117628685613645565b61ffff166040860152611776600285615d07565b9350611791848588516117899190615e29565b8891906136ab565b60608601525092949350505050565b6040805160808101825260008082526020820181905291810182905260608101919091526117cd83611a70565b9050816117de4283606001516137d3565b1115610b91576040517f19abf40e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181e6137f8565b6118286000613852565b565b60408051602081019091526000815260006118458382613579565b63ffffffff168252610b38600482615d07565b60408051602081019091526060815260008061187484826135df565b9050611881600183615d07565b91508060ff1667ffffffffffffffff8111156118ad57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156118f257816020015b60408051808201909152600080825260208201528152602001906001900390816118cb5790505b50835260005b8160ff168110156119ac5761190d8584613645565b845180518390811061192f57634e487b7160e01b600052603260045260246000fd5b602090810291909101015161ffff909116905261194d600284615d07565b925061195985846138b1565b845180518390811061197b57634e487b7160e01b600052603260045260246000fd5b602002602001015160200181815250506020836119989190615d07565b9250806119a481615e6c565b9150506118f8565b50818451146119ce576040516397363b3560e01b815260040160405180910390fd5b5050919050565b60408051602081019091526000815260006119f08382613917565b6001600160a01b03168252610b38601482615d07565b600081600001518260200151604051602001611a5392919060f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b604051602081830303815290604052805190602001209050919050565b60408051608081018252600080825260208083018281528385018381526060850184815287855260d590935294909220805467ffffffffffffffff808216938490526801000000000000000091829004600390810b810b900b9096526001820154600781810b810b900b865204909416909152909190610b5b57604051630295d7cd60e31b815260040160405180910390fd5b60408051608081018252600080825260208083018281528385018381526060850184815287855260d590935294909220805467ffffffffffffffff80821693849052680100000000000000008204600390810b810b900b9096526c010000000000000000000000008104600790810b810b900b8552600160a01b9004909416909152909190610b5b57604051630295d7cd60e31b815260040160405180910390fd5b6000611bb960c9546001600160a01b031690565b6001600160a01b0316639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015611bf157600080fd5b505afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c29919061582a565b905090565b606060c9600301805480602002602001604051908101604052809291908181526020016000905b82821015611c985760008481526020908190206040805180820190915260028502909101805461ffff168252600190810154828401529083529092019101611c55565b50505050905090565b6040805160808101825260008082526020820181905291810182905260608101919091526117cd83611b03565b604080516080810182526000808252602082018190529181018290526060810191909152610b9182610641612489565b6000611d3f83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061398d92505050565b90506000611d508260e0015161159c565b9050611d5a611ba5565b61ffff16816040015161ffff1614158015611d7c5750604081015161ffff1615155b15611d9a576040516363daeb7760e01b815260040160405180910390fd5b600081602001516006811115611dc057634e487b7160e01b600052602160045260246000fd5b1415611e0657604081015161ffff16611dec576040516363daeb7760e01b815260040160405180910390fd5b611e01611dfc82606001516119d5565b613b6e565b612012565b600181602001516006811115611e2c57634e487b7160e01b600052602160045260246000fd5b1415611e5357611e01611e4e8260600151604080516020810190915290815290565b613b77565b600281602001516006811115611e7957634e487b7160e01b600052602160045260246000fd5b1415611e9457611e01611e8f8260600151611858565b613eaa565b600381602001516006811115611eba57634e487b7160e01b600052602160045260246000fd5b1415611ed557611e01611ed0826060015161128b565b614053565b600481602001516006811115611efb57634e487b7160e01b600052602160045260246000fd5b1415611f1657611e01611f118260600151610b06565b6140a5565b600581602001516006811115611f3c57634e487b7160e01b600052602160045260246000fd5b1415611f5b576040516397363b3560e01b815260040160405180910390fd5b600681602001516006811115611f8157634e487b7160e01b600052602160045260246000fd5b1415611ff957604081015161ffff16611fad576040516363daeb7760e01b815260040160405180910390fd5b611e01611fbd82606001516119d5565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506140e292505050565b6040516397363b3560e01b815260040160405180910390fd5b50505050565b8281146120385760405163a9cb9e0d60e01b815260040160405180910390fd5b60005b838110156120f05782828281811061206357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612078919061588b565b67ffffffffffffffff166120c88686848181106120a557634e487b7160e01b600052603260045260246000fd5b90506020020135600090815260d5602052604090205467ffffffffffffffff1690565b67ffffffffffffffff1610156120e8576120e28787612494565b50612123565b60010161203b565b506040517fde2c57fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b61218a604080516060808201835260008083528351608081018552818152602081810183905294810182905291820152909182019081526040805160808101825260008082526020828101829052928201819052606082015291015290565b6040805160c08082018352600080835260208084018290528385018290526060808501839052608080860184905260a095860184905288845260d5835286842087519586018852805467ffffffffffffffff808216885268010000000000000000808304600390810b810b900b968901969096526c010000000000000000000000008204600790810b810b810b9a89019a909a52600160a01b9091048116938701939093526001015480880b880b90970b90850152940490931691810191909152805190915067ffffffffffffffff1661227757604051630295d7cd60e31b815260040160405180910390fd5b91815260408083015160208084018051600793840b840b9052606080870151825167ffffffffffffffff9182169085015283880180518451600391820b820b9089015289519451948316948401949094526080890151878901805191880b90970b905260a089015186519083169501949094529251845190830b90920b919094015293519051931692019190915290565b600080805b8381101561246157600485858381811061233757634e487b7160e01b600052603260045260246000fd5b90506020028101906123499190615bd6565b9050118015612383575063504e415561237b868684818110610ec857634e487b7160e01b600052603260045260246000fd5b63ffffffff16145b15612441576000806123ae878785818110610f1557634e487b7160e01b600052603260045260246000fd5b909250905060008180156123d257634e487b7160e01b600052602160045260246000fd5b146123f05760405163734fff6760e11b815260040160405180910390fd5b61242b87878581811061241357634e487b7160e01b600052603260045260246000fd5b90506020028101906124259190615bd6565b8461433a565b6124389060ff1685615d07565b9350505061244f565b61244c600183615d07565b91505b8061245981615e6c565b91505061230d565b5061246b81614371565b949350505050565b60008161247f60ce5490565b610b919190615e0a565b6000611c2960cf5490565b6000805b828110156125b15760048484838181106124c257634e487b7160e01b600052603260045260246000fd5b90506020028101906124d49190615bd6565b905011801561250e575063504e4155612506858584818110610ec857634e487b7160e01b600052603260045260246000fd5b63ffffffff16145b156125615761254d84848381811061253657634e487b7160e01b600052603260045260246000fd5b90506020028101906125489190615bd6565b614386565b61255a9060ff1683615d07565b91506125a9565b61259b84848381811061258457634e487b7160e01b600052603260045260246000fd5b90506020028101906125969190615bd6565b614604565b6125a6600183615d07565b91505b600101612498565b5060006125bd82614371565b905080341015612012576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126016137f8565b6001600160a01b03811661267d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a5d565b610d4f81613852565b6001600160a01b03163b151590565b600054610100900460ff166127125760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a5d565b611828614616565b600054610100900460ff166118285760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a5d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038c161790558786146127df5760405163a9cb9e0d60e01b815260040160405180910390fd5b60005b888110156129a257600060405180604001604052808c8c8581811061281757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061282c919061580e565b61ffff1681526020018a8a8581811061285557634e487b7160e01b600052603260045260246000fd5b602090810292909201359092528251838201516040805160f09390931b7fffff00000000000000000000000000000000000000000000000000000000000016838501526022808401929092528051808403909201825260429092018252805190830120600090815260cd9092529020549192505060ff16156128ea5760405163a9cb9e0d60e01b815260040160405180910390fd5b600160cd60006128f984611a06565b81526020808201929092526040016000908120805460ff19169315159390931790925560cc8054600181018255925282517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe6002909302928301805461ffff191661ffff90921691909117905591909101517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebf909101558061299a81615e6c565b9150506127e2565b506040805180820190915261ffff86168082526020820186905260d0805461ffff1916909117905560d185905560d2805467ffffffffffffffff191667ffffffffffffffff8616179055506129f68260cf55565b6129ff8160ce55565b50505050505050505050565b6000612a18826008615d07565b83511015612a685760405162461bcd60e51b815260206004820152601460248201527f746f55696e7436345f6f75744f66426f756e64730000000000000000000000006044820152606401610a5d565b50016008015190565b610d4f6137f8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612ab157612aac8361469c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612aea57600080fd5b505afa925050508015612b1a575060408051601f3d908101601f19168201909252612b179181019061558c565b60015b612b8c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610a5d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612c215760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610a5d565b50612aac838383614767565b60046000833560e01c63504e41558114612c5a5760405163734fff6760e11b815260040160405180910390fd5b60018084019386013560f81c908114612c865760405163734fff6760e11b815260040160405180910390fd5b50508184016001013560f890811c9092016002818101939186010135901c60ff168015612cc357634e487b7160e01b600052602160045260246000fd5b60019290920191905081831015612ced5760405163734fff6760e11b815260040160405180910390fd5b9250929050565b600080803681612d0888888880820361478c565b600296509092509050813560f01c60606000612d2e612d2986868b8761478c565b6147b6565b60e0015160048082015161ffff86169a909a01999193509150634155575663ffffffff821614612d715760405163734fff6760e11b815260040160405180910390fd5b8183016001015160009060ff168015612d9a57634e487b7160e01b600052602160045260246000fd5b60019093019290506000818015612dc157634e487b7160e01b600052602160045260246000fd5b14612ddf5760405163734fff6760e11b815260040160405180910390fd5b602c848401015184516c0100000000000000000000000090910460601b9950602090930192831115612e245760405163734fff6760e11b815260040160405180910390fd5b5050600188019b969a505050509381013560f81c9550935050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052600283019282903690829088013560f01c612e8d8989898461478c565b925092508061ffff16870196506000612eaa8a8a8a8e8888614940565b9750905080612ecc5760405163734fff6760e11b815260040160405180910390fd5b6000843560f81c8015612eef57634e487b7160e01b600052602160045260246000fd5b90506000818015612f1057634e487b7160e01b600052602160045260246000fd5b1415612f2c57612f22858560016149f2565b9097509550612f45565b60405163734fff6760e11b815260040160405180910390fd5b50505050509450945094915050565b6000805b8381101561246b5782858583818110612f8157634e487b7160e01b600052603260045260246000fd5b905060200201351415612f935761246b565b80612f9d81615e6c565b915050612f58565b82858581518110612fc657634e487b7160e01b600052603260045260246000fd5b602002602001015160000181815250508160400151858581518110612ffb57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516000019060070b908160070b81525050816060015185858151811061303c57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516020019067ffffffffffffffff16908167ffffffffffffffff1681525050816020015185858151811061308b57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516040019060030b908160030b81525050808585815181106130c857634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516060018181525050816080015185858151811061310157634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516000019060070b908160070b815250508160a0015185858151811061314257634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516020019067ffffffffffffffff16908167ffffffffffffffff1681525050816020015185858151811061319157634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516040019060030b908160030b81525050808585815181106131ce57634e487b7160e01b600052603260045260246000fd5b60200260200101516040015160600181815250505050505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018190526101008201839052610120820152610140810191909152600061325560c9546001600160a01b031690565b6001600160a01b031663c0fd8bde85856040518363ffffffff1660e01b8152600401613282929190615a98565b60006040518083038186803b15801561329a57600080fd5b505afa1580156132ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132d691908101906156bc565b509092509050806132fa57604051632acbe91560e01b815260040160405180910390fd5b5061330481614a8c565b610b91576040517fe60dce7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080808061334d858260049101015190565b90506004840193508063ffffffff1663503257481461337f5760405163734fff6760e11b815260040160405180910390fd5b6002858501810151940193600361ffff8216146133af5760405163734fff6760e11b815260040160405180910390fd5b60028501945060006133c5878760029101015190565b905060028601955060006133dd888860019101015190565b90508161ffff16870196508060ff1660021461340c5760405163734fff6760e11b815260040160405180910390fd5b505050508284016002015161ffff169150600283019250613431848460029101015190565b61ffff16905060028301925081810283018451146134625760405163734fff6760e11b815260040160405180910390fd5b9193909250565b6040805160c081018252600080825260208201818152828401828152606084018381526080850184815260a08601948552888a01968701516048880151600790810b810b909452605088015167ffffffffffffffff9081169093526054880151600390810b900b909452605c870151830b90920b909152606485015181169092526065840151607d94850151909216835291929060ff8116600114156135145760188201915061354e565b8582018701600881015167ffffffffffffffff90811686526010820151600790810b900b6040870152601891820151166060860152909101905b50838111156135705760405163734fff6760e11b815260040160405180910390fd5b50935093915050565b6000613586826004615d07565b835110156135d65760405162461bcd60e51b815260206004820152601460248201527f746f55696e7433325f6f75744f66426f756e64730000000000000000000000006044820152606401610a5d565b50016004015190565b60006135ec826001615d07565b8351101561363c5760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610a5d565b50016001015190565b6000613652826002615d07565b835110156136a25760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610a5d565b50016002015190565b6060816136b981601f615d07565b10156137075760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610a5d565b6137118284615d07565b845110156137615760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610a5d565b60608215801561378057604051915060008252602082016040526137ca565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156137b95780518352602092830192016137a1565b5050858452601f01601f1916604052505b50949350505050565b6000818311156137ee576137e78284615e29565b9050610b91565b6137e78383615e29565b6033546001600160a01b031633146118285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a5d565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006138be826020615d07565b8351101561390e5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610a5d565b50016020015190565b6000613924826014615d07565b835110156139745760405162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e647300000000000000000000006044820152606401610a5d565b5001602001516c01000000000000000000000000900490565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820181905261010082018390526101208201526101408101919091526000806139fa60c9546001600160a01b031690565b6001600160a01b031663c0fd8bde856040518263ffffffff1660e01b8152600401613a259190615ac7565b60006040518083038186803b158015613a3d57600080fd5b505afa158015613a51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7991908101906156bc565b509150915080613a9c57604051632acbe91560e01b815260040160405180910390fd5b613aae82606001518360800151611579565b613ae4576040517f360f2d8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d25467ffffffffffffffff1667ffffffffffffffff168260a0015167ffffffffffffffff1611613b41576040517f88d1b84700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a082015160d2805467ffffffffffffffff191667ffffffffffffffff9092169190911790555092915050565b610d4f81614b06565b6000613bab6040805180820182526000808252602091820152815180830190925260d05461ffff16825260d1549082015290565b9050600080613bc260c9546001600160a01b031690565b84516040517fc0fd8bde0000000000000000000000000000000000000000000000000000000081526001600160a01b03929092169163c0fd8bde91613c0991600401615ac7565b60006040518083038186803b158015613c2157600080fd5b505afa158015613c35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c5d91908101906156bc565b509150915080613c8057604051632acbe91560e01b815260040160405180910390fd5b6000613c8f8360e0015161159c565b9050613c99611ba5565b61ffff16816040015161ffff1614158015613cbb5750604081015161ffff1615155b15613cd9576040516363daeb7760e01b815260040160405180910390fd5b600581602001516006811115613cff57634e487b7160e01b600052602160045260246000fd5b14613d1d576040516397363b3560e01b815260040160405180910390fd5b6000613d2c826060015161182a565b805190915063ffffffff16613d4660d45463ffffffff1690565b63ffffffff1610613d83576040517f88d1b84700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160d480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff909216919091179055604080518082018252606086015161ffff168082526080870151602080840182905260d0805461ffff19168417905560d182905560a089015160d2805467ffffffffffffffff191667ffffffffffffffff90921691909117905584518086018652600080825290820152845180860190955291845290830152907f6bce23ef3d34e51710fe4700b43ba5f1733a6215c883f384671a4ece3ea8aa2090879060d25460408051845161ffff908116825260209586015186830152845116918101919091529290910151606083015267ffffffffffffffff16608082015260a0015b60405180910390a150505050505050565b6000613eb4611c2e565b905060005b8151811015613f2c57600060c96004016000613efb858581518110613eee57634e487b7160e01b600052603260045260246000fd5b6020026020010151611a06565b81526020810191909152604001600020805460ff1916911515919091179055613f25600182615d07565b9050613eb9565b50613f3960cc600061509d565b60005b82515181101561400e578251805160cc919083908110613f6c57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182546001808201855560009485528385208351600290930201805461ffff191661ffff90931692909217825591909201519181019190915584518051919260cd929091613fdd9186908110613eee57634e487b7160e01b600052603260045260246000fd5b81526020810191909152604001600020805460ff19169115159190911790558061400681615e6c565b915050613f3c565b507fd451e0fcb7c5b9e13de533604d158069dad159841c45f39f09d379bfc423080d81614039611c2e565b604051614047929190615a24565b60405180910390a15050565b600061405e60ce5490565b825160ce5590507f74dbbbe280ef27b79a8a0c449d5ae2ba7a31849103241d0f98df70bbc9d03e378161409060ce5490565b60408051928352602083019190915201614047565b60006140b060cf5490565b825160cf5590507fcdb88a22f82ddd76115ab7c66cf08eb1e40afe80c9b31017eb2cbdb1570b33ae8161409060cf5490565b60006140f660c9546001600160a01b031690565b835160c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691821790556040517fc0fd8bde00000000000000000000000000000000000000000000000000000000815291925060009182919063c0fd8bde90614166908790600401615ac7565b60006040518083038186803b15801561417e57600080fd5b505afa158015614192573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141ba91908101906156bc565b5091509150806141dd576040516397363b3560e01b815260040160405180910390fd5b6141ef82606001518360800151611579565b61420c576040516397363b3560e01b815260040160405180910390fd5b60d25467ffffffffffffffff1667ffffffffffffffff168260a0015167ffffffffffffffff1614614250576040516309e9f6c160e11b815260040160405180910390fd5b600061425f8360e0015161159c565b905060068160200151600681111561428757634e487b7160e01b600052602160045260246000fd5b146142a5576040516309e9f6c160e11b815260040160405180910390fd5b60006142b482606001516119d5565b875181519192506001600160a01b039182169116146142e6576040516309e9f6c160e11b815260040160405180910390fd5b7fd495c4e5b386d59bccca38a2277b5d70a0f5e47d7b6587a45a6f5aca221a31258561431a60c9546001600160a01b031690565b604080516001600160a01b03938416815292909116602083015201613e99565b60008382013560f01c61434e600284615d07565b925061435e61ffff821684615d07565b92508483013560f81c5b95945050505050565b600061437c60ce5490565b610b919083615e0a565b60008060006143958585612c2d565b909250905060008180156143b957634e487b7160e01b600052602160045260246000fd5b146143d75760405163734fff6760e11b815260040160405180910390fd5b6000803660006143e8898988612cf4565b919a50929650909450909250905060005b8760ff168110156145d7576040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052906144428686868a612e3f565b600081815260d560205260409020548251939a50919450925067ffffffffffffffff90811691168110156145cc57600082815260d560209081526040918290208551815487840151888601516060808b015167ffffffffffffffff9586166bffffffffffffffffffffffff1990951685176801000000000000000063ffffffff60039690960b959095168502177fffffffff00000000000000000000000000000000ffffffffffffffffffffffff166c01000000000000000000000000600794850b808916919091027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff1691909117600160a01b92881692830217885560808d01516001909801805460a08f01519990950b88167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417979096169093029590951790558551918252938101919091529283019190915283917fd06a6b7f4918494b3719217d1802786c1f5112a6c1d88fe2cfec00b4584f6aec910160405180910390a25b5050506001016143f9565b508381146145f85760405163734fff6760e11b815260040160405180910390fd5b50505050505092915050565b6114b061461183836131e9565b614c56565b600054610100900460ff166146935760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a5d565b61182833613852565b6001600160a01b0381163b6147195760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610a5d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61477083614e78565b60008251118061477d5750805b15612aac576120128383614eb8565b36600085848661479c8683615d07565b926147a993929190615cdf565b9150915094509492505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018190526101008201839052610120820152610140810191909152600061482260c9546001600160a01b031690565b6001600160a01b031663c0fd8bde85856040518363ffffffff1660e01b815260040161484f929190615a98565b60006040518083038186803b15801561486757600080fd5b505afa15801561487b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148a391908101906156bc565b509092509050806148c757604051632acbe91560e01b815260040160405180910390fd5b50613304816060015182608001516040805160f09390931b7fffff000000000000000000000000000000000000000000000000000000000000166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b600080600061498485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614fba92505050565b600188019790915089013560f81c60005b8160ff168110156149cc5760148901988b01356bffffffffffffffffffffffff19166149c18482614fed565b935050600101614995565b50506bffffffffffffffffffffffff199081169516949094149794965093945050505050565b6040805160c08082018352838601602081810135831c600790810b810b958501959095526028820135831c6060850152603082013560e01c600390810b900b908401526034810135821c83526044810135821c840b90930b6080830152604c830135901c60a0820152605490920191903583831115614a845760405163734fff6760e11b815260040160405180910390fd5b935093915050565b6000610b91826060015183608001516040805160f09390931b7fffff000000000000000000000000000000000000000000000000000000000000166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b6000614b397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b8251909150614b49906000610d1d565b306001600160a01b031663e3795cc16040518163ffffffff1660e01b815260040160206040518083038186803b158015614b8257600080fd5b505afa158015614b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bba9190615871565b63ffffffff166397a6f30414614be3576040516397363b3560e01b815260040160405180910390fd5b7f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4981614c367f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604080516001600160a01b03938416815292909116602083015201614047565b60e081015160008080614c688461333a565b92509250925060005b82811015614e1e57600080614c87878786613469565b600081815260d5602052604090205482519887019892945090925067ffffffffffffffff9081169116811015614e1357600082815260d560209081526040918290208551815487840151888601516060808b015167ffffffffffffffff9586166bffffffffffffffffffffffff1990951685176801000000000000000063ffffffff60039690960b959095168502177fffffffff00000000000000000000000000000000ffffffffffffffffffffffff166c01000000000000000000000000600794850b808916919091027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff1691909117600160a01b92881692830217885560808d01516001909801805460a08f01519990950b88167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417979096169093029590951790558551918252938101919091529283019190915283917fd06a6b7f4918494b3719217d1802786c1f5112a6c1d88fe2cfec00b4584f6aec910160405180910390a25b505050600101614c71565b50606085015160a08601516040805161ffff909316835267ffffffffffffffff90911660208301527f943f0e8a16c19895fb87cbeb1a349ed86d7f31923089dd36c1a1ed5e300f267b910160405180910390a15050505050565b614e818161469c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b614f375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610a5d565b600080846001600160a01b031684604051614f5291906159aa565b600060405180830381855af49150503d8060008114614f8d576040519150601f19603f3d011682016040523d82523d6000602084013e614f92565b606091505b50915091506143688282604051806060016040528060278152602001615ef06027913961505f565b6000610b91600083604051602001614fd39291906159c6565b604051602081830303815290604052805160209091012090565b60006bffffffffffffffffffffffff19808316908416111561500d579091905b6040517f010000000000000000000000000000000000000000000000000000000000000060208201526bffffffffffffffffffffffff1980851660218301528316603582015261159590604901614fd3565b6060831561506e575081611595565b61159583838151156150835781518083602001fd5b8060405162461bcd60e51b8152600401610a5d9190615ac7565b5080546000825560020290600052602060002090810190610d4f91905b808211156150da57805461ffff19168155600060018201556002016150ba565b5090565b80356001600160a01b03811681146150f557600080fd5b919050565b60008083601f84011261510b578182fd5b50813567ffffffffffffffff811115615122578182fd5b6020830191508360208260051b8501011115612ced57600080fd5b600082601f83011261514d578081fd5b8151602067ffffffffffffffff82111561516957615169615eb3565b615177818360051b01615c86565b80838252828201915082860187848660071b8901011115615196578586fd5b855b858110156151f957608080838b0312156151b0578788fd5b6151b8615c39565b83518152868401518782015260406151d18186016152d4565b9082015260606151e28582016152d4565b908201528552938501939190910190600101615198565b5090979650505050505050565b805180151581146150f557600080fd5b600082601f830112615226578081fd5b813561523961523482615cb7565b615c86565b81815284602083860101111561524d578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112615277578081fd5b815161528561523482615cb7565b818152846020838601011115615299578283fd5b61246b826020830160208701615e40565b80516150f581615ec9565b805163ffffffff811681146150f557600080fd5b80516150f581615ed9565b805160ff811681146150f557600080fd5b6000602082840312156152f6578081fd5b611595826150de565b6000806000806000806000806000806101008b8d03121561531e578586fd5b6153278b6150de565b995060208b013567ffffffffffffffff80821115615343578788fd5b61534f8e838f016150fa565b909b50995060408d0135915080821115615367578788fd5b506153748d828e016150fa565b90985096505060608b013561538881615ec9565b945060808b0135935060a08b013561539f81615ed9565b8093505060c08b0135915060e08b013590509295989b9194979a5092959850565b600080604083850312156153d2578182fd5b6153db836150de565b9150602083013567ffffffffffffffff8111156153f6578182fd5b61540285828601615216565b9150509250929050565b6000806020838503121561541e578182fd5b823567ffffffffffffffff811115615434578283fd5b615440858286016150fa565b90969095509350505050565b60008060008060008060608789031215615464578384fd5b863567ffffffffffffffff8082111561547b578586fd5b6154878a838b016150fa565b9098509650602089013591508082111561549f578586fd5b6154ab8a838b016150fa565b909650945060408901359150808211156154c3578384fd5b506154d089828a016150fa565b979a9699509497509295939492505050565b600080600080600080608087890312156154fa578384fd5b863567ffffffffffffffff80821115615511578586fd5b61551d8a838b016150fa565b90985096506020890135915080821115615535578586fd5b5061554289828a016150fa565b909550935050604087013561555681615ed9565b9150606087013561556681615ed9565b809150509295509295509295565b600060208284031215615585578081fd5b5035919050565b60006020828403121561559d578081fd5b5051919050565b600080604083850312156155b6578182fd5b50508035926020909101359150565b600080602083850312156155d7578182fd5b823567ffffffffffffffff808211156155ee578384fd5b818501915085601f830112615601578384fd5b81358181111561560f578485fd5b866020828501011115615620578485fd5b60209290920196919550909350505050565b600060208284031215615643578081fd5b813567ffffffffffffffff811115615659578182fd5b61246b84828501615216565b600060408284031215615676578081fd5b6040516040810181811067ffffffffffffffff8211171561569957615699615eb3565b60405282356156a781615ec9565b81526020928301359281019290925250919050565b6000806000606084860312156156d0578081fd5b835167ffffffffffffffff808211156156e7578283fd5b9085019061016082880312156156fb578283fd5b615703615c62565b61570c836152d4565b815261571a602084016152b5565b602082015261572b604084016152b5565b604082015261573c606084016152aa565b60608201526080830151608082015261575760a084016152c9565b60a082015261576860c084016152d4565b60c082015260e08301518281111561577e578485fd5b61578a89828601615267565b60e08301525061010061579e8185016152b5565b9082015261012083810151838111156157b5578586fd5b6157c18a82870161513d565b9183019190915250610140838101519082015294506157e260208701615206565b935060408601519150808211156157f7578283fd5b5061580486828701615267565b9150509250925092565b60006020828403121561581f578081fd5b813561159581615ec9565b60006020828403121561583b578081fd5b815161159581615ec9565b60008060408385031215615858578182fd5b823561586381615ec9565b946020939093013593505050565b600060208284031215615882578081fd5b611595826152b5565b60006020828403121561589c578081fd5b813561159581615ed9565b6000815180845260208085019450808401835b838110156158ee576158db878351805161ffff168252602090810151910152565b60409690960195908201906001016158ba565b509495945050505050565b60008151808452615911816020860160208601615e40565b601f01601f19169290920160200192915050565b80518252602081015161596c6020840182805160070b825267ffffffffffffffff6020820151166020830152604081015160030b6040830152606081015160608301525050565b50604090810151805160070b60a0840152602081015167ffffffffffffffff1660c08401529081015160030b60e08301526060015161010090910152565b600082516159bc818460208701615e40565b9190910192915050565b7fff000000000000000000000000000000000000000000000000000000000000008360f81b16815260008251615a03816001850160208701615e40565b919091016001019392505050565b60208152600061159560208301846158a7565b604081526000615a3760408301856158a7565b828103602084015261436881856158a7565b6020808252825182820181905260009190848201906040850190845b81811015615a8c57615a78838551615925565b928401926101209290920191600101615a65565b50909695505050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60208152600061159560208301846158f9565b602081526000825160208084015261246b60408401826158f9565b815161ffff1681526020808301519082015260408101610b91565b602081526000825160028110615b2857615b28615e9d565b80602084015250602083015160078110615b4457615b44615e9d565b8060408401525061ffff6040840151166060830152606083015160808084015261246b60a08401826158f9565b6101208101610b918284615925565b815160070b815260208083015167ffffffffffffffff169082015260408083015160030b908201526060808301519082015260808101610b91565b602081526000825160208084015261246b60408401826158a7565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615c0a578283fd5b83018035915067ffffffffffffffff821115615c24578283fd5b602001915036819003821315612ced57600080fd5b6040516080810167ffffffffffffffff81118282101715615c5c57615c5c615eb3565b60405290565b604051610160810167ffffffffffffffff81118282101715615c5c57615c5c615eb3565b604051601f8201601f1916810167ffffffffffffffff81118282101715615caf57615caf615eb3565b604052919050565b600067ffffffffffffffff821115615cd157615cd1615eb3565b50601f01601f191660200190565b60008085851115615cee578182fd5b83861115615cfa578182fd5b5050820193919092039150565b60008219821115615d1a57615d1a615e87565b500190565b600181815b80851115615d5a578160001904821115615d4057615d40615e87565b80851615615d4d57918102915b93841c9390800290615d24565b509250929050565b60006115958383600082615d7857506001610b91565b81615d8557506000610b91565b8160018114615d9b5760028114615da557615dc1565b6001915050610b91565b60ff841115615db657615db6615e87565b50506001821b610b91565b5060208310610133831016604e8410600b8410161715615de4575081810a610b91565b615dee8383615d1f565b8060001904821115615e0257615e02615e87565b029392505050565b6000816000190483118215151615615e2457615e24615e87565b500290565b600082821015615e3b57615e3b615e87565b500390565b60005b83811015615e5b578181015183820152602001615e43565b838111156120125750506000910152565b6000600019821415615e8057615e80615e87565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff81168114610d4f57600080fd5b67ffffffffffffffff81168114610d4f57600080fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099b939a0e68f7cf23dd87f1d08ae171925bb84265dfec2ec4a23e360576bf68364736f6c63430008040033