6080604052610e10600655603c600755600160085534801561002057600080fd5b506040518060400160405280600a81526020017f54686520427574746f6e000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f425554544f4e0000000000000000000000000000000000000000000000000000815250816000908161009c91906104af565b5080600190816100ac91906104af565b50505033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506100fe61010360201b60201c565b610699565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018a906105de565b60405180910390fd5b4260098190555042600c81905550600654426101af919061062d565b600a819055506001601160146101000a81548160ff0219169083151502179055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b819055506000600d819055507fa2dfaa3573b86004ec9d4d4abe5068d942579c59da4da8cd0d9e45e71a393bc142600a54604051610255929190610670565b60405180910390a1565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806102e057607f821691505b6020821081036102f3576102f2610299565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261035b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261031e565b610365868361031e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006103ac6103a76103a28461037d565b610387565b61037d565b9050919050565b6000819050919050565b6103c683610391565b6103da6103d2826103b3565b84845461032b565b825550505050565b600090565b6103ef6103e2565b6103fa8184846103bd565b505050565b5b8181101561041e576104136000826103e7565b600181019050610400565b5050565b601f82111561046357610434816102f9565b61043d8461030e565b8101602085101561044c578190505b6104606104588561030e565b8301826103ff565b50505b505050565b600082821c905092915050565b600061048660001984600802610468565b1980831691505092915050565b600061049f8383610475565b9150826002028217905092915050565b6104b88261025f565b67ffffffffffffffff8111156104d1576104d061026a565b5b6104db82546102c8565b6104e6828285610422565b600060209050601f8311600181146105195760008415610507578287015190505b6105118582610493565b865550610579565b601f198416610527866102f9565b60005b8281101561054f5784890151825560018201915060208501945060208101905061052a565b8683101561056c5784890151610568601f891682610475565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b60006105c8601783610581565b91506105d382610592565b602082019050919050565b600060208201905081810360008301526105f7816105bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006106388261037d565b91506106438361037d565b925082820190508082111561065b5761065a6105fe565b5b92915050565b61066a8161037d565b82525050565b60006040820190506106856000830185610661565b6106926020830184610661565b9392505050565b613c4f806106a86000396000f3fe6080604052600436106102765760003560e01c80635b3725321161014f578063b03b2030116100c1578063cbbbbedf1161007a578063cbbbbedf14610925578063e3450e1314610950578063e985e9c51461097b578063ecd46bc4146109b8578063f020044f146109e3578063f71c959514610a0e5761027d565b8063b03b203014610813578063b09afec11461082a578063b88d4fde14610867578063c58db78f14610890578063c7e284b8146108bb578063c87b56dd146108e85761027d565b80638da5cb5b116101135780638da5cb5b146106fc5780639119c13c1461072757806395d89b4114610752578063a22cb4651461077d578063a2c6e80e146107a6578063a6c12ccd146107e85761027d565b80635b372532146106245780636352211e1461062e57806370a082311461066b5780637955ddfa146106a85780638415d213146106d35761027d565b8063345df34f116101e857806342842e0e116101ac57806342842e0e1461053a578063458aad4014610563578063482d51e01461058e5780634ba2363a146105a55780634e2a953a146105d0578063590119f7146105fb5761027d565b8063345df34f1461047957806335a3bb14146104a25780633b377cf8146104cd5780633ccfd60b146104f8578063403c9fa81461050f5761027d565b806312065fe01161023a57806312065fe01461037b57806317d70f7c146103a6578063203ad586146103d157806323b872dd146103fa57806329615f761461042357806329dcb0cf1461044e5761027d565b806301ffc9a71461028257806306fdde03146102bf578063081812fc146102ea578063095ea7b3146103275780631112e764146103505761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a49190612c7f565b610a39565b6040516102b69190612cc7565b60405180910390f35b3480156102cb57600080fd5b506102d4610b1b565b6040516102e19190612d72565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190612dca565b610bad565b60405161031e9190612e38565b60405180910390f35b34801561033357600080fd5b5061034e60048036038101906103499190612e7f565b610bc9565b005b34801561035c57600080fd5b50610365610bdf565b6040516103729190612ece565b60405180910390f35b34801561038757600080fd5b50610390610be9565b60405161039d9190612ece565b60405180910390f35b3480156103b257600080fd5b506103bb610bf1565b6040516103c89190612ece565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190612dca565b610bf7565b005b34801561040657600080fd5b50610421600480360381019061041c9190612ee9565b610d0b565b005b34801561042f57600080fd5b50610438610e0d565b6040516104459190612ece565b60405180910390f35b34801561045a57600080fd5b50610463610e12565b6040516104709190612ece565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b9190612dca565b610e18565b005b3480156104ae57600080fd5b506104b7610eb2565b6040516104c49190612ece565b60405180910390f35b3480156104d957600080fd5b506104e2610ebd565b6040516104ef9190612ece565b60405180910390f35b34801561050457600080fd5b5061050d610ec3565b005b34801561051b57600080fd5b50610524611024565b6040516105319190612ece565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190612ee9565b61105a565b005b34801561056f57600080fd5b5061057861107a565b6040516105859190612ece565b60405180910390f35b34801561059a57600080fd5b506105a36110a7565b005b3480156105b157600080fd5b506105ba611203565b6040516105c79190612ece565b60405180910390f35b3480156105dc57600080fd5b506105e5611209565b6040516105f29190612ece565b60405180910390f35b34801561060757600080fd5b50610622600480360381019061061d9190612dca565b61120f565b005b61062c6112a9565b005b34801561063a57600080fd5b5061065560048036038101906106509190612dca565b611710565b6040516106629190612e38565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612f3c565b611722565b60405161069f9190612ece565b60405180910390f35b3480156106b457600080fd5b506106bd6117dc565b6040516106ca9190612e38565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190612f3c565b611802565b005b34801561070857600080fd5b50610711611912565b60405161071e9190612e38565b60405180910390f35b34801561073357600080fd5b5061073c611938565b6040516107499190612ece565b60405180910390f35b34801561075e57600080fd5b5061076761193e565b6040516107749190612d72565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190612f95565b6119d0565b005b3480156107b257600080fd5b506107cd60048036038101906107c89190612dca565b6119e6565b6040516107df96959493929190612fd5565b60405180910390f35b3480156107f457600080fd5b506107fd611a4f565b60405161080a9190612ece565b60405180910390f35b34801561081f57600080fd5b50610828611a55565b005b34801561083657600080fd5b50610851600480360381019061084c9190612dca565b611a83565b60405161085e91906130de565b60405180910390f35b34801561087357600080fd5b5061088e6004803603810190610889919061322e565b611b49565b005b34801561089c57600080fd5b506108a5611b6e565b6040516108b29190612ece565b60405180910390f35b3480156108c757600080fd5b506108d0611b78565b6040516108df939291906132b1565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a9190612dca565b611bd0565b60405161091c9190612d72565b60405180910390f35b34801561093157600080fd5b5061093a611c7a565b6040516109479190612e38565b60405180910390f35b34801561095c57600080fd5b50610965611ca4565b6040516109729190612e38565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d91906132e8565b611cca565b6040516109af9190612cc7565b60405180910390f35b3480156109c457600080fd5b506109cd611d5e565b6040516109da9190612ece565b60405180910390f35b3480156109ef57600080fd5b506109f8611d64565b604051610a059190612cc7565b60405180910390f35b348015610a1a57600080fd5b50610a23611d77565b604051610a309190612ece565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b0457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b145750610b1382611d7d565b5b9050919050565b606060008054610b2a90613357565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5690613357565b8015610ba35780601f10610b7857610100808354040283529160200191610ba3565b820191906000526020600020905b815481529060010190602001808311610b8657829003601f168201915b5050505050905090565b6000610bb882611de7565b50610bc282611e6f565b9050919050565b610bdb8282610bd6611eac565b611eb4565b5050565b655af3107a400081565b600047905090565b600e5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e906133d4565b60405180910390fd5b60008111610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613440565b60405180910390fd5b806006819055507fad4457629a8bcf3315a88c252940aa78fc59599c6128b1ef139097520d85629e81604051610d009190612ece565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d7d5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610d749190612e38565b60405180910390fd5b6000610d918383610d8c611eac565b611ec6565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e07578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610dfe93929190613460565b60405180910390fd5b50505050565b600a81565b600a5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f906133d4565b60405180910390fd5b8060078190555050565b66038d7ea4c6800081565b60095481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a906133d4565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f9b906134c8565b60006040518083038185875af1925050503d8060008114610fd8576040519150601f19603f3d011682016040523d82523d6000602084013e610fdd565b606091505b5050905080611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890613529565b60405180910390fd5b50565b60008047905060006064600a8361103b9190613578565b61104591906135e9565b90508082611053919061361a565b9250505090565b61107583838360405180602001604052806000815250611b49565b505050565b6000655af3107a4000600b546110909190613578565b66038d7ea4c680006110a2919061364e565b905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e906133d4565b60405180910390fd5b4260098190555042600c8190555060065442611153919061364e565b600a819055506001601160146101000a81548160ff0219169083151502179055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b819055506000600d819055507fa2dfaa3573b86004ec9d4d4abe5068d942579c59da4da8cd0d9e45e71a393bc142600a546040516111f9929190613682565b60405180910390a1565b600d5481565b600c5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906133d4565b60405180910390fd5b8060088190555050565b601160149054906101000a900460ff1680156112c75750600a544210155b15611390576112d46120e0565b600034111561138b5760003373ffffffffffffffffffffffffffffffffffffffff1634604051611303906134c8565b60006040518083038185875af1925050503d8060008114611340576040519150601f19603f3d011682016040523d82523d6000602084013e611345565b606091505b5050905080611389576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611380906136f7565b60405180910390fd5b505b61170e565b600061139a61107a565b9050601160149054906101000a900460ff166113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290613763565b60405180910390fd5b8034101561142e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611425906137cf565b60405180910390fd5b6000813461143c919061361a565b905060008111156114f55760003373ffffffffffffffffffffffffffffffffffffffff168260405161146d906134c8565b60006040518083038185875af1925050503d80600081146114aa576040519150601f19603f3d011682016040523d82523d6000602084013e6114af565b606091505b50509050806114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea906136f7565b60405180910390fd5b505b6000600a544210156115165742600a5461150f919061361a565b905061151b565b600090505b42600981905550600654600954611532919061364e565b600a8190555033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e600081548092919061158c906137ef565b919050555061159d33600e546123b5565b6040518060c00160405280600b5481526020018481526020014281526020018281526020013373ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525060126000600e5481526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908315150217905550905050600b600081548092919061169f906137ef565b91905055506116ac611024565b600d819055506116ba6123d3565b7f67e1a7f62f22436c5b13e9373524a81b769ee9320f49735d3ede650d878c30c0338442600a54600e54600b546116ef61107a565b6040516117029796959493929190613837565b60405180910390a15050505b565b600061171b82611de7565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117955760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161178c9190612e38565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611889906133d4565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c6000600e546040516119079291906138eb565b60405180910390a150565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60606001805461194d90613357565b80601f016020809104026020016040519081016040528092919081815260200182805461197990613357565b80156119c65780601f1061199b576101008083540402835291602001916119c6565b820191906000526020600020905b8154815290600101906020018083116119a957829003601f168201915b5050505050905090565b6119e26119db611eac565b8383612401565b5050565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160149054906101000a900460ff16905086565b60085481565b601160149054906101000a900460ff168015611a735750600a544210155b15611a8157611a806120e0565b5b565b611a8b612bc5565b601260008381526020019081526020016000206040518060c0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff1615151515815250509050919050565b611b54848484610d0b565b611b68611b5f611eac565b85858585612570565b50505050565b6000600d54905090565b6000806000601160149054906101000a900460ff161580611b9b5750600a544210155b15611bb0576000806000925092509250611bcb565b600954600a5442600a54611bc4919061361a565b9250925092505b909192565b6060600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b8152600401611c2d9190612ece565b600060405180830381865afa158015611c4a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c7391906139b5565b9050919050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60075481565b601160149054906101000a900460ff1681565b600b5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080611df383612721565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e6657826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611e5d9190612ece565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b611ec1838383600161275e565b505050565b600080611ed284612721565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f1457611f13818486612923565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611fa557611f5660008560008061275e565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612028576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b3576000601160146101000a81548160ff021916908315150217905550600160126000600e54815260200190815260200160002060040160146101000a81548160ff021916908315150217905550600047905060006064600a836121989190613578565b6121a291906135e9565b9050600081836121b2919061361a565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516121fc906134c8565b60006040518083038185875af1925050503d8060008114612239576040519150601f19603f3d011682016040523d82523d6000602084013e61223e565b606091505b5050905080612282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227990613a4a565b60405180910390fd5b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516122ca906134c8565b60006040518083038185875af1925050503d8060008114612307576040519150601f19603f3d011682016040523d82523d6000602084013e61230c565b606091505b5050905080612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790613ab6565b60405180910390fd5b7f9f8afefca80e62749c106c1611a2481378f6c62bd9dd2ac9bc00a9c2f960d93d601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684866040516123a593929190613ad6565b60405180910390a150505050505b565b6123cf8282604051806020016040528060008152506129e7565b5050565b6008546006546123e3919061361a565b60068190555060075460065410156123ff576007546006819055505b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361247257816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016124699190612e38565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125639190612cc7565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b111561271a578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b81526004016125cf9493929190613b62565b6020604051808303816000875af192505050801561260b57506040513d601f19601f820116820180604052508101906126089190613bc3565b60015b61268f573d806000811461263b576040519150601f19603f3d011682016040523d82523d6000602084013e612640565b606091505b50600081510361268757836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161267e9190612e38565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461271857836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161270f9190612e38565b60405180910390fd5b505b5050505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806127975750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128cb5760006127a784611de7565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561281257508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561282557506128238184611cca565b155b1561286757826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161285e9190612e38565b60405180910390fd5b81156128c957838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61292e838383612a0b565b6129e257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129a357806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161299a9190612ece565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016129d9929190613bf0565b60405180910390fd5b505050565b6129f18383612acc565b612a066129fc611eac565b6000858585612570565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ac357508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a845750612a838484611cca565b5b80612ac257508273ffffffffffffffffffffffffffffffffffffffff16612aaa83611e6f565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b3e5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612b359190612e38565b60405180910390fd5b6000612b4c83836000611ec6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612bc05760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612bb79190612e38565b60405180910390fd5b505050565b6040518060c0016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c5c81612c27565b8114612c6757600080fd5b50565b600081359050612c7981612c53565b92915050565b600060208284031215612c9557612c94612c1d565b5b6000612ca384828501612c6a565b91505092915050565b60008115159050919050565b612cc181612cac565b82525050565b6000602082019050612cdc6000830184612cb8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d1c578082015181840152602081019050612d01565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4482612ce2565b612d4e8185612ced565b9350612d5e818560208601612cfe565b612d6781612d28565b840191505092915050565b60006020820190508181036000830152612d8c8184612d39565b905092915050565b6000819050919050565b612da781612d94565b8114612db257600080fd5b50565b600081359050612dc481612d9e565b92915050565b600060208284031215612de057612ddf612c1d565b5b6000612dee84828501612db5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e2282612df7565b9050919050565b612e3281612e17565b82525050565b6000602082019050612e4d6000830184612e29565b92915050565b612e5c81612e17565b8114612e6757600080fd5b50565b600081359050612e7981612e53565b92915050565b60008060408385031215612e9657612e95612c1d565b5b6000612ea485828601612e6a565b9250506020612eb585828601612db5565b9150509250929050565b612ec881612d94565b82525050565b6000602082019050612ee36000830184612ebf565b92915050565b600080600060608486031215612f0257612f01612c1d565b5b6000612f1086828701612e6a565b9350506020612f2186828701612e6a565b9250506040612f3286828701612db5565b9150509250925092565b600060208284031215612f5257612f51612c1d565b5b6000612f6084828501612e6a565b91505092915050565b612f7281612cac565b8114612f7d57600080fd5b50565b600081359050612f8f81612f69565b92915050565b60008060408385031215612fac57612fab612c1d565b5b6000612fba85828601612e6a565b9250506020612fcb85828601612f80565b9150509250929050565b600060c082019050612fea6000830189612ebf565b612ff76020830188612ebf565b6130046040830187612ebf565b6130116060830186612ebf565b61301e6080830185612e29565b61302b60a0830184612cb8565b979650505050505050565b61303f81612d94565b82525050565b61304e81612e17565b82525050565b61305d81612cac565b82525050565b60c0820160008201516130796000850182613036565b50602082015161308c6020850182613036565b50604082015161309f6040850182613036565b5060608201516130b26060850182613036565b5060808201516130c56080850182613045565b5060a08201516130d860a0850182613054565b50505050565b600060c0820190506130f36000830184613063565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61313b82612d28565b810181811067ffffffffffffffff8211171561315a57613159613103565b5b80604052505050565b600061316d612c13565b90506131798282613132565b919050565b600067ffffffffffffffff82111561319957613198613103565b5b6131a282612d28565b9050602081019050919050565b82818337600083830152505050565b60006131d16131cc8461317e565b613163565b9050828152602081018484840111156131ed576131ec6130fe565b5b6131f88482856131af565b509392505050565b600082601f830112613215576132146130f9565b5b81356132258482602086016131be565b91505092915050565b6000806000806080858703121561324857613247612c1d565b5b600061325687828801612e6a565b945050602061326787828801612e6a565b935050604061327887828801612db5565b925050606085013567ffffffffffffffff81111561329957613298612c22565b5b6132a587828801613200565b91505092959194509250565b60006060820190506132c66000830186612ebf565b6132d36020830185612ebf565b6132e06040830184612ebf565b949350505050565b600080604083850312156132ff576132fe612c1d565b5b600061330d85828601612e6a565b925050602061331e85828601612e6a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061336f57607f821691505b60208210810361338257613381613328565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b60006133be601783612ced565b91506133c982613388565b602082019050919050565b600060208201905081810360008301526133ed816133b1565b9050919050565b7f4475726174696f6e206d7573742062652067726561746572207468616e203000600082015250565b600061342a601f83612ced565b9150613435826133f4565b602082019050919050565b600060208201905081810360008301526134598161341d565b9050919050565b60006060820190506134756000830186612e29565b6134826020830185612ebf565b61348f6040830184612e29565b949350505050565b600081905092915050565b50565b60006134b2600083613497565b91506134bd826134a2565b600082019050919050565b60006134d3826134a5565b9150819050919050565b7f5769746864726177616c206661696c6564000000000000000000000000000000600082015250565b6000613513601183612ced565b915061351e826134dd565b602082019050919050565b6000602082019050818103600083015261354281613506565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358382612d94565b915061358e83612d94565b925082820261359c81612d94565b915082820484148315176135b3576135b2613549565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135f482612d94565b91506135ff83612d94565b92508261360f5761360e6135ba565b5b828204905092915050565b600061362582612d94565b915061363083612d94565b925082820390508181111561364857613647613549565b5b92915050565b600061365982612d94565b915061366483612d94565b925082820190508082111561367c5761367b613549565b5b92915050565b60006040820190506136976000830185612ebf565b6136a46020830184612ebf565b9392505050565b7f526566756e64207472616e73666572206661696c656400000000000000000000600082015250565b60006136e1601683612ced565b91506136ec826136ab565b602082019050919050565b60006020820190508181036000830152613710816136d4565b9050919050565b7f47616d65206973206e6f74206163746976650000000000000000000000000000600082015250565b600061374d601283612ced565b915061375882613717565b602082019050919050565b6000602082019050818103600083015261377c81613740565b9050919050565b7f496e73756666696369656e74207061796d656e74000000000000000000000000600082015250565b60006137b9601483612ced565b91506137c482613783565b602082019050919050565b600060208201905081810360008301526137e8816137ac565b9050919050565b60006137fa82612d94565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361382c5761382b613549565b5b600182019050919050565b600060e08201905061384c600083018a612e29565b6138596020830189612ebf565b6138666040830188612ebf565b6138736060830187612ebf565b6138806080830186612ebf565b61388d60a0830185612ebf565b61389a60c0830184612ebf565b98975050505050505050565b6000819050919050565b6000819050919050565b60006138d56138d06138cb846138a6565b6138b0565b612d94565b9050919050565b6138e5816138ba565b82525050565b600060408201905061390060008301856138dc565b61390d6020830184612ebf565b9392505050565b600067ffffffffffffffff82111561392f5761392e613103565b5b61393882612d28565b9050602081019050919050565b600061395861395384613914565b613163565b905082815260208101848484011115613974576139736130fe565b5b61397f848285612cfe565b509392505050565b600082601f83011261399c5761399b6130f9565b5b81516139ac848260208601613945565b91505092915050565b6000602082840312156139cb576139ca612c1d565b5b600082015167ffffffffffffffff8111156139e9576139e8612c22565b5b6139f584828501613987565b91505092915050565b7f52616b65207472616e73666572206661696c6564000000000000000000000000600082015250565b6000613a34601483612ced565b9150613a3f826139fe565b602082019050919050565b60006020820190508181036000830152613a6381613a27565b9050919050565b7f5072697a65207472616e73666572206661696c65640000000000000000000000600082015250565b6000613aa0601583612ced565b9150613aab82613a6a565b602082019050919050565b60006020820190508181036000830152613acf81613a93565b9050919050565b6000606082019050613aeb6000830186612e29565b613af86020830185612ebf565b613b056040830184612ebf565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000613b3482613b0d565b613b3e8185613b18565b9350613b4e818560208601612cfe565b613b5781612d28565b840191505092915050565b6000608082019050613b776000830187612e29565b613b846020830186612e29565b613b916040830185612ebf565b8181036060830152613ba38184613b29565b905095945050505050565b600081519050613bbd81612c53565b92915050565b600060208284031215613bd957613bd8612c1d565b5b6000613be784828501613bae565b91505092915050565b6000604082019050613c056000830185612e29565b613c126020830184612ebf565b939250505056fea26469706673582212204667e2194cc769067c9a30c74695d02dd13c86f628362bfa467706b5b3b4956264736f6c634300081b0033