0x60806040523480156200001157600080fd5b506040516200558d3803806200558d833981810160405281019062000037919062000262565b828281600090816200004a919062000566565b5080600190816200005c919062000566565b50505033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000b181620000ba60201b60201c565b5050506200064d565b80600a9081620000cb919062000566565b5050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200013882620000ed565b810181811067ffffffffffffffff821117156200015a5762000159620000fe565b5b80604052505050565b60006200016f620000cf565b90506200017d82826200012d565b919050565b600067ffffffffffffffff821115620001a0576200019f620000fe565b5b620001ab82620000ed565b9050602081019050919050565b60005b83811015620001d8578082015181840152602081019050620001bb565b60008484015250505050565b6000620001fb620001f58462000182565b62000163565b9050828152602081018484840111156200021a5762000219620000e8565b5b62000227848285620001b8565b509392505050565b600082601f830112620002475762000246620000e3565b5b815162000259848260208601620001e4565b91505092915050565b6000806000606084860312156200027e576200027d620000d9565b5b600084015167ffffffffffffffff8111156200029f576200029e620000de565b5b620002ad868287016200022f565b935050602084015167ffffffffffffffff811115620002d157620002d0620000de565b5b620002df868287016200022f565b925050604084015167ffffffffffffffff811115620003035762000302620000de565b5b62000311868287016200022f565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200036e57607f821691505b60208210810362000384576200038362000326565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003af565b620003fa8683620003af565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000447620004416200043b8462000412565b6200041c565b62000412565b9050919050565b6000819050919050565b620004638362000426565b6200047b62000472826200044e565b848454620003bc565b825550505050565b600090565b6200049262000483565b6200049f81848462000458565b505050565b5b81811015620004c757620004bb60008262000488565b600181019050620004a5565b5050565b601f8211156200051657620004e0816200038a565b620004eb846200039f565b81016020851015620004fb578190505b620005136200050a856200039f565b830182620004a4565b50505b505050565b600082821c905092915050565b60006200053b600019846008026200051b565b1980831691505092915050565b600062000556838362000528565b9150826002028217905092915050565b62000571826200031b565b67ffffffffffffffff8111156200058d576200058c620000fe565b5b62000599825462000355565b620005a6828285620004cb565b600060209050601f831160018114620005de5760008415620005c9578287015190505b620005d5858262000548565b86555062000645565b601f198416620005ee866200038a565b60005b828110156200061857848901518255600182019150602085019450602081019050620005f1565b8683101562000638578489015162000634601f89168262000528565b8355505b6001600288020188555050505b505050505050565b614f30806200065d6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637d4cd847116100de578063b88d4fde11610097578063e985e9c511610071578063e985e9c514610488578063ea41f851146104b8578063f30f8fdf146104d6578063fdbda0ec146104f257610173565b8063b88d4fde14610420578063c87b56dd1461043c578063e687f44c1461046c57610173565b80637d4cd84714610330578063890811c31461036a57806389d5feee1461039a5780638c1da0b6146103ca57806395d89b41146103e6578063a22cb4651461040457610173565b806329575f6a1161013057806329575f6a1461025e57806342842e0e1461027c57806351e42c76146102985780636352211e146102b4578063670fb4c2146102e457806370a082311461030057610173565b806301ffc9a71461017857806306fdde03146101a8578063081812fc146101c6578063095ea7b3146101f65780631dadae8e1461021257806323b872dd14610242575b600080fd5b610192600480360381019061018d919061376a565b610528565b60405161019f91906137b2565b60405180910390f35b6101b0610589565b6040516101bd919061385d565b60405180910390f35b6101e060048036038101906101db91906138b5565b61061b565b6040516101ed9190613923565b60405180910390f35b610210600480360381019061020b919061396a565b610637565b005b61022c600480360381019061022791906139aa565b61064d565b6040516102399190613c1b565b60405180910390f35b61025c60048036038101906102579190613c3d565b610b62565b005b610266610c64565b6040516102739190613923565b60405180910390f35b61029660048036038101906102919190613c3d565b610c8a565b005b6102b260048036038101906102ad9190613df1565b610caa565b005b6102ce60048036038101906102c991906138b5565b610ffd565b6040516102db9190613923565b60405180910390f35b6102fe60048036038101906102f99190613eee565b61100f565b005b61031a600480360381019061031591906139aa565b611247565b6040516103279190613f3d565b60405180910390f35b61034a600480360381019061034591906138b5565b611301565b6040516103619b9a99989796959493929190613f58565b60405180910390f35b610384600480360381019061037f9190614026565b61165d565b6040516103919190613923565b60405180910390f35b6103b460048036038101906103af91906139aa565b6116ab565b6040516103c19190614115565b60405180910390f35b6103e460048036038101906103df9190614137565b6117c8565b005b6103ee611a2e565b6040516103fb919061385d565b60405180910390f35b61041e60048036038101906104199190614193565b611ac0565b005b61043a60048036038101906104359190614274565b611ad6565b005b610456600480360381019061045191906138b5565b611afb565b604051610463919061385d565b60405180910390f35b610486600480360381019061048191906142f7565b611c0e565b005b6104a2600480360381019061049d91906143e2565b611e28565b6040516104af91906137b2565b60405180910390f35b6104c0611ebc565b6040516104cd9190614115565b60405180910390f35b6104f060048036038101906104eb91906138b5565b61206a565b005b61050c600480360381019061050791906138b5565b6122e6565b60405161051f9796959493929190614422565b60405180910390f35b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610582575061058182612568565b5b9050919050565b606060008054610598906144dc565b80601f01602080910402602001604051908101604052809291908181526020018280546105c4906144dc565b80156106115780601f106105e657610100808354040283529160200191610611565b820191906000526020600020905b8154815290600101906020018083116105f457829003601f168201915b5050505050905090565b60006106268261264a565b50610630826126d2565b9050919050565b610649828261064461270f565b612717565b5050565b6060600061065a83611247565b905060008167ffffffffffffffff81111561067857610677613c9a565b5b6040519080825280602002602001820160405280156106b157816020015b61069e613674565b8152602001906001900390816106965790505b5090506000805b600754811015610b5657600d600082815260200190815260200160002060009054906101000a900460ff16801561072257508573ffffffffffffffffffffffffffffffffffffffff1661070a82610ffd565b73ffffffffffffffffffffffffffffffffffffffff16145b15610b4357600c60008281526020019081526020016000206040518061016001604052908160008201548152602001600182018054610760906144dc565b80601f016020809104026020016040519081016040528092919081815260200182805461078c906144dc565b80156107d95780601f106107ae576101008083540402835291602001916107d9565b820191906000526020600020905b8154815290600101906020018083116107bc57829003601f168201915b505050505081526020016002820180546107f2906144dc565b80601f016020809104026020016040519081016040528092919081815260200182805461081e906144dc565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b50505050508152602001600382018054610884906144dc565b80601f01602080910402602001604051908101604052809291908181526020018280546108b0906144dc565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050815260200160048201548152602001600582018054610920906144dc565b80601f016020809104026020016040519081016040528092919081815260200182805461094c906144dc565b80156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b505050505081526020016006820160009054906101000a900460ff161515151581526020016006820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600782018054610a23906144dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4f906144dc565b8015610a9c5780601f10610a7157610100808354040283529160200191610a9c565b820191906000526020600020905b815481529060010190602001808311610a7f57829003601f168201915b505050505081526020016008820160009054906101000a900460ff161515151581526020016008820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050838381518110610b2957610b2861450d565b5b60200260200101819052508180610b3f9061456b565b9250505b8080610b4e9061456b565b9150506106b8565b50819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bd45760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610bcb9190613923565b60405180910390fd5b6000610be88383610be361270f565b612729565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c5e578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610c55939291906145b3565b60405180910390fd5b50505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ca583838360405180602001604052806000815250611ad6565b505050565b60003342600754604051602001610cc393929190614653565b6040516020818303038152906040528051906020012060001c905060076000815480929190610cf19061456b565b9190505550610d003382612943565b610d0a8186612961565b6001600d600083815260200190815260200160002060006101000a81548160ff021916908315150217905550604051806101600160405280828152602001888152602001878152602001868152602001858152602001848152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060200160405280600081525081526020018315158152602001600073ffffffffffffffffffffffffffffffffffffffff16815250600c6000838152602001908152602001600020600082015181600001556020820151816001019081610df6919061483c565b506040820151816002019081610e0c919061483c565b506060820151816003019081610e22919061483c565b506080820151816004015560a0820151816005019081610e42919061483c565b5060c08201518160060160006101000a81548160ff02191690831515021790555060e08201518160060160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610100820151816007019081610ec0919061483c565b506101208201518160080160006101000a81548160ff0219169083151502179055506101408201518160080160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600e6000828152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16817fedd0eabd45c7dc4173e66c96d2eab7252f3a6fb47143db3518f05d7ddaf20121878787604051610fec9392919061490e565b60405180910390a350505050505050565b60006110088261264a565b9050919050565b600061101a83610ffd565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611081906149c5565b60405180910390fd5b600c600084815260200190815260200160002060060160009054906101000a900460ff166110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e490614a57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c600085815260200190815260200160002060080160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990614ae9565b60405180910390fd5b81600c600085815260200190815260200160002060080160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16847f9f584489f4e17891cf0fd5b3e2afd5da63ba16a5148822ebe9c0ac5aa28e77a760405160405180910390a4505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ba5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016112b19190613923565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60205280600052604060002060009150905080600001549080600101805461132a906144dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611356906144dc565b80156113a35780601f10611378576101008083540402835291602001916113a3565b820191906000526020600020905b81548152906001019060200180831161138657829003601f168201915b5050505050908060020180546113b8906144dc565b80601f01602080910402602001604051908101604052809291908181526020018280546113e4906144dc565b80156114315780601f1061140657610100808354040283529160200191611431565b820191906000526020600020905b81548152906001019060200180831161141457829003601f168201915b505050505090806003018054611446906144dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611472906144dc565b80156114bf5780601f10611494576101008083540402835291602001916114bf565b820191906000526020600020905b8154815290600101906020018083116114a257829003601f168201915b5050505050908060040154908060050180546114da906144dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611506906144dc565b80156115535780601f1061152857610100808354040283529160200191611553565b820191906000526020600020905b81548152906001019060200180831161153657829003601f168201915b5050505050908060060160009054906101000a900460ff16908060060160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060070180546115a1906144dc565b80601f01602080910402602001604051908101604052809291908181526020018280546115cd906144dc565b801561161a5780601f106115ef5761010080835404028352916020019161161a565b820191906000526020600020905b8154815290600101906020018083116115fd57829003601f168201915b5050505050908060080160009054906101000a900460ff16908060080160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508b565b600e602052816000526040600020818154811061167957600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060006116b883611247565b905060008167ffffffffffffffff8111156116d6576116d5613c9a565b5b6040519080825280602002602001820160405280156117045781602001602082028036833780820191505090505b5090506000805b6007548110156117bc57600d600082815260200190815260200160002060009054906101000a900460ff16801561177557508573ffffffffffffffffffffffffffffffffffffffff1661175d82610ffd565b73ffffffffffffffffffffffffffffffffffffffff16145b156117a9578083838151811061178e5761178d61450d565b5b60200260200101818152505081806117a59061456b565b9250505b80806117b49061456b565b91505061170b565b50819350505050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614b7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1661187983610ffd565b73ffffffffffffffffffffffffffffffffffffffff16036118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c690614be7565b60405180910390fd5b600c600083815260200190815260200160002060060160009054906101000a900460ff1615611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90614c53565b60405180910390fd5b6001600c600084815260200190815260200160002060060160006101000a81548160ff02191690831515021790555033600c600084815260200190815260200160002060060160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c600084815260200190815260200160002060070190816119da919061483c565b503373ffffffffffffffffffffffffffffffffffffffff16827fe53c4e6be325094d9425bf6b69d3f413df690182cac5510da12847ee81f0b5e983604051611a22919061385d565b60405180910390a35050565b606060018054611a3d906144dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611a69906144dc565b8015611ab65780601f10611a8b57610100808354040283529160200191611ab6565b820191906000526020600020905b815481529060010190602001808311611a9957829003601f168201915b5050505050905090565b611ad2611acb61270f565b83836129bd565b5050565b611ae1848484610b62565b611af5611aec61270f565b85858585612b2c565b50505050565b6060611b068261264a565b506000600660008481526020019081526020016000208054611b27906144dc565b80601f0160208091040260200160405190810160405280929190818152602001828054611b53906144dc565b8015611ba05780601f10611b7557610100808354040283529160200191611ba0565b820191906000526020600020905b815481529060010190602001808311611b8357829003601f168201915b505050505090506000611bb1612cdd565b90506000815103611bc6578192505050611c09565b600082511115611bfb578082604051602001611be3929190614caf565b60405160208183030381529060405292505050611c09565b611c0484612d6f565b925050505b919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9590614b7b565b60405180910390fd5b600060086000815480929190611cb39061456b565b9190505590506040518060e001604052808281526020018781526020018681526020018581526020018481526020018381526020013373ffffffffffffffffffffffffffffffffffffffff16815250600b6000838152602001908152602001600020600082015181600001556020820151816001019081611d34919061483c565b506040820151816002019081611d4a919061483c565b506060820151816003019081611d60919061483c565b506080820151816004019081611d76919061483c565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050503373ffffffffffffffffffffffffffffffffffffffff16817fece498388d97cc9b0074ecea454c1a392ec5209214516b736fe7e422824f464b88878787604051611e189493929190614cd3565b60405180910390a3505050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606000805b600754811015611f5857600073ffffffffffffffffffffffffffffffffffffffff16600c600083815260200190815260200160002060080160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f45578180611f419061456b565b9250505b8080611f509061456b565b915050611ec2565b5060008167ffffffffffffffff811115611f7557611f74613c9a565b5b604051908082528060200260200182016040528015611fa35781602001602082028036833780820191505090505b5090506000805b60075481101561206057600073ffffffffffffffffffffffffffffffffffffffff16600c600083815260200190815260200160002060080160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204d57808383815181106120325761203161450d565b5b60200260200101818152505081806120499061456b565b9250505b80806120589061456b565b915050611faa565b5081935050505090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f190614b7b565b60405180910390fd5b6000600c600083815260200190815260200160002060080160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219b90614d9f565b60405180910390fd5b60006121af83610ffd565b90506121bc818385612dd8565b6000600c600085815260200190815260200160002060080160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e6000848152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16847f0c48eddeb6a2347a87b1243eecd2dcfb6abe2520210a9d2b8dd04ad0ee8fbd1860405160405180910390a4505050565b600b60205280600052604060002060009150905080600001549080600101805461230f906144dc565b80601f016020809104026020016040519081016040528092919081815260200182805461233b906144dc565b80156123885780601f1061235d57610100808354040283529160200191612388565b820191906000526020600020905b81548152906001019060200180831161236b57829003601f168201915b50505050509080600201805461239d906144dc565b80601f01602080910402602001604051908101604052809291908181526020018280546123c9906144dc565b80156124165780601f106123eb57610100808354040283529160200191612416565b820191906000526020600020905b8154815290600101906020018083116123f957829003601f168201915b50505050509080600301805461242b906144dc565b80601f0160208091040260200160405190810160405280929190818152602001828054612457906144dc565b80156124a45780601f10612479576101008083540402835291602001916124a4565b820191906000526020600020905b81548152906001019060200180831161248757829003601f168201915b5050505050908060040180546124b9906144dc565b80601f01602080910402602001604051908101604052809291908181526020018280546124e5906144dc565b80156125325780601f1061250757610100808354040283529160200191612532565b820191906000526020600020905b81548152906001019060200180831161251557829003601f168201915b5050505050908060050154908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905087565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061263357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612643575061264282612f45565b5b9050919050565b60008061265683612faf565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126c957826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016126c09190613f3d565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6127248383836001612fec565b505050565b60008061273584612faf565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612777576127768184866131b1565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612808576127b9600085600080612fec565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461288b576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b61295d828260405180602001604052806000815250613275565b5050565b80600660008481526020019081526020016000209081612981919061483c565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516129b19190613f3d565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a2e57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401612a259190613923565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612b1f91906137b2565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115612cd6578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401612b8b9493929190614e14565b6020604051808303816000875af1925050508015612bc757506040513d601f19601f82011682018060405250810190612bc49190614e75565b60015b612c4b573d8060008114612bf7576040519150601f19603f3d011682016040523d82523d6000602084013e612bfc565b606091505b506000815103612c4357836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612c3a9190613923565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612cd457836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612ccb9190613923565b60405180910390fd5b505b5050505050565b6060600a8054612cec906144dc565b80601f0160208091040260200160405190810160405280929190818152602001828054612d18906144dc565b8015612d655780601f10612d3a57610100808354040283529160200191612d65565b820191906000526020600020905b815481529060010190602001808311612d4857829003601f168201915b5050505050905090565b6060612d7a8261264a565b506000612d85612cdd565b90506000815111612da55760405180602001604052806000815250612dd0565b80612daf84613299565b604051602001612dc0929190614caf565b6040516020818303038152906040525b915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e4a5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612e419190613923565b60405180910390fd5b6000612e5883836000612729565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ecb57816040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612ec29190613f3d565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612f3f578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401612f36939291906145b3565b60405180910390fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806130255750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156131595760006130358461264a565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130a057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156130b357506130b18184611e28565b155b156130f557826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016130ec9190613923565b60405180910390fd5b811561315757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6131bc838383613367565b61327057600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361323157806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016132289190613f3d565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401613267929190614ea2565b60405180910390fd5b505050565b61327f8383613428565b61329461328a61270f565b6000858585612b2c565b505050565b6060600060016132a884613521565b01905060008167ffffffffffffffff8111156132c7576132c6613c9a565b5b6040519080825280601f01601f1916602001820160405280156132f95781602001600182028036833780820191505090505b509050600082602001820190505b60011561335c578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816133505761334f614ecb565b5b04945060008503613307575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561341f57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806133e057506133df8484611e28565b5b8061341e57508273ffffffffffffffffffffffffffffffffffffffff16613406836126d2565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361349a5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016134919190613923565b60405180910390fd5b60006134a883836000612729565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461351c5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016135139190613923565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061357f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161357557613574614ecb565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106135bc576d04ee2d6d415b85acef810000000083816135b2576135b1614ecb565b5b0492506020810190505b662386f26fc1000083106135eb57662386f26fc1000083816135e1576135e0614ecb565b5b0492506010810190505b6305f5e1008310613614576305f5e100838161360a57613609614ecb565b5b0492506008810190505b612710831061363957612710838161362f5761362e614ecb565b5b0492506004810190505b6064831061365c576064838161365257613651614ecb565b5b0492506002810190505b600a831061366b576001810190505b80915050919050565b604051806101600160405280600081526020016060815260200160608152602001606081526020016000815260200160608152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61374781613712565b811461375257600080fd5b50565b6000813590506137648161373e565b92915050565b6000602082840312156137805761377f613708565b5b600061378e84828501613755565b91505092915050565b60008115159050919050565b6137ac81613797565b82525050565b60006020820190506137c760008301846137a3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156138075780820151818401526020810190506137ec565b60008484015250505050565b6000601f19601f8301169050919050565b600061382f826137cd565b61383981856137d8565b93506138498185602086016137e9565b61385281613813565b840191505092915050565b600060208201905081810360008301526138778184613824565b905092915050565b6000819050919050565b6138928161387f565b811461389d57600080fd5b50565b6000813590506138af81613889565b92915050565b6000602082840312156138cb576138ca613708565b5b60006138d9848285016138a0565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061390d826138e2565b9050919050565b61391d81613902565b82525050565b60006020820190506139386000830184613914565b92915050565b61394781613902565b811461395257600080fd5b50565b6000813590506139648161393e565b92915050565b6000806040838503121561398157613980613708565b5b600061398f85828601613955565b92505060206139a0858286016138a0565b9150509250929050565b6000602082840312156139c0576139bf613708565b5b60006139ce84828501613955565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0c8161387f565b82525050565b600082825260208201905092915050565b6000613a2e826137cd565b613a388185613a12565b9350613a488185602086016137e9565b613a5181613813565b840191505092915050565b613a6581613797565b82525050565b613a7481613902565b82525050565b600061016083016000830151613a936000860182613a03565b5060208301518482036020860152613aab8282613a23565b91505060408301518482036040860152613ac58282613a23565b91505060608301518482036060860152613adf8282613a23565b9150506080830151613af46080860182613a03565b5060a083015184820360a0860152613b0c8282613a23565b91505060c0830151613b2160c0860182613a5c565b5060e0830151613b3460e0860182613a6b565b50610100830151848203610100860152613b4e8282613a23565b915050610120830151613b65610120860182613a5c565b50610140830151613b7a610140860182613a6b565b508091505092915050565b6000613b918383613a7a565b905092915050565b6000602082019050919050565b6000613bb1826139d7565b613bbb81856139e2565b935083602082028501613bcd856139f3565b8060005b85811015613c095784840389528151613bea8582613b85565b9450613bf583613b99565b925060208a01995050600181019050613bd1565b50829750879550505050505092915050565b60006020820190508181036000830152613c358184613ba6565b905092915050565b600080600060608486031215613c5657613c55613708565b5b6000613c6486828701613955565b9350506020613c7586828701613955565b9250506040613c86868287016138a0565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613cd282613813565b810181811067ffffffffffffffff82111715613cf157613cf0613c9a565b5b80604052505050565b6000613d046136fe565b9050613d108282613cc9565b919050565b600067ffffffffffffffff821115613d3057613d2f613c9a565b5b613d3982613813565b9050602081019050919050565b82818337600083830152505050565b6000613d68613d6384613d15565b613cfa565b905082815260208101848484011115613d8457613d83613c95565b5b613d8f848285613d46565b509392505050565b600082601f830112613dac57613dab613c90565b5b8135613dbc848260208601613d55565b91505092915050565b613dce81613797565b8114613dd957600080fd5b50565b600081359050613deb81613dc5565b92915050565b60008060008060008060c08789031215613e0e57613e0d613708565b5b600087013567ffffffffffffffff811115613e2c57613e2b61370d565b5b613e3889828a01613d97565b965050602087013567ffffffffffffffff811115613e5957613e5861370d565b5b613e6589828a01613d97565b955050604087013567ffffffffffffffff811115613e8657613e8561370d565b5b613e9289828a01613d97565b9450506060613ea389828a016138a0565b935050608087013567ffffffffffffffff811115613ec457613ec361370d565b5b613ed089828a01613d97565b92505060a0613ee189828a01613ddc565b9150509295509295509295565b60008060408385031215613f0557613f04613708565b5b6000613f13858286016138a0565b9250506020613f2485828601613955565b9150509250929050565b613f378161387f565b82525050565b6000602082019050613f526000830184613f2e565b92915050565b600061016082019050613f6e600083018e613f2e565b8181036020830152613f80818d613824565b90508181036040830152613f94818c613824565b90508181036060830152613fa8818b613824565b9050613fb7608083018a613f2e565b81810360a0830152613fc98189613824565b9050613fd860c08301886137a3565b613fe560e0830187613914565b818103610100830152613ff88186613824565b90506140086101208301856137a3565b614016610140830184613914565b9c9b505050505050505050505050565b6000806040838503121561403d5761403c613708565b5b600061404b858286016138a0565b925050602061405c858286016138a0565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061409e8383613a03565b60208301905092915050565b6000602082019050919050565b60006140c282614066565b6140cc8185614071565b93506140d783614082565b8060005b838110156141085781516140ef8882614092565b97506140fa836140aa565b9250506001810190506140db565b5085935050505092915050565b6000602082019050818103600083015261412f81846140b7565b905092915050565b6000806040838503121561414e5761414d613708565b5b600061415c858286016138a0565b925050602083013567ffffffffffffffff81111561417d5761417c61370d565b5b61418985828601613d97565b9150509250929050565b600080604083850312156141aa576141a9613708565b5b60006141b885828601613955565b92505060206141c985828601613ddc565b9150509250929050565b600067ffffffffffffffff8211156141ee576141ed613c9a565b5b6141f782613813565b9050602081019050919050565b6000614217614212846141d3565b613cfa565b90508281526020810184848401111561423357614232613c95565b5b61423e848285613d46565b509392505050565b600082601f83011261425b5761425a613c90565b5b813561426b848260208601614204565b91505092915050565b6000806000806080858703121561428e5761428d613708565b5b600061429c87828801613955565b94505060206142ad87828801613955565b93505060406142be878288016138a0565b925050606085013567ffffffffffffffff8111156142df576142de61370d565b5b6142eb87828801614246565b91505092959194509250565b600080600080600060a0868803121561431357614312613708565b5b600086013567ffffffffffffffff8111156143315761433061370d565b5b61433d88828901613d97565b955050602086013567ffffffffffffffff81111561435e5761435d61370d565b5b61436a88828901613d97565b945050604086013567ffffffffffffffff81111561438b5761438a61370d565b5b61439788828901613d97565b935050606086013567ffffffffffffffff8111156143b8576143b761370d565b5b6143c488828901613d97565b92505060806143d5888289016138a0565b9150509295509295909350565b600080604083850312156143f9576143f8613708565b5b600061440785828601613955565b925050602061441885828601613955565b9150509250929050565b600060e082019050614437600083018a613f2e565b81810360208301526144498189613824565b9050818103604083015261445d8188613824565b905081810360608301526144718187613824565b905081810360808301526144858186613824565b905061449460a0830185613f2e565b6144a160c0830184613914565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144f457607f821691505b602082108103614507576145066144ad565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145768261387f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145a8576145a761453c565b5b600182019050919050565b60006060820190506145c86000830186613914565b6145d56020830185613f2e565b6145e26040830184613914565b949350505050565b60008160601b9050919050565b6000614602826145ea565b9050919050565b6000614614826145f7565b9050919050565b61462c61462782613902565b614609565b82525050565b6000819050919050565b61464d6146488261387f565b614632565b82525050565b600061465f828661461b565b60148201915061466f828561463c565b60208201915061467f828461463c565b602082019150819050949350505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026146f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826146b5565b6146fc86836146b5565b95508019841693508086168417925050509392505050565b6000819050919050565b600061473961473461472f8461387f565b614714565b61387f565b9050919050565b6000819050919050565b6147538361471e565b61476761475f82614740565b8484546146c2565b825550505050565b600090565b61477c61476f565b61478781848461474a565b505050565b5b818110156147ab576147a0600082614774565b60018101905061478d565b5050565b601f8211156147f0576147c181614690565b6147ca846146a5565b810160208510156147d9578190505b6147ed6147e5856146a5565b83018261478c565b50505b505050565b600082821c905092915050565b6000614813600019846008026147f5565b1980831691505092915050565b600061482c8383614802565b9150826002028217905092915050565b614845826137cd565b67ffffffffffffffff81111561485e5761485d613c9a565b5b61486882546144dc565b6148738282856147af565b600060209050601f8311600181146148a65760008415614894578287015190505b61489e8582614820565b865550614906565b601f1984166148b486614690565b60005b828110156148dc578489015182556001820191506020850194506020810190506148b7565b868310156148f957848901516148f5601f891682614802565b8355505b6001600288020188555050505b505050505050565b600060608201905081810360008301526149288186613824565b90506149376020830185613f2e565b81810360408301526149498184613824565b9050949350505050565b7f4f6e6c7920746865206f776e65722063616e20696e697469617465207468652060008201527f7472616e736665722e0000000000000000000000000000000000000000000000602082015250565b60006149af6029836137d8565b91506149ba82614953565b604082019050919050565b600060208201905081810360008301526149de816149a2565b9050919050565b7f4e4654206d75737420626520636572746966696564206265666f72652074726160008201527f6e736665722e0000000000000000000000000000000000000000000000000000602082015250565b6000614a416026836137d8565b9150614a4c826149e5565b604082019050919050565b60006020820190508181036000830152614a7081614a34565b9050919050565b7f54686973204e465420697320616c72656164792070656e64696e67206365727460008201527f696669636174696f6e2e00000000000000000000000000000000000000000000602082015250565b6000614ad3602a836137d8565b9150614ade82614a77565b604082019050919050565b60006020820190508181036000830152614b0281614ac6565b9050919050565b7f4f6e6c7920537570657241646d696e2063616e20706572666f726d207468697360008201527f20616374696f6e2e000000000000000000000000000000000000000000000000602082015250565b6000614b656028836137d8565b9150614b7082614b09565b604082019050919050565b60006020820190508181036000830152614b9481614b58565b9050919050565b7f4e4654206d757374206861766520616e206f776e65722e000000000000000000600082015250565b6000614bd16017836137d8565b9150614bdc82614b9b565b602082019050919050565b60006020820190508181036000830152614c0081614bc4565b9050919050565b7f4e465420697320616c7265616479206365727469666965642e00000000000000600082015250565b6000614c3d6019836137d8565b9150614c4882614c07565b602082019050919050565b60006020820190508181036000830152614c6c81614c30565b9050919050565b600081905092915050565b6000614c89826137cd565b614c938185614c73565b9350614ca38185602086016137e9565b80840191505092915050565b6000614cbb8285614c7e565b9150614cc78284614c7e565b91508190509392505050565b60006080820190508181036000830152614ced8187613824565b90508181036020830152614d018186613824565b90508181036040830152614d158185613824565b9050614d246060830184613f2e565b95945050505050565b7f4e6f2070656e64696e67207472616e7366657220666f72207468697320746f6b60008201527f656e2e0000000000000000000000000000000000000000000000000000000000602082015250565b6000614d896023836137d8565b9150614d9482614d2d565b604082019050919050565b60006020820190508181036000830152614db881614d7c565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614de682614dbf565b614df08185614dca565b9350614e008185602086016137e9565b614e0981613813565b840191505092915050565b6000608082019050614e296000830187613914565b614e366020830186613914565b614e436040830185613f2e565b8181036060830152614e558184614ddb565b905095945050505050565b600081519050614e6f8161373e565b92915050565b600060208284031215614e8b57614e8a613708565b5b6000614e9984828501614e60565b91505092915050565b6000604082019050614eb76000830185613914565b614ec46020830184613f2e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212206bbfcbbd04f2b72d738870a2823acd23efb17eca628f88503b1feaade6b02e8a64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000850616c6d20575950000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002444656661756c7420636f6c6c656374696f6e20666f722050616c6d206e6574776f726b2e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f000000000000000000000000000000000000000000000000000000000000