60806040526101a4600b556000600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506040518060400160405280601481526020017f54686f73652044616d6e20486f6f6c6967616e730000000000000000000000008152506040518060400160405280600581526020017f484c474e530000000000000000000000000000000000000000000000000000008152508160009081620000bd919062000440565b508060019081620000cf919062000440565b505050620000f2620000e6620000f860201b60201c565b6200010060201b60201c565b62000527565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200024857607f821691505b6020821081036200025e576200025d62000200565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000289565b620002d4868362000289565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003216200031b6200031584620002ec565b620002f6565b620002ec565b9050919050565b6000819050919050565b6200033d8362000300565b620003556200034c8262000328565b84845462000296565b825550505050565b600090565b6200036c6200035d565b6200037981848462000332565b505050565b5b81811015620003a1576200039560008262000362565b6001810190506200037f565b5050565b601f821115620003f057620003ba8162000264565b620003c58462000279565b81016020851015620003d5578190505b620003ed620003e48562000279565b8301826200037e565b50505b505050565b600082821c905092915050565b60006200041560001984600802620003f5565b1980831691505092915050565b600062000430838362000402565b9150826002028217905092915050565b6200044b82620001c6565b67ffffffffffffffff811115620004675762000466620001d1565b5b6200047382546200022f565b62000480828285620003a5565b600060209050601f831160018114620004b85760008415620004a3578287015190505b620004af858262000422565b8655506200051f565b601f198416620004c88662000264565b60005b82811015620004f257848901518255600182019150602085019450602081019050620004cb565b868310156200051257848901516200050e601f89168262000402565b8355505b6001600288020188555050505b505050505050565b613d2d80620005376000396000f3fe6080604052600436106101b75760003560e01c806351cff8d9116100ec578063a22cb4651161008a578063c87b56dd11610064578063c87b56dd146105dc578063d5abeb0114610619578063e985e9c514610644578063f2fde38b14610681576101b7565b8063a22cb4651461055f578063b88d4fde14610588578063bcc9ca5b146105b1576101b7565b806370a08231116100c657806370a08231146104b5578063715018a6146104f25780638da5cb5b1461050957806395d89b4114610534576101b7565b806351cff8d9146104265780636352211e1461044f5780636447c35d1461048c576101b7565b806323b872dd116101595780632f48de79116101335780632f48de791461035a5780632f745c591461038357806342842e0e146103c05780634f6ccce7146103e9576101b7565b806323b872dd146102ea57806326092b83146103135780632848aeaf1461031d576101b7565b8063085c9bac11610195578063085c9bac14610261578063095ea7b31461028c578063102a6a73146102b557806318160ddd146102bf576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de91906128c6565b6106aa565b6040516101f0919061290e565b60405180910390f35b34801561020557600080fd5b5061020e6106bc565b60405161021b91906129b9565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612a11565b61074e565b6040516102589190612a7f565b60405180910390f35b34801561026d57600080fd5b50610276610794565b604051610283919061290e565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612ac6565b6107a7565b005b6102bd6108be565b005b3480156102cb57600080fd5b506102d46109e6565b6040516102e19190612b15565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190612b30565b6109f3565b005b61031b610a53565b005b34801561032957600080fd5b50610344600480360381019061033f9190612b83565b610af5565b604051610351919061290e565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612bdc565b610b15565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612ac6565b610b55565b6040516103b79190612b15565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b30565b610bfa565b005b3480156103f557600080fd5b50610410600480360381019061040b9190612a11565b610c1a565b60405161041d9190612b15565b60405180910390f35b34801561043257600080fd5b5061044d60048036038101906104489190612b83565b610c8b565b005b34801561045b57600080fd5b5061047660048036038101906104719190612a11565b610ce3565b6040516104839190612a7f565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae9190612c81565b610d69565b005b3480156104c157600080fd5b506104dc60048036038101906104d79190612b83565b610e16565b6040516104e99190612b15565b60405180910390f35b3480156104fe57600080fd5b50610507610ecd565b005b34801561051557600080fd5b5061051e610ee1565b60405161052b9190612a7f565b60405180910390f35b34801561054057600080fd5b50610549610f0b565b60405161055691906129b9565b60405180910390f35b34801561056b57600080fd5b5061058660048036038101906105819190612cce565b610f9d565b005b34801561059457600080fd5b506105af60048036038101906105aa9190612e3e565b610fb3565b005b3480156105bd57600080fd5b506105c6611015565b6040516105d3919061290e565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe9190612a11565b611028565b60405161061091906129b9565b60405180910390f35b34801561062557600080fd5b5061062e611090565b60405161063b9190612b15565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190612ec1565b611096565b604051610678919061290e565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190612b83565b61112a565b005b60006106b5826111ad565b9050919050565b6060600080546106cb90612f30565b80601f01602080910402602001604051908101604052809291908181526020018280546106f790612f30565b80156107445780601f1061071957610100808354040283529160200191610744565b820191906000526020600020905b81548152906001019060200180831161072757829003601f168201915b5050505050905090565b600061075982611227565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600c60019054906101000a900460ff1681565b60006107b282610ce3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990612fd3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610841611272565b73ffffffffffffffffffffffffffffffffffffffff161480610870575061086f8161086a611272565b611096565b5b6108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a690613065565b60405180910390fd5b6108b9838361127a565b505050565b600c60019054906101000a900460ff1661090d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610904906130d1565b60405180910390fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109909061313d565b60405180910390fd5b600034146109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d3906131a9565b60405180910390fd5b6109e4611333565b565b6000600880549050905090565b610a046109fe611272565b826113af565b610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a9061323b565b60405180910390fd5b610a4e838383611444565b505050565b600c60009054906101000a900460ff16610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a99906130d1565b60405180910390fd5b662386f26fc100003414610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae2906132cd565b60405180910390fd5b610af3611333565b565b600d6020528060005260406000206000915054906101000a900460ff1681565b610b1d61173d565b81600c60006101000a81548160ff02191690831515021790555080600c60016101000a81548160ff0219169083151502179055505050565b6000610b6083610e16565b8210610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b989061335f565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610c1583838360405180602001604052806000815250610fb3565b505050565b6000610c246109e6565b8210610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c906133f1565b60405180910390fd5b60088281548110610c7957610c78613411565b5b90600052602060002001549050919050565b610c9361173d565b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cde573d6000803e3d6000fd5b505050565b600080610cef836117bb565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d579061348c565b60405180910390fd5b80915050919050565b610d7161173d565b60005b82829050811015610e11576001600d6000858585818110610d9857610d97613411565b5b9050602002016020810190610dad9190612b83565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e09906134db565b915050610d74565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90613595565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ed561173d565b610edf60006117f8565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610f1a90612f30565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4690612f30565b8015610f935780601f10610f6857610100808354040283529160200191610f93565b820191906000526020600020905b815481529060010190602001808311610f7657829003601f168201915b5050505050905090565b610faf610fa8611272565b83836118be565b5050565b610fc4610fbe611272565b836113af565b611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa9061323b565b60405180910390fd5b61100f84848484611a2a565b50505050565b600c60009054906101000a900460ff1681565b606061103382611227565b600061103d611a86565b9050600081511161105d5760405180602001604052806000815250611088565b8061106784611aa6565b6040516020016110789291906135f1565b6040516020818303038152906040525b915050919050565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61113261173d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119890613687565b60405180910390fd5b6111aa816117f8565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611220575061121f82611b74565b5b9050919050565b61123081611c56565b61126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112669061348c565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166112ed83610ce3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600b5461133e6109e6565b1061137e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611375906136f3565b60405180910390fd5b6000600161138c600e611c97565b6113969190613713565b90506113a2600e611ca5565b6113ac3382611cbb565b50565b6000806113bb83610ce3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113fd57506113fc8185611096565b5b8061143b57508373ffffffffffffffffffffffffffffffffffffffff166114238461074e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661146482610ce3565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b1906137b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611529576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115209061384b565b60405180910390fd5b6115368383836001611cd9565b8273ffffffffffffffffffffffffffffffffffffffff1661155682610ce3565b73ffffffffffffffffffffffffffffffffffffffff16146115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a3906137b9565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117388383836001611ceb565b505050565b611745611272565b73ffffffffffffffffffffffffffffffffffffffff16611763610ee1565b73ffffffffffffffffffffffffffffffffffffffff16146117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b0906138b7565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613923565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a1d919061290e565b60405180910390a3505050565b611a35848484611444565b611a4184848484611cf1565b611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a77906139b5565b60405180910390fd5b50505050565b6060604051806080016040528060438152602001613cb560439139905090565b606060006001611ab584611e78565b01905060008167ffffffffffffffff811115611ad457611ad3612d13565b5b6040519080825280601f01601f191660200182016040528015611b065781602001600182028036833780820191505090505b509050600082602001820190505b600115611b69578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611b5d57611b5c6139d5565b5b04945060008503611b14575b819350505050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c3f57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c4f5750611c4e82611fcb565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611c78836117bb565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611cd5828260405180602001604052806000815250612035565b5050565b611ce584848484612090565b50505050565b50505050565b6000611d128473ffffffffffffffffffffffffffffffffffffffff166121ee565b15611e6b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d3b611272565b8786866040518563ffffffff1660e01b8152600401611d5d9493929190613a59565b6020604051808303816000875af1925050508015611d9957506040513d601f19601f82011682018060405250810190611d969190613aba565b60015b611e1b573d8060008114611dc9576040519150601f19603f3d011682016040523d82523d6000602084013e611dce565b606091505b506000815103611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a906139b5565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611e70565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611ed6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611ecc57611ecb6139d5565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611f13576d04ee2d6d415b85acef81000000008381611f0957611f086139d5565b5b0492506020810190505b662386f26fc100008310611f4257662386f26fc100008381611f3857611f376139d5565b5b0492506010810190505b6305f5e1008310611f6b576305f5e1008381611f6157611f606139d5565b5b0492506008810190505b6127108310611f90576127108381611f8657611f856139d5565b5b0492506004810190505b60648310611fb35760648381611fa957611fa86139d5565b5b0492506002810190505b600a8310611fc2576001810190505b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61203f8383612211565b61204c6000848484611cf1565b61208b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612082906139b5565b60405180910390fd5b505050565b61209c8484848461242e565b60018111156120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d790613b59565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036121275761212281612554565b612166565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461216557612164858261259d565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036121a8576121a38161270a565b6121e7565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146121e6576121e584826127db565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227790613bc5565b60405180910390fd5b61228981611c56565b156122c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c090613c31565b60405180910390fd5b6122d7600083836001611cd9565b6122e081611c56565b15612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231790613c31565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461242a600083836001611ceb565b5050565b600181111561254e57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146124c25780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124ba9190613c51565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461254d5780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125459190613713565b925050819055505b5b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016125aa84610e16565b6125b49190613c51565b9050600060076000848152602001908152602001600020549050818114612699576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061271e9190613c51565b905060006009600084815260200190815260200160002054905060006008838154811061274e5761274d613411565b5b9060005260206000200154905080600883815481106127705761276f613411565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127bf576127be613c85565b5b6001900381819060005260206000200160009055905550505050565b60006127e683610e16565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6128a38161286e565b81146128ae57600080fd5b50565b6000813590506128c08161289a565b92915050565b6000602082840312156128dc576128db612864565b5b60006128ea848285016128b1565b91505092915050565b60008115159050919050565b612908816128f3565b82525050565b600060208201905061292360008301846128ff565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612963578082015181840152602081019050612948565b60008484015250505050565b6000601f19601f8301169050919050565b600061298b82612929565b6129958185612934565b93506129a5818560208601612945565b6129ae8161296f565b840191505092915050565b600060208201905081810360008301526129d38184612980565b905092915050565b6000819050919050565b6129ee816129db565b81146129f957600080fd5b50565b600081359050612a0b816129e5565b92915050565b600060208284031215612a2757612a26612864565b5b6000612a35848285016129fc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6982612a3e565b9050919050565b612a7981612a5e565b82525050565b6000602082019050612a946000830184612a70565b92915050565b612aa381612a5e565b8114612aae57600080fd5b50565b600081359050612ac081612a9a565b92915050565b60008060408385031215612add57612adc612864565b5b6000612aeb85828601612ab1565b9250506020612afc858286016129fc565b9150509250929050565b612b0f816129db565b82525050565b6000602082019050612b2a6000830184612b06565b92915050565b600080600060608486031215612b4957612b48612864565b5b6000612b5786828701612ab1565b9350506020612b6886828701612ab1565b9250506040612b79868287016129fc565b9150509250925092565b600060208284031215612b9957612b98612864565b5b6000612ba784828501612ab1565b91505092915050565b612bb9816128f3565b8114612bc457600080fd5b50565b600081359050612bd681612bb0565b92915050565b60008060408385031215612bf357612bf2612864565b5b6000612c0185828601612bc7565b9250506020612c1285828601612bc7565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c4157612c40612c1c565b5b8235905067ffffffffffffffff811115612c5e57612c5d612c21565b5b602083019150836020820283011115612c7a57612c79612c26565b5b9250929050565b60008060208385031215612c9857612c97612864565b5b600083013567ffffffffffffffff811115612cb657612cb5612869565b5b612cc285828601612c2b565b92509250509250929050565b60008060408385031215612ce557612ce4612864565b5b6000612cf385828601612ab1565b9250506020612d0485828601612bc7565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d4b8261296f565b810181811067ffffffffffffffff82111715612d6a57612d69612d13565b5b80604052505050565b6000612d7d61285a565b9050612d898282612d42565b919050565b600067ffffffffffffffff821115612da957612da8612d13565b5b612db28261296f565b9050602081019050919050565b82818337600083830152505050565b6000612de1612ddc84612d8e565b612d73565b905082815260208101848484011115612dfd57612dfc612d0e565b5b612e08848285612dbf565b509392505050565b600082601f830112612e2557612e24612c1c565b5b8135612e35848260208601612dce565b91505092915050565b60008060008060808587031215612e5857612e57612864565b5b6000612e6687828801612ab1565b9450506020612e7787828801612ab1565b9350506040612e88878288016129fc565b925050606085013567ffffffffffffffff811115612ea957612ea8612869565b5b612eb587828801612e10565b91505092959194509250565b60008060408385031215612ed857612ed7612864565b5b6000612ee685828601612ab1565b9250506020612ef785828601612ab1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f4857607f821691505b602082108103612f5b57612f5a612f01565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fbd602183612934565b9150612fc882612f61565b604082019050919050565b60006020820190508181036000830152612fec81612fb0565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b600061304f603d83612934565b915061305a82612ff3565b604082019050919050565b6000602082019050818103600083015261307e81613042565b9050919050565b7f434c4f5345440000000000000000000000000000000000000000000000000000600082015250565b60006130bb600683612934565b91506130c682613085565b602082019050919050565b600060208201905081810360008301526130ea816130ae565b9050919050565b7f4e4f50452c2074727920746865207075626c6963206d696e7400000000000000600082015250565b6000613127601983612934565b9150613132826130f1565b602082019050919050565b600060208201905081810360008301526131568161311a565b9050919050565b7f4974277320667265653f00000000000000000000000000000000000000000000600082015250565b6000613193600a83612934565b915061319e8261315d565b602082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613225602d83612934565b9150613230826131c9565b604082019050919050565b6000602082019050818103600083015261325481613218565b9050919050565b7f596f75276c6c206861766520746f20616464206d6f7265207468616e2074686160008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b7602183612934565b91506132c28261325b565b604082019050919050565b600060208201905081810360008301526132e6816132aa565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613349602b83612934565b9150613354826132ed565b604082019050919050565b600060208201905081810360008301526133788161333c565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006133db602c83612934565b91506133e68261337f565b604082019050919050565b6000602082019050818103600083015261340a816133ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613476601883612934565b915061348182613440565b602082019050919050565b600060208201905081810360008301526134a581613469565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134e6826129db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613518576135176134ac565b5b600182019050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061357f602983612934565b915061358a82613523565b604082019050919050565b600060208201905081810360008301526135ae81613572565b9050919050565b600081905092915050565b60006135cb82612929565b6135d581856135b5565b93506135e5818560208601612945565b80840191505092915050565b60006135fd82856135c0565b915061360982846135c0565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613671602683612934565b915061367c82613615565b604082019050919050565b600060208201905081810360008301526136a081613664565b9050919050565b7f534f4c44204f5554000000000000000000000000000000000000000000000000600082015250565b60006136dd600883612934565b91506136e8826136a7565b602082019050919050565b6000602082019050818103600083015261370c816136d0565b9050919050565b600061371e826129db565b9150613729836129db565b9250828201905080821115613741576137406134ac565b5b92915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006137a3602583612934565b91506137ae82613747565b604082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613835602483612934565b9150613840826137d9565b604082019050919050565b6000602082019050818103600083015261386481613828565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138a1602083612934565b91506138ac8261386b565b602082019050919050565b600060208201905081810360008301526138d081613894565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061390d601983612934565b9150613918826138d7565b602082019050919050565b6000602082019050818103600083015261393c81613900565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061399f603283612934565b91506139aa82613943565b604082019050919050565b600060208201905081810360008301526139ce81613992565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000613a2b82613a04565b613a358185613a0f565b9350613a45818560208601612945565b613a4e8161296f565b840191505092915050565b6000608082019050613a6e6000830187612a70565b613a7b6020830186612a70565b613a886040830185612b06565b8181036060830152613a9a8184613a20565b905095945050505050565b600081519050613ab48161289a565b92915050565b600060208284031215613ad057613acf612864565b5b6000613ade84828501613aa5565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613b43603583612934565b9150613b4e82613ae7565b604082019050919050565b60006020820190508181036000830152613b7281613b36565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613baf602083612934565b9150613bba82613b79565b602082019050919050565b60006020820190508181036000830152613bde81613ba2565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613c1b601c83612934565b9150613c2682613be5565b602082019050919050565b60006020820190508181036000830152613c4a81613c0e565b9050919050565b6000613c5c826129db565b9150613c67836129db565b9250828203905081811115613c7f57613c7e6134ac565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe697066733a2f2f62616679626569666476706a7067796a66696f6662747a7874706e6133797a6e66347665657468677a726f78716d766261366a6132717373766b712fa2646970667358221220cc2500e17ec666510d191cc0f5f50c3ab004f817de83d71ffb9145a16876950d64736f6c63430008110033