Loading
60806040526722b1c8c1227a0000600b556000600e60006101000a81548160ff0219169083151502179055503480156200003857600080fd5b50604051620055f1380380620055f183398181016040528101906200005e919062000357565b8383816002908051906020019062000078929190620001fb565b50806003908051906020019062000091929190620001fb565b50620000a26200012460201b60201c565b6000819055505050620000ca620000be6200012d60201b60201c565b6200013560201b60201c565b600160098190555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c8190555050505050620005fd565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200020990620004da565b90600052602060002090601f0160209004810192826200022d576000855562000279565b82601f106200024857805160ff191683800117855562000279565b8280016001018555821562000279579182015b82811115620002785782518255916020019190600101906200025b565b5b5090506200028891906200028c565b5090565b5b80821115620002a75760008160009055506001016200028d565b5090565b6000620002c2620002bc8462000430565b62000407565b905082815260208101848484011115620002e157620002e0620005a9565b5b620002ee848285620004a4565b509392505050565b6000815190506200030781620005c9565b92915050565b600082601f830112620003255762000324620005a4565b5b815162000337848260208601620002ab565b91505092915050565b6000815190506200035181620005e3565b92915050565b60008060008060808587031215620003745762000373620005b3565b5b600085015167ffffffffffffffff811115620003955762000394620005ae565b5b620003a3878288016200030d565b945050602085015167ffffffffffffffff811115620003c757620003c6620005ae565b5b620003d5878288016200030d565b9350506040620003e887828801620002f6565b9250506060620003fb8782880162000340565b91505092959194509250565b60006200041362000426565b905062000421828262000510565b919050565b6000604051905090565b600067ffffffffffffffff8211156200044e576200044d62000575565b5b6200045982620005b8565b9050602081019050919050565b600062000473826200047a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620004c4578082015181840152602081019050620004a7565b83811115620004d4576000848401525b50505050565b60006002820490506001821680620004f357607f821691505b602082108114156200050a576200050962000546565b5b50919050565b6200051b82620005b8565b810181811067ffffffffffffffff821117156200053d576200053c62000575565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620005d48162000466565b8114620005e057600080fd5b50565b620005ee816200049a565b8114620005fa57600080fd5b50565b614fe4806200060d6000396000f3fe6080604052600436106101f95760003560e01c806370a082311161010d578063a22cb465116100a0578063c87b56dd1161006f578063c87b56dd146106ee578063dc33e6811461072b578063e985e9c514610768578063f0ec1065146107a5578063f2fde38b146107e2576101f9565b8063a22cb46514610648578063a2309ff814610671578063b17c1d9d1461069c578063b88d4fde146106c5576101f9565b806395d89b41116100dc57806395d89b41146105ad57806396cf73cf146105d857806397bc411c146105f4578063a035b1fe1461061d576101f9565b806370a0823114610505578063715018a6146105425780638da5cb5b1461055957806391b7f5ed14610584576101f9565b8063390a5b9a116101905780634ad505161161015f5780634ad505161461042f57806351cff8d91461045857806352cf02f0146104745780636352211e1461049f5780636c19e783146104dc576101f9565b8063390a5b9a1461037457806342842e0e1461039f57806342d0abd7146103c857806349a0a50e146103f1576101f9565b806318160ddd116101cc57806318160ddd146102cc5780632126ea81146102f757806323b872dd146103225780632d1a12f61461034b576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063081812fc14610266578063095ea7b3146102a3575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190613f3e565b61080b565b60405161023291906145ef565b60405180910390f35b34801561024757600080fd5b506102506108ed565b60405161025d919061464f565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613fe5565b61097f565b60405161029a9190614558565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190613e31565b6109fb565b005b3480156102d857600080fd5b506102e1610b06565b6040516102ee9190614751565b60405180910390f35b34801561030357600080fd5b5061030c610b1d565b604051610319919061464f565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613d1b565b610bab565b005b34801561035757600080fd5b50610372600480360381019061036d9190614012565b610bbb565b005b34801561038057600080fd5b50610389610c93565b6040516103969190614751565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190613d1b565b610c99565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190614052565b610cb9565b005b3480156103fd57600080fd5b5061041860048036038101906104139190613e71565b610ee1565b6040516104269291906145bf565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190613f11565b61129b565b005b610472600480360381019061046d9190613cae565b611334565b005b34801561048057600080fd5b5061048961142a565b60405161049691906145ef565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190613fe5565b61143d565b6040516104d39190614558565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190613c81565b611453565b005b34801561051157600080fd5b5061052c60048036038101906105279190613c81565b611513565b6040516105399190614751565b60405180910390f35b34801561054e57600080fd5b506105576115e3565b005b34801561056557600080fd5b5061056e61166b565b60405161057b9190614558565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190613fe5565b611695565b005b3480156105b957600080fd5b506105c261171b565b6040516105cf919061464f565b60405180910390f35b6105f260048036038101906105ed91906140c6565b6117ad565b005b34801561060057600080fd5b5061061b60048036038101906106169190613f98565b61198d565b005b34801561062957600080fd5b50610632611a1f565b60405161063f9190614751565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190613df1565b611a25565b005b34801561067d57600080fd5b50610686611b9d565b6040516106939190614751565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be9190613ec4565b611bac565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190613d6e565b611cd1565b005b3480156106fa57600080fd5b5061071560048036038101906107109190613fe5565b611d4d565b604051610722919061464f565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d9190613c81565b611e87565b60405161075f9190614751565b60405180910390f35b34801561077457600080fd5b5061078f600480360381019061078a9190613cdb565b611e99565b60405161079c91906145ef565b60405180910390f35b3480156107b157600080fd5b506107cc60048036038101906107c79190613fe5565b611f2d565b6040516107d991906145ef565b60405180910390f35b3480156107ee57600080fd5b5061080960048036038101906108049190613c81565b611f8f565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108d657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108e657506108e582612087565b5b9050919050565b6060600280546108fc90614a30565b80601f016020809104026020016040519081016040528092919081815260200182805461092890614a30565b80156109755780601f1061094a57610100808354040283529160200191610975565b820191906000526020600020905b81548152906001019060200180831161095857829003601f168201915b5050505050905090565b600061098a826120f1565b6109c0576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a068261143d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a6e576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a8d61213f565b73ffffffffffffffffffffffffffffffffffffffff1614158015610abf5750610abd81610ab861213f565b611e99565b155b15610af6576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b01838383612147565b505050565b6000610b106121f9565b6001546000540303905090565b600d8054610b2a90614a30565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5690614a30565b8015610ba35780601f10610b7857610100808354040283529160200191610ba3565b820191906000526020600020905b815481529060010190602001808311610b8657829003601f168201915b505050505081565b610bb6838383612202565b505050565b610bc361213f565b73ffffffffffffffffffffffffffffffffffffffff16610be161166b565b73ffffffffffffffffffffffffffffffffffffffff1614610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90614711565b60405180910390fd5b600c5482610c43610b06565b610c4d9190614849565b1115610c85576040517f794bb39b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8f81836126f3565b5050565b600c5481565b610cb483838360405180602001604052806000815250611cd1565b505050565b60026009541415610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690614731565b60405180910390fd5b6002600981905550600e60009054906101000a900460ff16610d4d576040517f44300a9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16610d6d8561143d565b73ffffffffffffffffffffffffffffffffffffffff1614610dba576040517f5e1cb9bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e09848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612711565b610e3f576040517fe9aee7d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000801b600f60008681526020019081526020016000205414610e8e576040517f5a049a9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600f600086815260200190815260200160002081905550837f15120e52505e619cbf6c2af910d5cf7f9ee1befa55801b078c33e93880b2d60960405160405180910390a2600160098190555050505050565b6060600080831415610eff576001600054610efc91906148f9565b92505b610f076121f9565b841080610f1657506000548310155b15610f4d576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610f5987611513565b90506000811415610fc657600067ffffffffffffffff811115610f7f57610f7e614c23565b5b604051908082528060200260200182016040528015610fad5781602001602082028036833780820191505090505b50600186610fbb9190614849565b935093505050611293565b610100811115610fd65761010090505b60008167ffffffffffffffff811115610ff257610ff1614c23565b5b6040519080825280602002602001820160405280156110205781602001602082028036833780820191505090505b50905060008061102f8961143d565b90508894505b8785116111d357600073ffffffffffffffffffffffffffffffffffffffff166004600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e0576004600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60046000868152602001908152602001600020600001601c9054906101000a900460ff1615801561113c57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156111c0578483838151811061115557611154614bf4565b5b602002602001018181525050818061116c90614a93565b925050838214156111bf576111808a611513565b8414156111a357826001896111959190614849565b965096505050505050611293565b826001866111b19190614849565b965096505050505050611293565b5b84806111cb90614a93565b955050611035565b60008267ffffffffffffffff8111156111ef576111ee614c23565b5b60405190808252806020026020018201604052801561121d5781602001602082028036833780820191505090505b509050600095505b8286101561127a578386815181106112405761123f614bf4565b5b602002602001015181878151811061125b5761125a614bf4565b5b602002602001018181525050858061127290614a93565b965050611225565b8060018a6112889190614849565b975097505050505050505b935093915050565b6112a361213f565b73ffffffffffffffffffffffffffffffffffffffff166112c161166b565b73ffffffffffffffffffffffffffffffffffffffff1614611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90614711565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b61133c61213f565b73ffffffffffffffffffffffffffffffffffffffff1661135a61166b565b73ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a790614711565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16476040516113d690614517565b60006040518083038185875af1925050503d8060008114611413576040519150601f19603f3d011682016040523d82523d6000602084013e611418565b606091505b505090508061142657600080fd5b5050565b600e60009054906101000a900460ff1681565b6000611448826127ba565b600001519050919050565b61145b61213f565b73ffffffffffffffffffffffffffffffffffffffff1661147961166b565b73ffffffffffffffffffffffffffffffffffffffff16146114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690614711565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561157b576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6115eb61213f565b73ffffffffffffffffffffffffffffffffffffffff1661160961166b565b73ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690614711565b60405180910390fd5b6116696000612a49565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61169d61213f565b73ffffffffffffffffffffffffffffffffffffffff166116bb61166b565b73ffffffffffffffffffffffffffffffffffffffff1614611711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170890614711565b60405180910390fd5b80600b8190555050565b60606003805461172a90614a30565b80601f016020809104026020016040519081016040528092919081815260200182805461175690614a30565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b5050505050905090565b600c548563ffffffff166117bf610b06565b6117c99190614849565b1115611801576040517f794bb39b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8267ffffffffffffffff16421115611845576040517fe397952c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8363ffffffff168563ffffffff1661185c33612b0f565b6118669190614849565b111561189e576040517fb903011a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118ee33858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612bdf565b611924576040517fc1606c2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008563ffffffff16600b5461193a919061489f565b9050803414611975576040517ffa47be2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611985338763ffffffff166126f3565b505050505050565b61199561213f565b73ffffffffffffffffffffffffffffffffffffffff166119b361166b565b73ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090614711565b60405180910390fd5b8181600d9190611a1a92919061396c565b505050565b600b5481565b611a2d61213f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a92576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611a9f61213f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611b4c61213f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b9191906145ef565b60405180910390a35050565b6000611ba7612c8b565b905090565b611bb461213f565b73ffffffffffffffffffffffffffffffffffffffff16611bd261166b565b73ffffffffffffffffffffffffffffffffffffffff1614611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f90614711565b60405180910390fd5b600c5482829050611c37610b06565b611c419190614849565b1115611c79576040517f794bb39b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82829050811015611ccc57611cb9838383818110611c9d57611c9c614bf4565b5b9050602002016020810190611cb29190613c81565b60016126f3565b8080611cc490614a93565b915050611c7c565b505050565b611cdc848484612202565b611cfb8373ffffffffffffffffffffffffffffffffffffffff16612c9e565b8015611d105750611d0e84848484612cc1565b155b15611d47576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060611d58826120f1565b611d8e576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000801b600f6000848152602001908152602001600020541415611e3e57600d8054611db990614a30565b80601f0160208091040260200160405190810160405280929190818152602001828054611de590614a30565b8015611e325780601f10611e0757610100808354040283529160200191611e32565b820191906000526020600020905b815481529060010190602001808311611e1557829003601f168201915b50505050509050611e82565b6000600f6000848152602001908152602001600020549050611e5f81612e21565b604051602001611e6f91906144f5565b6040516020818303038152906040529150505b919050565b6000611e9282612b0f565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611f38826120f1565b611f6e576040517f509fe01c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000801b600f60008481526020019081526020016000205414159050919050565b611f9761213f565b73ffffffffffffffffffffffffffffffffffffffff16611fb561166b565b73ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200290614711565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561207b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612072906146b1565b60405180910390fd5b61208481612a49565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000816120fc6121f9565b1115801561210b575060005482105b8015612138575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b600061220d826127ba565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661223461213f565b73ffffffffffffffffffffffffffffffffffffffff1614806122675750612266826000015161226161213f565b611e99565b5b806122ac575061227561213f565b73ffffffffffffffffffffffffffffffffffffffff166122948461097f565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806122e5576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161461234e576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123b5576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123c28585856001613165565b6123d26000848460000151612147565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612683576000548110156126825782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126ec858585600161316b565b5050505050565b61270d828260405180602001604052806000815250613171565b5050565b600080848460405160200161272792919061452c565b604051602081830303815290604052805190602001209050600061274a82613183565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661279885836131b390919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1614925050509392505050565b6127c26139f2565b6000829050806127d06121f9565b111580156127df575060005481105b15612a12576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151612a1057600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146128f4578092505050612a44565b5b600115612a0f57818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612a0a578092505050612a44565b6128f5565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b77576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b600080858585604051602001612bf793929190614492565b6040516020818303038152906040528051906020012090506000612c1a82613183565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c6885836131b390919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff161492505050949350505050565b6000612c956121f9565b60005403905090565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ce761213f565b8786866040518563ffffffff1660e01b8152600401612d099493929190614573565b602060405180830381600087803b158015612d2357600080fd5b505af1925050508015612d5457506040513d601f19601f82011682018060405250810190612d519190613f6b565b60015b612dce573d8060008114612d84576040519150601f19603f3d011682016040523d82523d6000602084013e612d89565b606091505b50600081511415612dc6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606000602e67ffffffffffffffff811115612e4057612e3f614c23565b5b6040519080825280601f01601f191660200182016040528015612e725781602001600182028036833780820191505090505b5090506000602d905060008460001c90505b6000811115612f0c576000603a8281612ea057612e9f614b67565b5b0690508060f81b848481518110612eba57612eb9614bf4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350828060019003935050603a8281612f0357612f02614b67565b5b04915050612e84565b60005b602e8110156130a35760006040518060600160405280602e8152602001614f47602e91398281518110612f4557612f44614bf4565b5b602001015160f81c60f81b60f81c8583602d0381518110612f6957612f68614bf4565b5b602001015160f81c60f81b60f81c019050603a8160ff161061304b57603a810360f81b8583602d0381518110612fa257612fa1614bf4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600185600184602d030381518110612fec57612feb614bf4565b5b602001015160f81c60f81b60f81c0160f81b85600184602d03038151811061301757613016614bf4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613095565b8060f81b8583602d038151811061306557613064614bf4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b508080600101915050612f0f565b600090505b602e811015613159576040518060600160405280603a8152602001614f75603a91398482815181106130dd576130dc614bf4565b5b602001015160f81c60f81b60f81c60ff16815181106130ff576130fe614bf4565b5b602001015160f81c60f81b84828151811061311d5761311c614bf4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806001019150506130a8565b83945050505050919050565b50505050565b50505050565b61317e83838360016131da565b505050565b60008160405160200161319691906144cf565b604051602081830303815290604052805190602001209050919050565b60008060006131c285856135a8565b915091506131cf8161362b565b819250505092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613247576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415613282576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61328f6000868387613165565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561345957506134588773ffffffffffffffffffffffffffffffffffffffff16612c9e565b5b1561351f575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46134ce6000888480600101955088612cc1565b613504576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082141561345f57826000541461351a57600080fd5b61358b565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415613520575b8160008190555050506135a1600086838761316b565b5050505050565b6000806041835114156135ea5760008060006020860151925060408601519150606086015160001a90506135de87828585613800565b94509450505050613624565b60408351141561361b57600080602085015191506040850151905061361086838361390d565b935093505050613624565b60006002915091505b9250929050565b6000600481111561363f5761363e614b96565b5b81600481111561365257613651614b96565b5b141561365d576137fd565b6001600481111561367157613670614b96565b5b81600481111561368457613683614b96565b5b14156136c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136bc90614671565b60405180910390fd5b600260048111156136d9576136d8614b96565b5b8160048111156136ec576136eb614b96565b5b141561372d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372490614691565b60405180910390fd5b6003600481111561374157613740614b96565b5b81600481111561375457613753614b96565b5b1415613795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378c906146d1565b60405180910390fd5b6004808111156137a8576137a7614b96565b5b8160048111156137bb576137ba614b96565b5b14156137fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f3906146f1565b60405180910390fd5b5b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561383b576000600391509150613904565b601b8560ff16141580156138535750601c8560ff1614155b15613865576000600491509150613904565b60006001878787876040516000815260200160405260405161388a949392919061460a565b6020604051602081039080840390855afa1580156138ac573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156138fb57600060019250925050613904565b80600092509250505b94509492505050565b60008060007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b841690506000601b60ff8660001c901c6139509190614849565b905061395e87828885613800565b935093505050935093915050565b82805461397890614a30565b90600052602060002090601f01602090048101928261399a57600085556139e1565b82601f106139b357803560ff19168380011785556139e1565b828001600101855582156139e1579182015b828111156139e05782358255916020019190600101906139c5565b5b5090506139ee9190613a35565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613a4e576000816000905550600101613a36565b5090565b6000613a65613a6084614791565b61476c565b905082815260208101848484011115613a8157613a80614c61565b5b613a8c8482856149ee565b509392505050565b600081359050613aa381614e8e565b92915050565b600081359050613ab881614ea5565b92915050565b60008083601f840112613ad457613ad3614c57565b5b8235905067ffffffffffffffff811115613af157613af0614c52565b5b602083019150836020820283011115613b0d57613b0c614c5c565b5b9250929050565b600081359050613b2381614ebc565b92915050565b600081359050613b3881614ed3565b92915050565b600081359050613b4d81614eea565b92915050565b600081519050613b6281614eea565b92915050565b60008083601f840112613b7e57613b7d614c57565b5b8235905067ffffffffffffffff811115613b9b57613b9a614c52565b5b602083019150836001820283011115613bb757613bb6614c5c565b5b9250929050565b600082601f830112613bd357613bd2614c57565b5b8135613be3848260208601613a52565b91505092915050565b60008083601f840112613c0257613c01614c57565b5b8235905067ffffffffffffffff811115613c1f57613c1e614c52565b5b602083019150836001820283011115613c3b57613c3a614c5c565b5b9250929050565b600081359050613c5181614f01565b92915050565b600081359050613c6681614f18565b92915050565b600081359050613c7b81614f2f565b92915050565b600060208284031215613c9757613c96614c6b565b5b6000613ca584828501613a94565b91505092915050565b600060208284031215613cc457613cc3614c6b565b5b6000613cd284828501613aa9565b91505092915050565b60008060408385031215613cf257613cf1614c6b565b5b6000613d0085828601613a94565b9250506020613d1185828601613a94565b9150509250929050565b600080600060608486031215613d3457613d33614c6b565b5b6000613d4286828701613a94565b9350506020613d5386828701613a94565b9250506040613d6486828701613c42565b9150509250925092565b60008060008060808587031215613d8857613d87614c6b565b5b6000613d9687828801613a94565b9450506020613da787828801613a94565b9350506040613db887828801613c42565b925050606085013567ffffffffffffffff811115613dd957613dd8614c66565b5b613de587828801613bbe565b91505092959194509250565b60008060408385031215613e0857613e07614c6b565b5b6000613e1685828601613a94565b9250506020613e2785828601613b14565b9150509250929050565b60008060408385031215613e4857613e47614c6b565b5b6000613e5685828601613a94565b9250506020613e6785828601613c42565b9150509250929050565b600080600060608486031215613e8a57613e89614c6b565b5b6000613e9886828701613a94565b9350506020613ea986828701613c42565b9250506040613eba86828701613c42565b9150509250925092565b60008060208385031215613edb57613eda614c6b565b5b600083013567ffffffffffffffff811115613ef957613ef8614c66565b5b613f0585828601613abe565b92509250509250929050565b600060208284031215613f2757613f26614c6b565b5b6000613f3584828501613b14565b91505092915050565b600060208284031215613f5457613f53614c6b565b5b6000613f6284828501613b3e565b91505092915050565b600060208284031215613f8157613f80614c6b565b5b6000613f8f84828501613b53565b91505092915050565b60008060208385031215613faf57613fae614c6b565b5b600083013567ffffffffffffffff811115613fcd57613fcc614c66565b5b613fd985828601613bec565b92509250509250929050565b600060208284031215613ffb57613ffa614c6b565b5b600061400984828501613c42565b91505092915050565b6000806040838503121561402957614028614c6b565b5b600061403785828601613c42565b925050602061404885828601613a94565b9150509250929050565b6000806000806060858703121561406c5761406b614c6b565b5b600061407a87828801613c42565b945050602061408b87828801613b29565b935050604085013567ffffffffffffffff8111156140ac576140ab614c66565b5b6140b887828801613b68565b925092505092959194509250565b6000806000806000608086880312156140e2576140e1614c6b565b5b60006140f088828901613c57565b955050602061410188828901613c57565b945050604061411288828901613c6c565b935050606086013567ffffffffffffffff81111561413357614132614c66565b5b61413f88828901613b68565b92509250509295509295909350565b600061415a8383614420565b60208301905092915050565b61416f8161492d565b82525050565b6141866141818261492d565b614adc565b82525050565b6000614197826147d2565b6141a18185614800565b93506141ac836147c2565b8060005b838110156141dd5781516141c4888261414e565b97506141cf836147f3565b9250506001810190506141b0565b5085935050505092915050565b6141f381614951565b82525050565b6142028161495d565b82525050565b6142196142148261495d565b614aee565b82525050565b600061422a826147dd565b6142348185614811565b93506142448185602086016149fd565b61424d81614c70565b840191505092915050565b6000614263826147e8565b61426d818561482d565b935061427d8185602086016149fd565b61428681614c70565b840191505092915050565b600061429c826147e8565b6142a6818561483e565b93506142b68185602086016149fd565b80840191505092915050565b60006142cf60188361482d565b91506142da82614ca8565b602082019050919050565b60006142f2601f8361482d565b91506142fd82614cd1565b602082019050919050565b6000614315601c8361483e565b915061432082614cfa565b601c82019050919050565b600061433860268361482d565b915061434382614d23565b604082019050919050565b600061435b60228361482d565b915061436682614d72565b604082019050919050565b600061437e60078361483e565b915061438982614dc1565b600782019050919050565b60006143a160228361482d565b91506143ac82614dea565b604082019050919050565b60006143c460208361482d565b91506143cf82614e39565b602082019050919050565b60006143e7600083614822565b91506143f282614e62565b600082019050919050565b600061440a601f8361482d565b915061441582614e65565b602082019050919050565b614429816149b3565b82525050565b614438816149b3565b82525050565b61444f61444a826149b3565b614b0a565b82525050565b614466614461826149bd565b614b14565b82525050565b61447d614478826149cd565b614b26565b82525050565b61448c816149e1565b82525050565b600061449e8286614175565b6014820191506144ae8285614455565b6004820191506144be828461446c565b600882019150819050949350505050565b60006144da82614308565b91506144e68284614208565b60208201915081905092915050565b600061450082614371565b915061450c8284614291565b915081905092915050565b6000614522826143da565b9150819050919050565b6000614538828561443e565b6020820191506145488284614208565b6020820191508190509392505050565b600060208201905061456d6000830184614166565b92915050565b60006080820190506145886000830187614166565b6145956020830186614166565b6145a2604083018561442f565b81810360608301526145b4818461421f565b905095945050505050565b600060408201905081810360008301526145d9818561418c565b90506145e8602083018461442f565b9392505050565b600060208201905061460460008301846141ea565b92915050565b600060808201905061461f60008301876141f9565b61462c6020830186614483565b61463960408301856141f9565b61464660608301846141f9565b95945050505050565b600060208201905081810360008301526146698184614258565b905092915050565b6000602082019050818103600083015261468a816142c2565b9050919050565b600060208201905081810360008301526146aa816142e5565b9050919050565b600060208201905081810360008301526146ca8161432b565b9050919050565b600060208201905081810360008301526146ea8161434e565b9050919050565b6000602082019050818103600083015261470a81614394565b9050919050565b6000602082019050818103600083015261472a816143b7565b9050919050565b6000602082019050818103600083015261474a816143fd565b9050919050565b6000602082019050614766600083018461442f565b92915050565b6000614776614787565b90506147828282614a62565b919050565b6000604051905090565b600067ffffffffffffffff8211156147ac576147ab614c23565b5b6147b582614c70565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614854826149b3565b915061485f836149b3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561489457614893614b38565b5b828201905092915050565b60006148aa826149b3565b91506148b5836149b3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148ee576148ed614b38565b5b828202905092915050565b6000614904826149b3565b915061490f836149b3565b92508282101561492257614921614b38565b5b828203905092915050565b600061493882614993565b9050919050565b600061494a82614993565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614a1b578082015181840152602081019050614a00565b83811115614a2a576000848401525b50505050565b60006002820490506001821680614a4857607f821691505b60208210811415614a5c57614a5b614bc5565b5b50919050565b614a6b82614c70565b810181811067ffffffffffffffff82111715614a8a57614a89614c23565b5b80604052505050565b6000614a9e826149b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ad157614ad0614b38565b5b600182019050919050565b6000614ae782614af8565b9050919050565b6000819050919050565b6000614b0382614c9b565b9050919050565b6000819050919050565b6000614b1f82614c8e565b9050919050565b6000614b3182614c81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160c01b9050919050565b60008160e01b9050919050565b60008160601b9050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f697066733a2f2f00000000000000000000000000000000000000000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b614e978161492d565b8114614ea257600080fd5b50565b614eae8161493f565b8114614eb957600080fd5b50565b614ec581614951565b8114614ed057600080fd5b50565b614edc8161495d565b8114614ee757600080fd5b50565b614ef381614967565b8114614efe57600080fd5b50565b614f0a816149b3565b8114614f1557600080fd5b50565b614f21816149bd565b8114614f2c57600080fd5b50565b614f38816149cd565b8114614f4357600080fd5b5056fe0004280b12170928310012042820252522311b1d392909261b290b020a182522241b392c1d390706292513152c1731323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa26469706673582212201b4d79ee1dd11edeeaf5d7127672b364b4cddb62ec2145586f97719f19e9a31464736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000d2962d91b614933871b0b36c4d2d662a47530c3000000000000000000000000000000000000000000000000000000000000003f200000000000000000000000000000000000000000000000000000000000000094d617472697844414f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064d41545249580000000000000000000000000000000000000000000000000000