Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aMoiM-0006Um-62 for pgsql-hackers@arkaria.postgresql.org; Sat, 23 Jan 2016 03:18:14 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aMoiL-0005aI-I7 for pgsql-hackers@arkaria.postgresql.org; Sat, 23 Jan 2016 03:18:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aMoiK-0005aA-VG for pgsql-hackers@postgresql.org; Sat, 23 Jan 2016 03:18:13 +0000 Received: from mahout.postgresql.org ([2001:4800:1501:1::227]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aMoiE-0005Jq-OK for pgsql-hackers@postgresql.org; Sat, 23 Jan 2016 03:18:10 +0000 Received: from coridan.postgresql.org ([2001:4800:1501:1::213]) by mahout.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aMoiC-00066t-Bk for pgsql-hackers@postgresql.org; Sat, 23 Jan 2016 03:18:04 +0000 Received: from localhost ([127.0.0.1] helo=coridan.postgresql.org) by coridan.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1aMoiA-00047F-E9 for pgsql-hackers@postgresql.org; Sat, 23 Jan 2016 03:18:02 +0000 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Re: pglogical - logical replication contrib module To: pgsql-hackers@postgresql.org From: Steve Singer Date: Sat, 23 Jan 2016 03:17:40 +0000 User-Agent: pgcommitfest X-cfsender: ssinger In-Reply-To: References: <5685BB86.5010901@2ndquadrant.com> Message-ID: <20160123031740.21436.54292.pgcf@coridan.postgresql.org> X-Pg-Spam-Score: -6.2 (------) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org VGhlIGZvbGxvd2luZyByZXZpZXcgaGFzIGJlZW4gcG9zdGVkIHRocm91Z2gg dGhlIGNvbW1pdGZlc3QgYXBwbGljYXRpb246Cm1ha2UgaW5zdGFsbGNoZWNr LXdvcmxkOiAgbm90IHRlc3RlZApJbXBsZW1lbnRzIGZlYXR1cmU6ICAgICAg IG5vdCB0ZXN0ZWQKU3BlYyBjb21wbGlhbnQ6ICAgICAgICAgICBub3QgdGVz dGVkCkRvY3VtZW50YXRpb246ICAgICAgICAgICAgbm90IHRlc3RlZAoKDQpU aGlzIHJlcGx5IHdpbGwgY292ZXJzIGEgMTAsMDAwIGZvb3QgbGV2ZWwgcmV2 aWV3IG9mIHRoZSBmZWF0dXJlIChzb21lIG9mIG15IG90aGVyIHJlcGxpZXMg dG8gdGhlIHRocmVhZCBjb3ZlciBzcGVjaWZpY3MgdGhhdCBjYW1lIHVwIGlu IHRlc3RpbmcgYW5kIGNvZGUgbGV2ZWwgcmV2aWV3IHdpbGwgY29tZSBsYXRl cikNCg0KMSkgRG8gd2Ugd2FudCBsb2dpY2FsIHJlcGxpY2F0aW9uIGluIGNv cmUvY29udHJpYg0KDQoxMCB5ZWFyIGFnbyBhIHBvcHVsYXIgZmVlbGluZyBp biB0aGUgcG9zdGdyZXNxbCBwcm9qZWN0IHdhcyB0aGF0IHJlcGxpY2F0aW9u IGRpZG4ndCBiZWxvbmcgaW4gY29yZSBiZWNhdXNlIHRoZXJlIHdlcmUgdG9v IG1hbnkgZGlmZmVyZW50IHN0eWxlcy4gIFBlb3BsZSB0aGVuIHdlbnQgb24g dG8gY29tcGxhaW4gdGhhdCBpdCB3ZXJlIHRvbyBtYW55IHJlcGxpY2F0aW9u IHByb2plY3RzIHRvIGNob29zZSBmcm9tIGFuZCB0aGF0IHRoZXkgd2VyZSBo YXJkIHRvIHVzZSBhbmQgaGFkIGxvdHMgb2YgY29ybmVyIGNhc2VzLiAgIFRo ZSBldm9sdXRpb24gb2YgV0FMIGJhc2VkIHJlcGxpY2F0aW9uIHNob3dlZCB1 cyBob3cgcG9wdWxhciBpbi1jb3JlIHJlcGxpY2F0aW9uIGlzLiAgVXNlcnMg bGlrZSBiZWluZyBhYmxlIHRvIHVzZSBpbi1jb3JlIGZlYXR1cmVzIGFuZCBv dXIgY29tbXVuaXR5IHByb2Nlc3MgdGVuZHMgdG8gcHJvZHVjZSBiZXR0ZXIg cXVhbGl0eSBpbi1jb3JlIHNvbHV0aW9ucyB0aGFuIGV4dGVybmFsIHByb2pl Y3RzLg0KDQpJIGFtIG9mIHRoZSBvcGluaW9uIHRoYXQgaWYgd2UgY2FuIGNv bWUgdXAgd2l0aCBhIHNvbHV0aW9uIHRoYXQgbWVldHMgc29tZSBjb21tb24g dXNlIGNhc2VzIHRoZW4gaXQgd291bGQgYmUgZ29vZCB0byBoYXZlIHRob3Nl IGZlYXR1cmVzIGluIGNvcmUvY29udHJpYi4gIEF0IHRoaXMgc3RhZ2UgSSBh bSBub3QgZ29pbmcgdG8gZ2V0IGludG8gYSBkaXNjdXNzaW9uIG9mIGEgY29u dHJpYiBleHRlbnNpb24gdmVyc3VzIGJ1aWx0IGluIGFzIG5vdCBhbiBleHRl bnNpb24uICAgSSBkb24ndCB0aGluayBhIHNpbmdsZSByZXBsaWNhdGlvbiBz b2x1dGlvbg0Kd2lsbCBldmVyIG1lZXQgYWxsIHVzZS1jYXNlcy4gICBJIGZl ZWwgdGhhdCB0aGUgZXh0ZW5zaWJsZSBpbmZyYXN0cnVjdHVyZSB3ZSBoYXZl IHNvIGZhciBidWlsdCBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBtZWFucyB0 aGF0IHBlb3BsZSB3aG8gd2FudCB0byBkZXZlbG9wIHNvbHV0aW9ucyBmb3Ig dXNlLWNhc2VzIG5vdCBjb3ZlcmVkIHdpbGwgYmUgaW4gYSBnb29kIHBvc2l0 aW9uLiAgVGhpcyBkb2Vzbid0IG1lYW4gd2UgY2FuJ3Qgb3Igc2hvdWxkbid0 IHRyeSB0byBjb3ZlciBzb21lIHVzZSBjYXNlcyBpbiBjb3JlLg0KDQoNCjIp IERvZXMgdGhpcyBwYXRjaCBwcm92aWRlIGEgc2V0IG9mIGxvZ2ljYWwgcmVw bGljYXRpb24gZmVhdHVyZXMgdGhhdCBtZWV0IG1hbnkgcG9wdWxhciB1c2Ut Y2FzZXMNCg0KQmVsb3cgSSB3aWxsIHJldmlldyBzb21lIHVzZS1jYXNlcyBh bmQgdHJ5IHRvIGFzc2VzcyBob3cgcGdsb2dpY2FsIG1lZXRzIHRoZW0uDQoN CiAqKiBTdHJlYW1pbmcgUG9zdGdyZXNxbCBVcGdyYWRlDQoNCnBnX3VwZ3Jh ZGUgaXMgZ3JlYXQgZm9yIG1hbnkgc2l0dWF0aW9ucyBidXQgc29tZXRpbWVz IHlvdSBkb24ndCB3YW50IGFuIGluIHBsYWNlIHVwZ3JhZGUgYnV0IHlvdSB3 YW50IGEgc3RyZWFtaW5nIHVwZ3JhZGUuICBQb3NzaWJseSBiZWNhdXNlIHlv dSBkb24ndCB3YW50IGFwcGxpY2F0aW9uIGRvd250aW1lIGJ1dCBpbnN0ZWFk IHlvdSBqdXN0IHdhbnQgdG8gcG9pbnQgeW91ciBhcHBsaWNhdGlvbnMgYXQg dGhlIHVwZ3JhZGVkIGRhdGFiYXNlIHNlcnZlciBpbiBhIGNvbnRyb2xsZWQg bWFubmVyLiAgIE90aGVydGltZXMgeW91DQptaWdodCB3YW50IGFuIG9wdGlv biBvZiB1cGdyYWRpbmcgdG8gYSBuZXdlciB2ZXJzaW9uIG9mIFBHIGJ1dCBt YWludGFpbiB0aGUgb3B0aW9uIG9mIGhhdmluZyB0byByb2xsYmFjayB0byB0 aGUgb2xkZXIgdmVyc2lvbiBpZiB0aGluZ3MgZ28gYmFkbHkuDQoNCkkgdGhp bmsgcGdsb2dpY2FsIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSB0aGlzIHVz ZSBjYXNlIHByZXR0eSB3ZWxsIChhc3N1bWluZyB0aGUgc291cmNlIHZlcnNp b24gb2YgUEcgaXMgYWN0dWFsbHkgbmV3IGVub3VnaCB0byBpbmNsdWRlIHBn bG9naWNhbCkuIA0KU3VwcG9ydCBmb3IgcmVwbGljYXRpbmcgc2VxdWVuY2Vz IHdvdWxkIG5lZWQgdG8gYmUgYWRkZWQgYmVmb3JlIHRoaXMgaXMgYXMgc21v b3RoIGJ1dCBvbmNlIHNlcXVlbmNlIHN1cHBvcnQgd2FzIGFkZGVkIEkgdGhp bmsgdGhpcyB3b3VsZCB3b3JrIHdlbGwuDQpJIGFsc28gZG9uJ3Qgc2VlIGFu eSByZWFzb24gd2h5IHlvdSBjb3VsZG4ndCByZXBsaWNhdGUgZnJvbSA5Ljcg LT4gOS42IHRob3VnaHQgc2luY2UgdGhlIHdpcmUgZm9ybWF0IGlzIGFic3Ry YWN0ZWQgZnJvbSB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uICBUaGlz IGlzIG9mIGNvdXJzZSBkZXBlbmRlbnQgbm90IHRoZSBhcHBsaWNhdGlvbiBu b3QgZG9pbmcgYW55dGhpbmcgdGhhdCBpcyBpbmhlcmVudGx5IGluLWNvbXBh dGlibGUgYmV0d2VlbiB0aGUgdHdvIHZlcnNpb25zIA0KDQoNCioqIFF1ZXJ5 IG9ubHkgcmVwbGljYXMgKHdpdGggdGVtcCB0YWJsZXMgb3IgYWRkaXRpb25h bCBpbmRleGVzKQ0KDQpTb21ldGltZXMgeW91IHdhbnQgYSByZXBsaWNhIGZv ciBsb25nIHJ1bm5pbmcgb3IgaGVhdnkgcXVlcmllcy4gIFJlcXVpcmVtZW50 cyBmb3IgdGVtcCB0YWJsZXMsIGFkZGl0aW9uYWwgaW5kZXhlcyBvciBtYXli ZSB0aGUgZWZmZWN0IG9uIHZhY3V1bSBtZWFucyB0aGF0IG91ciBleGlzdGlu ZyBXQUwgYmFzZWQgcmVwbGljYXMgYXJlIHVuc3VpdGFibGUuIA0KDQpJIHRo aW5rIHBnbG9naWNhbCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcyB1 c2UgY2FzZSBwcmV0dHkgd2VsbCB3aXRoIHRoZSBjYXZlYXQgYmVpbmcgdGhh dCB5b3VyIHJlcGxpY2EgaXMgYW4gYXN5bmNocm9ub3VzIHJlcGxpY2EgYW5k IHdpbGwgYWx3YXlzIGxhZw0KdGhlIG9yaWdpbiBieSBzb21lIGFtb3VudC4N Cg0KKiogUmVwbGljYXRpbmcgYSBzdWJzZXQgb2YgdGFibGVzIGludG8gYSBk aWZmZXJlbnQgZGF0YWJhc2UNCg0KU29tZXRpbWVzIHlvdSB3YW4gdG8gcmVw bGljYXRlIGEgaGFuZGZ1bCBvZiB0YWJsZXMgZnJvbSBvbmUgZGF0YWJhc2Ug dG8gYW5vdGhlciBkYXRhYmFzZS4gIE1heWJlIHRoZSBmaXJzdCBkYXRhYmFz ZSBpcyB0aGUgc3lzdGVtIG9mIHJlY29yZCBmb3IgdGhlIGRhdGEgYW5kIHRo ZSBzZWNvbmQgZGF0YWJhc2UgbmVlZHMgYW4gdXAgdG8gZGF0ZSBjb3B5IGZv ciBxdWVyeWluZy4NCg0KUGdsb2dpY2FsIHNob3VsZCBtZWV0IHRoaXMgdXNl IGNhc2UgcHJldHR5IHdlbGwsIGl0IGhhcyBmbGV4aWJsZSBzdXBwb3J0IGZv ciBzZWxlY3Rpbmcgd2hpY2ggdGFibGVzIGdldCByZXBsaWNhdGVkIGZyb20g d2hpY2ggc291cmNlLiAgUGdsb2dpY2FsIGRvZXNuJ3QgaGF2ZSBhbnkgZmFj aWxpdGllcyB0byByZW5hbWUgdGhlIHRhYmxlcyBiZXR3ZWVuIHRoZSBvcmln aW4gYW5kIHJlcGxpY2EgYnV0IHRoZXkgY291bGQgYmUgYWRkZWQgbGF0ZXIu DQoNCioqIFNoYXJkaW5nDQoNClN5c3RlbXMgdGhhdCBkbyBhcHBsaWNhdGlv biBsZXZlbCBzaGFyZGluZyAob3IgZXZlbiBzaGFyZGluZyB3aXRoIGEgZmR3 KSBvZnRlbiBoYXZlIG5vbi1zaGFyZGVkIHRhYmxlcyB0aGF0IG5lZWQgdG8g YmUgYXZhaWxhYmxlIG9uIGFsbCBzaGFyZHMgZm9yIHJlbGF0aW9uYWwgaW50 ZWdyaXR5IG9yIGpvaW5zLiAgIExvZ2ljYWwgcmVwbGljYXRpb24gaXMgb25l IHdheSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVwbGljYXRlZCBkYXRhIGdl dHMgdG8gYWxsIHRoZSBzaGFyZHMuICBTaGFyZGluZyBzeXN0ZW1zIGFsc28g c29tZXRpbWVzIHdhbnQNCnRvIHRha2UgdGhlIGRhdGEgZnJvbSBpbmRpdmlk dWFsIHNoYXJkcyBhbmQgcmVwbGljYXRlIGl0IHRvIGEgY29uc29saWRhdGlv biBzZXJ2ZXIgZm9yIHJlcG9ydGluZyBwdXJwb3Nlcy4NCg0KUGdsb2dpY2Fs IHNlZW1zIHRvIG1lZXQgdGhpcyB1c2UgY2FzZSwgSSBndWVzcyB5b3Ugd291 bGQgaGF2ZSBhIGRlc2lnbmF0ZWQgb3JpZ2luIGZvciB0aGUgc2hhcmVkIGRh dGEvZ2xvYmFsIGRhdGEgdGhhdCBhbGwgc2hhcmRzIHdvdWxkIHN1YnNjcmli ZSB0bw0Kd2l0aCBhIHNldCBjb250YWluaW5nIHRoZSBkZXNpZ25hdGVkIGRh dGEuICBGb3IgdGhlIGNvbnNvbGlkYXRpb24gdXNlIGNhc2UgeW91IHdvdWxk IGhhdmUgdGhlIGNvbnNvbGlkYXRpb24gc2VydmVyIHN1YnNjcmliZSB0byBh bGwgc2hhcmRzDQoNCkkgYW0gbGVzcyBjbGVhciBhYm91dCBob3cgc29tZW9u ZSB3b3VsZCB3YW50IERETCBjaGFuZ2VzIHRvIHdvcmsgZm9yIHRoZXNlIGNh c2VzLiAgVGhlIERETCBzdXBwb3J0IGluIHRoZSBwYXRjaCBpcyBwcmV0dHkg bGltaXRlZCBzbyBJIGFtIG5vdCBnb2luZyB0byB0aGluayBtdWNoIG5vdyBh Ym91dCBob3cgd2Ugd291bGQgd2FudCBEREwgdG8gd29yay4NCg0KDQoqKiBT Y2hlbWEgY2hhbmdlcyBpbnZvbHZpbmcgcmV3cml0aW5nIGJpZyB0YWJsZXMN Cg0KU29tZXRpbWVzIHlvdSBoYXZlIGEgRERMIGNoYW5nZSBvbiBhIGxhcmdl IHRhYmxlIHRoYXQgd2lsbCBpbnZvbHZlIGEgdGFibGUgcmV3cml0ZSBhbmQg dGhlIGJlc3Qgd2F5IG9mIGRlcGxveWluZyB0aGUgY2hhbmdlIGlzIHRvIG1h a2UgdGhlIERETCBjaGFuZ2UNCm9uIGEgcmVwbGljYXRlIHRoZW4gb25jZSBp dCBpcyBmaW5pc2hlZCBwcm9tb3RlIHRoZSByZXBsaWNhIHRvIHRoZSBvcmln aW4gaW4gc29tZSBjb250cm9sbGVkIGZhc2hpb24uICBUaGlzIGF2b2lkcyBo YXZpbmcgdG8gbG9jayB0aGUgdGFibGUgb24gdGhlIG9yaWdpbg0KZm9yIGhv dXJzLg0KDQpwZ2xvZ2ljYWwgc2VlbXMgdG8gYWxsb3cgbWlub3Igc2NoZW1h IGNoYW5nZXMgb24gdGhlIHJlcGxpY2Egc3VjaCBhcyBjaGFuZ2luZyBhIHR5 cGUgYnV0IGl0IGRvZXNuJ3Qgc2VlbSB0byBhbGxvdyBhIERPIElOU1RFQUQg dHJpZ2dlciBvbiB0aGUgcmVwbGljYS4gIEkgZG9uJ3QgdGhpbmsgcGdsb2dp Y2FsIGN1cnJlbnRseSBtZWV0cyB0aGlzIHVzZSBjYXNlIHBhcnRpY3VsYXJs eSB3ZWxsDQoNCg0KDQoqKiBGYWlsb3Zlcg0KDQpXQUwgcmVwbGljYXRpb24g aXMgcHJvYmFibHkgYSBiZXR0ZXIgY2hvaWNlIGZvciBzb21lb25lIGp1c3Qg bG9va2luZyBmb3IgZmFpbG92ZXIgc3VwcG9ydCBmcm9tIHJlcGxpY2F0aW9u LiAgU29tZW9uZSB3aG8gaXMgbG9va2luZyBhdCBwZ2xvZ2ljYWwgZm9yIGZh aWxvdmVyIHJlbGF0ZWQgdXNlIGNhc2VzIHByb2JhYmx5IGhhcyBvbmUgb3Ig bW9yZSBvZiB0aGUgb3RoZXIgdXNlcyBjYXNlcyBJIG1lbnRpb25lZCAgYW5k IHdhbnRzIGEgbG9naWNhbCBub2RlIHRvDQp0YWtlIG92ZXIgZm9yIGEgZmFp bGVkIG9yaWdpbi4gICBJZiBhIG5vZGUgZmFpbHMgeW91IGNhbiB0YWtlIHNv bWUgb2YgdGhlIHJlbWFpbmluZyBzdWJzY3JpYmVycyBhbmQgaGF2ZSB0aGVt IHJlc3Vic2NyaWJlIHRvIG9uZSBvZiB0aGUgcmVtYWluaW5nIG5vZGVzIGJ1 dCB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBhKSBGaWd1cmluZyBvdXQgd2hp Y2ggb2YgdGhlIHJlbWFpbmluZyBub2RlcyBpcyBtb3N0IGFoZWFkIGIpICBM ZXR0aW5nIHRoZSBzdWJzY3JpYmVycyBmaWd1cmUgb3V0IHdoaWNoIHVwZGF0 ZXMgZnJvbSB0aGUgb2xkIG9yaWdpbiB0aGF0IGFyZSBtaXNzaW5nIGFuZCBn ZXR0aW5nIHRoZW0gZnJvbSBhIHN1cnZpdmluZyBub2RlICh0aGV5IGNhbiB0 cnVuY2F0ZSBhbmQgcmUtY29weSB0aGUgZGF0YSBidXQgdGhhdCBtaWdodCBi ZSB2ZXJ5IGV4cGVuc2l2ZSkNCg0KSSBhbSBub3Qgc3VyZSB3aGF0IHdvdWxk IGJlIGludm9sdmVkIGluIHRha2luZyBhIHN0cmVhbWluZyBXQUwgcmVwbGlj YSBhbmQgaGF2ZSBpdCBzdGFuZCBpdCByZXBsYWNlIHRoZSBmYWlsZWQgbm9k ZS4NCg0KTGFjayBvZiByZXBsaWNhdGluZyBzZXF1ZW5jZXMgd291bGQgYWxz byBtYWtlIGZhaWxpbmcgb3ZlciB0byBhIHBnbG9naWNhbCByZXBsaWNhIGF3 a3dhcmQuDQoNCioqIEdlb2dyYXBoaWNhbGx5ICBkaXN0cmlidXRlZCBhcHBs aWNhdGlvbnMNCg0KU29tZXRpbWVzIHBlb3BsZSBoYXZlIGRhdGFiYXNlIGlu IGRpZmZlcmVudCBnZW9ncmFwaGljYWwgbG9jYXRpb25zIGFuZCB0aGV5IHdh bnQgdG8gcGVyZm9ybSBxdWVyaWVzIGFuZCB3cml0ZXMgbG9jYWxseSBidXQg cmVwbGljYXRlIGFsbCB0aGUgZGF0YSB0byBhbGwgdGhlIG90aGVyIGxvY2F0 aW9ucy4gICBUaGlzIGlzIGEgbXVsdGktbWFzdGVyIGV2ZW50dWFsbHkgY29u c2lzdGVudCB1c2UgY2FzZS4NCg0KVGhlIGxhY2sgb2Ygc2VxdWVuY2Ugc3Vw cG9ydCB3b3VsZCBiZSBhbiBpc3N1ZSBmb3IgdGhlc2UgdXNlIGNhc2VzLiAg SSB0aGluayB5b3UgY291bGQgYWxzbyBvbmx5IGNvbmZpZ3VyZSB0aGUgY2x1 c3RlciBpbiBhIGZ1bGx5IGNvbm5lY3RlZCBncmlkICh3aXRoIGZvcndhcmRf b3JpZ2lucz0nbm9uZScpLiAgQSBsb3Qgb2YgZGVwbG95bWVudHMgeW91IHdv dWxkIHdhbnQgc29tZSBhbW91bnQgb2YgY2FzY2FkaW5nIGFuZCBzdHJ1Y3R1 cmUgd2hpY2ggaXNuJ3QgeWV0IHN1cHBvcnRlZC4gICBJIGFsc28gc3VzcGVj dCB0aGF0IG1hbmFnaW5nIGEgZ3JpZCBjbHVzdGVyIHdpdGggbW9yZSB0aGFu IGEgaGFuZGZ1bCBvZiBub2RlcyB3aWxsIGJlIHVud2llbGR5IChwYXJ0aWN1 bGFybHkgY29tcGFyZWQgdG8gc29tZSBvZiB0aGUgZXZlbnR1YWwgY29uc2lz dGVudCBub3NxbCBhbHRlcm5hdGl2ZXMpDQoNClRoZSBmZWF0dXJlcyBCRFIg aGFzIHRoYXQgd2VyZSByZW1vdmVkIGZvciBwZ2xvZ2ljYWwgYXJlIHByb2Jh Ymx5IHJlYWxseSB1c2VmdWwgZm9yIHRoaXMgdXNlLWNhc2UgKHdoaWNoIEkg dGhpbmsgd2FzIHRoZSBvcmlnaW5hbCBCRFIgdXNlLWNhc2UpDQoNCioqIFNj YWxpbmcgYWNyb3NzIG11bHRpcGxlIG1hY2hpbmVzDQoNClNvbWV0aW1lcyBw ZW9wbGUgYXNrIGZvciByZXBsaWNhdGlvbiBzeXN0ZW1zIHRoYXQgbGV0IHRo ZW0gc3VwcG9ydCAgbW9yZSBsb2FkIHRoYW4gYSBzaW5nbGUgZGF0YWJhc2Ug c2VydmVyIHN1cHBvcnRzIGJ1dCB3aXRoIGNvbnNpc3RlbmN5Lg0KT3RoZXIg dXNlLWNhc2UgYXBwbGllcyBpZiB5b3Ugd2FudCAnZXZlbnR1YWxseSBjb25z aXN0ZW50JyAgdGhpcyB1c2UgY2FzZSBpcyBmb3Igc2l0dWF0aW9ucyB3aGVy ZSB5b3Ugd2FudCBzb21ldGhpbmcgb3RoZXIgdGhhbiBldmVudHVhbCBjb25z aXN0ZW50Lg0KDQpJIGRvbid0IHRoaW5rIHBnbG9naWNhbCBpcyBpbnRlbmRl ZCB0byBhZGRyZXNzIHRoaXMuDQoNCg0KDQozKSBEbyB3ZSBsaWtlIHRoZSBk ZXNpZ24gb2YgcGdsb2dpY2FsDQoNCkkgbGlrZSB0aGUgZmFjdCB0aGF0IGJh Y2tncm91bmQgd29ya2VycyBhcmUgdXNlZCBpbnN0ZWFkIG9mIGV4dGVybmFs IGRhZW1vbiBwcm9jZXNzZXMNCkkgbGlrZSB0aGUgZmFjdCB0aGF0IHlvdSBj YW4gY29uZmlndXJlIGFsbW9zdCBldmVyeXRoaW5nIHRocm91Z2ggU1FMDQpJ IGxpa2UgdGhhdCB0aGUgb3V0cHV0IHBsdWdpbiBpcyBzZXBhcmF0ZSBiZWNh dXNlIHRoaXMgcGF0Y2ggaXMgYmlnIGVub3VnaCBhcyBpdCBpcyBhbmQgSSBj YW4gc2VlIHVzZXMgZm9yIGl0IG90aGVyIHRoYW4gcGdsb2dpY2FsLg0KDQpU aGUgY29yZSBhYnN0cmFjdGlvbnMgYXJlDQogKiBOb2Rlcy0sIGV2ZXJ5IGRh dGFiYXNlIGluIHRoZSBwZ2xvZ2ljYWwgY2x1c3RlciBpcyBhIG5vZGUNCiAq IFNldHMgLSBBIGNvbGxlY3Rpb24gb2YgdGFibGVzIHRoYXQgYmVoYXZlIHNp bWlsYXJseQ0KICogU3Vic2NyaXB0aW9ucyAtIEEgbGluayBiZXR3ZWVuIGEg cHJvdmlkZXIgYW5kIGEgcmVwbGljYS4gVGhlcmUgY2FuIG9ubHkgYmUgb25l IHN1YnNjcmlwdGlvbiBiZXR3ZWVuIGEgcHJvdmlkZXIgYW5kIHJlcGxpY2EN Cg0KTWV0YWRhdGEgaXMgbm90IHRyYW5zZmVycmVkIGJldHdlZW4gbm9kZXMu ICBXaGF0IEkgbWVhbiBieSB0aGlzIGlzIHRoYXQgbm9kZXMgZG9uJ3QgaGF2 ZSBhIGdsb2JhbCB2aWV3IG9mIHRoZSBjbHVzdGVyIHRoZXkga25vdyBhYm91 dCB0aGVpciBvd24gc3Vic2NyaXB0aW9ucyBidXQgbm90aGluZyBlbHNlLiAg VGhpcyBpcyBkaWZmZXJlbnQgdGhhbiBhIHN5c3RlbSBsaWtlIHNsb255IHdo ZXJlIHNsX25vZGUgYW5kIHNsX3N1YnNjcmlwdGlvbiBjb250YWluIGEgZ2xv YmFsIHZpZXcgb2YgeW91ciBjbHVzdGVyIHN0YXRlLiAgTm90IHNlbmRpbmcg bWV0YWRhdGEgdG8gYWxsIG5vZGVzIGluIHRoZSBjbHVzdGVyIHNpbXBsaWZp ZXMgYSBidW5jaCBvZiB0aGluZ3MgKHlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5 IGFib3V0IHNlbmRpbmcgbWV0YWRhdGEgYXJvdW5kIGFuZCBpZiBhIGdpdmVu IHBpZWNlIG9mIG1ldGFkYXRhIGlzIHN0YWxlKSBidXQgdGhlIGRvd25zaWRl IGlzIHRoYXQgSSB0aGluayB0aGUgdG9vbGluZyB0byBwZXJmb3JtIGEgbG90 IG9mIGNsdXN0ZXIgcmVjb25maWd1cmUgb3BlcmF0aW9ucyB3aWxsIG5lZWQg dG8gYmUgYSBsb3Qgc21hcnRlci4NCg0KUGV0ciwgYW5kIENyYWlnIGhhdmUg eW91IHRob3VnaHQgYWJvdXQgaG93IHlvdSBtaWdodCBzdXBwb3J0IGdldHRp bmcgdGhlIGNsdXN0ZXIgYmFjayBpbnRvIGEgc2FuZSBzdGF0ZSBhZnRlciBh IG5vZGUgZmFpbHMgd2l0aCBtaW5pbWFsIHBhaW4uDQpBIGxvdCBvZiB0aGUg cmVhc29uIHdoeSBzbG9ueSBuZWVkcyBhbGwgdGhpcyBtZXRhZGF0YSBpcyB0 byBzdXBwb3J0IHRoYXQga2luZCBvZiB0aGluZy4gSSBkb24ndCB0aGluayB3 ZSBuZWVkIHRoaXMgZm9yIHRoZSBmaXJzdCB2ZXJzaW9uIGJ1dCBpdCB3b3Vs ZCBiZSBuaWNlIHRvIGtub3cgdGhhdCB0aGUgZGVzaWduIGNvdWxkIGFjY29t bW9kYXRlIHN1Y2ggYSB0aGluZy4NCg0KDQo0KSBEbyB3ZSBsaWtlIHRoZSBz eW50YXgNCg0KSSB0aGluayB0aGUgYmlnIGRlYmF0ZSBhYm91dCBzeW50YXgg aXMgZG8gd2Ugd2FudCBmdW5jdGlvbnMgb3IgcHVyZSBTUUwgKGllIENSRUFU RSBTVUJTQ1JJUFRJT04gZGVmYXVsdDEgcHJvdmlkZXJfZHNuPS4uLikuIElm IHdlIHdhbnQgdGhpcyBhcyBhbiBleHRlbnNpb24NCnRoZW4gaXQgbmVlZHMg dG8gYmUgZnVuY3Rpb25zLiAgSSBzdXBwb3J0IHRoaXMgZGVjaXNpb24gSSB0 aGluayB0aGUgYmVuZWZpdHMgb2Yga2VlcGluZyBwZ2xvZ2ljYWwgYXMgYW4g ZXh0ZW5zaW9uIGlzIHRoZSByaWdodCB0cmFkZW9mZi4gIEluIGEgZmV3IHJl bGVhc2VzIHdlIGNhbiBhbHdheXMgYWRkIFNRTCBzeW50YXggaWYgd2Ugd2Fu dCBpdCB0byBubyBsb25nZXIgYmUgYW4gZXh0ZW5zaW9uDQoNCklmIEkgaGF2 ZSBhbnkgY29tbWVudHMgaGF2ZSBvbiB0aGUgbmFtZXMgb3IgYXJndW1lbnRz IG9mIGluZGl2aWR1YWwgZnVuY3Rpb25zIEkgd2lsbCBzZW5kIHRoZW0gbGF0 ZXIuDQoNCg0KNSkgSXMgdGhlIG1haW50ZW5hbmNlIGJ1cmRlbiBvZiB0aGlz IHBhdGNoIHRvbyBoaWdoDQoNClRoZSBjb250cmliIG1vZHVsZSBpcyBiaWcs IHNpZ25pZmljYW50bHkgYmlnZ2VyIHRoYW4gbW9zdCAoYWxsPykgb2YgdGhl IG90aGVyIGNvbnRyaWIgbW9kdWxlcyBhbmQgdGhhdCBkb2Vzbid0IGluY2x1 ZGUgdGhlIG91dHB1dCBwbHVnaW4uICBJIHNlZSBhIGxvdCBvZiBwb3RlbnRp YWwgdXNlLWNhc2VzIHRoYXQgSSB0aGluayBwZ2xvZ2ljYWwgY2FuIChvciB3 aWxsIGV2ZW50dWFsbHkpIGJlIGFibGUgdG8gaGFuZGxlIGFuZCBJIHRoaW5r IHRoYXQganVzdGlmaWVzIHRoZSBtYWludGVuYW5jZSBidXJkZW4uICBJZiBv dGhlcnMgZGlzYWdyZWUgdGhleSBzaG91bGQgc3BlYWsgdXAuDQoNCkkgYW0g Y29uY2VybmVkIGFib3V0IHRlc3RpbmcsIEkgZG9uJ3QgdGhpbmsgdGhlIC5z cWwgYmFzZWQgcmVncmVzc2lvbiB0ZXN0cyBhcmUgZ29pbmcgdG8gYWRlcXVh dGVseSB0ZXN0IGEgcmVwbGljYXRpb24gc3lzdGVtIHRoYXQgc3VwcG9ydHMg Y29uY3VycmVudCBhY3Rpdml0eSBvbiBkaWZmZXJlbnQgZGF0YWJhc2VzL3Nl cnZlcnMuICBJIHJlbWVtYmVyIGhlYXJpbmcgdGFsayBhYm91dCBhICBweXRo b24gYmFzZWQgdGVzdCBzdWl0ZSB0aGF0IHdhcyByZWplY3RlZCBpbiBhbm90 aGVyIHRocmVhZC4gIEhhdmluZyBwZXJsIHRlc3RzIHRoYXQgdXNlIC1EQkkg aGFzIGFsc28gYmVlbiByZWplY3RlZC4NCg0KVGhlIG90aGVyIGRheSBUb20g bWFkZSB0aGlzIGNvbW1lbnQgYXMgcGFydCBvZiB0aGUgJ1JlbGVhc2luZyBp biBTZXB0ZW1iZXInIHRocmVhZDoNCg0KLS0tDQpJIGRvIG5vdCB0aGluayB3 ZSBzaG91bGQgbmVjZXNzYXJpbHkgdHJ5IHRvIGluY2x1ZGUgZXZlcnkgdGVz dGluZyB0b29sDQppbiB0aGUgY29yZSBkaXN0cmlidXRpb24uICBXaGF0IGlz IGltcG9ydGFudCBpcyB0aGF0IHRoZXkgYmUgcmVhZGlseQ0KYXZhaWxhYmxl OiBlYXN5IHRvIGZpbmQsIGVhc3kgdG8gdXNlLCBkb2N1bWVudGVkLCBwb3J0 YWJsZS4NCi0tLS0tDQoNClRoZSBzdGFuZGFyZCBtYWtlIGNvbnRyaWIgY2hl Y2sgdGVzdHMgbmVlZCB0byBkbyBzb21lIHRlc3Rpbmcgb2YgcGdsb2dpY2Fs IGJ1dCBJIHRoaW5rIGl0IHdpbGwgcmVxdWlyZSB0ZXN0aW5nIG11Y2ggbW9y ZSB0aG9yb3VnaCB0aGFuIHdoYXQgd2UgY2FuIGdldCB3aXRoIGluIGNvcmUg dGVzdCB0b29saW5nLiAgSSB0aGluayB0aGlzIGlzIGEgZ29vZCBjYXNlIHRv IGxvb2sgYXQgdGVzdCB0b29saW5nIHRoYXQgZG9lc24ndCBsaXZlIGluIGNv cmUuDQoNCk92ZXJhbGwgSSBhbSB2ZXJ5IGltcHJlc3NlZCB3aXRoIHBnbG9n aWNhbCBhbmQgc2VlIGEgbG90IG9mIHBvdGVudGlhbAotLSAKU2VudCB2aWEg cGdzcWwtaGFja2VycyBtYWlsaW5nIGxpc3QgKHBnc3FsLWhhY2tlcnNAcG9z dGdyZXNxbC5vcmcpClRvIG1ha2UgY2hhbmdlcyB0byB5b3VyIHN1YnNjcmlw dGlvbjoKaHR0cDovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tYWlscHJlZi9wZ3Nx bC1oYWNrZXJzCg==