<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>76232</bug_id>
          
          <creation_ts>2012-01-12 17:17:22 -0800</creation_ts>
          <short_desc>Clean up putDirect</short_desc>
          <delta_ts>2012-01-30 10:29:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535321</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-12 17:17:22 -0800</bug_when>
    <thetext>putDirect has ambiguous semantics, clean these up a bit.

putDirect generally behaves a bit like a fast defineOwnProperty, but one that always creates the property, with no checking to validate the put it permitted.

It also encompasses two slightly different behaviors.
(1) a fast form of put for JSActivation, which doesn&apos;t have to handle searching the prototype chain, getter/setter properties, or the magic __proto__ value.  Break this out as a new method, &apos;putOwnDataProperty&apos;.
(2) the version of putDirect on JSValue will also check for overwriting ReadOnly values, in strict mode.  This is, however, not so smart on a few level, since it is only called from op_put_by_id with direct set, which is only used with an object as the base, and is only used to put new properties onto objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535325</commentid>
    <comment_count>1</comment_count>
      <attachid>122344</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-12 17:19:58 -0800</bug_when>
    <thetext>Created attachment 122344
Part 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535344</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-12 17:41:47 -0800</bug_when>
    <thetext>Landed pt 1 in r104886.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535385</commentid>
    <comment_count>3</comment_count>
      <attachid>122360</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-12 19:23:23 -0800</bug_when>
    <thetext>Created attachment 122360
Part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535388</commentid>
    <comment_count>4</comment_count>
      <attachid>122360</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-01-12 19:30:24 -0800</bug_when>
    <thetext>Comment on attachment 122360
Part 2

View in context: https://bugs.webkit.org/attachment.cgi?id=122360&amp;action=review

&gt; Source/JavaScriptCore/runtime/JSObject.h:81
&gt; +            PutModePut,
&gt; +            DefineOwnProperty,

I refuse the inconsistency. DefineOwnProperty should be, PutModeDefineOwnProperty!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535451</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-12 22:46:11 -0800</bug_when>
    <thetext>Part 2 landed in r104899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544926</commentid>
    <comment_count>6</comment_count>
      <attachid>124505</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-30 01:07:26 -0800</bug_when>
    <thetext>Created attachment 124505
Part 3 - merge op_put_getter &amp; op_put_setter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545195</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-30 10:29:12 -0800</bug_when>
    <thetext>Fixed in r106255</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122344</attachid>
            <date>2012-01-12 17:19:58 -0800</date>
            <delta_ts>2012-01-12 17:29:47 -0800</delta_ts>
            <desc>Part 1</desc>
            <filename>76232.patch</filename>
            <type>text/plain</type>
            <size>14423</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0ODgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDEyLTAxLTEyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBDbGVhbiB1cCBwdXREaXJlY3QgKHBhcnQgMSkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjMyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHV0RGlyZWN0IGhhcyBhbWJpZ3VvdXMgc2Vt
YW50aWNzLCBjbGVhbiB0aGVzZSB1cCBhIGJpdC4KKworICAgICAgICBwdXREaXJlY3QgZ2VuZXJh
bGx5IGJlaGF2ZXMgYSBiaXQgbGlrZSBhIGZhc3QgZGVmaW5lT3duUHJvcGVydHksIGJ1dCBvbmUg
dGhhdAorICAgICAgICBhbHdheXMgY3JlYXRlcyB0aGUgcHJvcGVydHksIHdpdGggbm8gY2hlY2tp
bmcgdG8gdmFsaWRhdGUgdGhlIHB1dCBpdCBwZXJtaXR0ZWQuCisKKyAgICAgICAgSXQgYWxzbyBl
bmNvbXBhc3NlcyB0d28gc2xpZ2h0bHkgZGlmZmVyZW50IGJlaGF2aW9ycy4KKyAgICAgICAgKDEp
IGEgZmFzdCBmb3JtIG9mIHB1dCBmb3IgSlNBY3RpdmF0aW9uLCB3aGljaCBkb2Vzbid0IGhhdmUg
dG8gaGFuZGxlIHNlYXJjaGluZworICAgICAgICAgICAgdGhlIHByb3RvdHlwZSBjaGFpbiwgZ2V0
dGVyL3NldHRlciBwcm9wZXJ0aWVzLCBvciB0aGUgbWFnaWMgX19wcm90b19fIHZhbHVlLgorICAg
ICAgICAgICAgQnJlYWsgdGhpcyBvdXQgYXMgYSBuZXcgbWV0aG9kLCAncHV0T3duRGF0YVByb3Bl
cnR5Jy4KKyAgICAgICAgKDIpIHRoZSB2ZXJzaW9uIG9mIHB1dERpcmVjdCBvbiBKU1ZhbHVlIHdp
bGwgYWxzbyBjaGVjayBmb3Igb3ZlcndyaXRpbmcgUmVhZE9ubHkKKyAgICAgICAgICAgIHZhbHVl
cywgaW4gc3RyaWN0IG1vZGUuIFRoaXMgaXMsIGhvd2V2ZXIsIG5vdCBzbyBzbWFydCBvbiBhIGZl
dyBsZXZlbCwgc2luY2UKKyAgICAgICAgICAgIGl0IGlzIG9ubHkgY2FsbGVkIGZyb20gb3BfcHV0
X2J5X2lkIHdpdGggZGlyZWN0IHNldCwgd2hpY2ggaXMgb25seSB1c2VkIHdpdGgKKyAgICAgICAg
ICAgIGFuIG9iamVjdCBhcyB0aGUgYmFzZSwgYW5kIGlzIG9ubHkgdXNlZCB0byBwdXQgbmV3IHBy
b3BlcnRpZXMgb250byBvYmplY3RzLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3Bw
OgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnB1dCk6Cisg
ICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNWYWx1ZS5oOgorCiAyMDEyLTAxLTEyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJh
Y2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYxNDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA0Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDEzICs0MzEsMTUg
QEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogdm9pZCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQ2VsbCogYmFzZSwgSWRlbnRpZmllciogcHJvcGVy
dHlOYW1lKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRydWUpOwotICAgIEpTVmFsdWUo
YmFzZSkucHV0RGlyZWN0KGV4ZWMsICpwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpLCBzbG90KTsKKyAgICBBU1NFUlQoYmFzZS0+aXNPYmplY3QoKSk7CisgICAgYXNP
YmplY3QoYmFzZSktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksICpwcm9wZXJ0eU5hbWUs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KIAogdm9pZCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQ2VsbCogYmFzZSwgSWRlbnRpZmllciogcHJv
cGVydHlOYW1lKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZhbHNlKTsKLSAgICBKU1Zh
bHVlKGJhc2UpLnB1dERpcmVjdChleGVjLCAqcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKSwgc2xvdCk7CisgICAgQVNTRVJUKGJhc2UtPmlzT2JqZWN0KCkpOworICAg
IGFzT2JqZWN0KGJhc2UpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCAqcHJvcGVydHlO
YW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CiAKIFZfRlVOQ1RJ
T05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKQ0kob3BlcmF0aW9uUHV0QnlJZFN0cmlj
dE9wdGltaXplKTsKQEAgLTQ3NiwxNCArNDc4LDE0IEBAIFZfRlVOQ1RJT05fV1JBUFBFUl9XSVRI
X1JFVFVSTl9BRERSRVNTX0UKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0U3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0
eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFs
dWUoYmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodHJ1ZSk7CiAgICAgCi0gICAgYmFz
ZVZhbHVlLnB1dERpcmVjdChleGVjLCAqcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
QVNTRVJUKGJhc2UtPmlzT2JqZWN0KCkpOworICAgIGFzT2JqZWN0KGJhc2UpLT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCAqcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAg
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0
dWJJbmZvKHJldHVybkFkZHJlc3MpOwogICAgIGlmIChzdHViSW5mby5zZWVuKQotICAgICAgICBk
ZmdSZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsICpwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0
dWJJbmZvLCBEaXJlY3QpOworICAgICAgICBkZmdSZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlLCAq
cHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsKICAgICBlbHNlCiAgICAgICAg
IHN0dWJJbmZvLnNlZW4gPSB0cnVlOwogfQpAQCAtNDkyLDE0ICs0OTQsMTQgQEAgVl9GVU5DVElP
Tl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRQogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElk
ZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQog
ewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZShiYXNlKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmYWxz
ZSk7CiAgICAgCi0gICAgYmFzZVZhbHVlLnB1dERpcmVjdChleGVjLCAqcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgQVNTRVJUKGJhc2UtPmlzT2JqZWN0KCkpOworICAgIGFzT2JqZWN0
KGJhc2UpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCAqcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7CiAgICAgCiAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+
Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwogICAgIGlmIChzdHViSW5m
by5zZWVuKQotICAgICAgICBkZmdSZXBhdGNoUHV0QnlJRChleGVjLCBiYXNlVmFsdWUsICpwcm9w
ZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBEaXJlY3QpOworICAgICAgICBkZmdSZXBhdGNoUHV0
QnlJRChleGVjLCBiYXNlLCAqcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgRGlyZWN0KTsK
ICAgICBlbHNlCiAgICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAxMDQ3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzA4LDEwICszMzA4LDEyIEBAIHNraXBfaWRf
Y3VzdG9tX3NlbGY6CiAgICAgICAgIGludCBkaXJlY3QgPSB2UENbOF0udS5vcGVyYW5kOwogCiAg
ICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUoKTsK
KyAgICAgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICAgICAgSlNPYmplY3Qq
IGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgICAgICBJZGVudGlmaWVyJiBp
ZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CiAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBpZiAoZGly
ZWN0KQotICAgICAgICAgICAgYmFzZVZhbHVlLnB1dERpcmVjdChjYWxsRnJhbWUsIGlkZW50LCBj
YWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgICAgICAgICBiYXNlT2Jq
ZWN0LT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGlkZW50LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpz
VmFsdWUoKSwgc2xvdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJhc2VWYWx1ZS5wdXQo
Y2FsbEZyYW1lLCBpZGVudCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCksIHNsb3QpOwog
ICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CkBAIC0zNDI2LDEwICszNDI4LDEyIEBAIHNr
aXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIGludCBkaXJlY3QgPSB2UENbOF0udS5vcGVyYW5k
OwogCiAgICAgICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFs
dWUoKTsKKyAgICAgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICAgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgICAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CiAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBp
ZiAoZGlyZWN0KQotICAgICAgICAgICAgYmFzZVZhbHVlLnB1dERpcmVjdChjYWxsRnJhbWUsIGlk
ZW50LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgICAgICAgICBi
YXNlT2JqZWN0LT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGlkZW50LCBjYWxsRnJhbWUtPnIodmFs
dWUpLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJhc2VWYWx1
ZS5wdXQoY2FsbEZyYW1lLCBpZGVudCwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCksIHNs
b3QpOwogICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA0Nzc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzODIsNyArMTM4
Miw5IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF8KICAgICBTVFVC
X0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgCiAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3Qoc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7
Ci0gICAgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5wdXREaXJlY3Qoc3RhY2tGcmFtZS5j
YWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCksIHN0YWNrRnJhbWUuYXJn
c1syXS5qc1ZhbHVlKCksIHNsb3QpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFt
ZS5hcmdzWzBdLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwor
ICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpLCBzdGFja0ZyYW1l
LmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VO
RCgpOwogfQogCkBAIC0xNDI3LDcgKzE0MjksOSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcF9wdXRfYnlfaWRfCiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3Nb
MV0uaWRlbnRpZmllcigpOwogICAgIAogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKLSAgICBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpLnB1dERpcmVjdChjYWxsRnJhbWUsIGlkZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0u
anNWYWx1ZSgpLCBzbG90KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICBh
c09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGlk
ZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKICAgICAKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSAmY29kZUJsb2NrLT5nZXRTdHViSW5mbyhT
VFVCX1JFVFVSTl9BRERSRVNTKTsKQEAgLTE0NjAsNyArMTQ2NCw5IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF8KICAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNr
RnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCk7CiAgICAgCiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwotICAgIHN0YWNrRnJh
bWUuYXJnc1swXS5qc1ZhbHVlKCkucHV0RGlyZWN0KGNhbGxGcmFtZSwgaWRlbnQsIHN0YWNrRnJh
bWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3Rh
Y2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpOworICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgaWRlbnQsIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAg
IAogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDEwNDc3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlCiAgICAgLy8gcHJvcGVydGllcyBhcmUgbm9uLXN0YW5kYXJkIGV4dGVu
c2lvbnMgdGhhdCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZG8gbm90CiAgICAgLy8gZXhwb3NlIGlu
IHRoZSBhY3RpdmF0aW9uIG9iamVjdC4KICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSk7Ci0gICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1ZSwgc2xvdCk7CisgICAgdGhp
c09iamVjdC0+cHV0T3duRGF0YVByb3BlcnR5KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlIHRoaXMgZnVuY3Rpb24gaG9u
b3IgUmVhZE9ubHkgKGNvbnN0KSBhbmQgRG9udEVudW0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxMDQ3ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA0LDggKzIwNCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2UKICAgICAgICAgaWYgKCFsb2NhdGlvbikgewogICAgICAgICAgICAgSlNPYmplY3QqIHByb3Rv
dHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCB0aGlzT2JqZWN0LCBEb250RW51bSk7Ci0gICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdDsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtLCBmYWxzZSwgc2xvdCk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7CiAgICAgICAgICAgICBsb2NhdGlv
biA9IHRoaXNPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDQ3ODQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsNiArMTA3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwog
CisgICAgICAgIC8vIHB1dFdpdGhBdHRyaWJ1dGVzIGlzIGVmZmVjdGl2ZWx5IGFuIHVuY2hlY2tl
ZCB2ZXNpb24gb2YgJ2RlZmluZU93blByb3BlcnR5JzoKKyAgICAgICAgLy8gIC0gdGhlIHByb3Rv
dHlwZSBjaGFpbiBpcyBub3QgY29uc3VsdGVkCisgICAgICAgIC8vICAtIGFjY2Vzc29ycyBhcmUg
bm90IGNhbGxlZC4KKyAgICAgICAgLy8gIC0gYXR0cmlidXRlcyB3aWxsIGJlIHJlc3BlY3RlZCAo
YWZ0ZXIgdGhlIGNhbGwgdGhlIHByb3BlcnR5IHdpbGwgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gYXR0
cmlidXRlcykKICAgICAgICAgc3RhdGljIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xv
YmFsRGF0YSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAKQEAgLTE3MCw3ICsxNzQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5k
aWRUcmFuc2l0aW9uKCk7IH0KICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgfQog
Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgLy8gcHV0T3duRGF0YVByb3BlcnR5IGhhcyAn
cHV0JyBsaWtlIHNlbWFudGljcywgaG93ZXZlciB0aGlzIG1ldGhvZDoKKyAgICAgICAgLy8gIC0g
YXNzdW1lcyB0aGUgb2JqZWN0IGNvbnRhaW5zIG5vIG93biBnZXR0ZXIvc2V0dGVyIHByb3BlcnRp
ZXMuCisgICAgICAgIC8vICAtIHByb3ZpZGVzIG5vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJv
dG9fXworICAgICAgICAvLyAgLSBkb2VzIG5vdCB3YWxrIHRoZSBwcm90b3R5cGUgY2hhaW4gKHRv
IGNoZWNrIGZvciBhY2Nlc3NvcnMgb3Igbm9uLXdyaXRhYmxlIHByb3BlcnRpZXMpLgorICAgICAg
ICAvLyBUaGlzIGlzIHVzZWQgYnkgSlNBY3RpdmF0aW9uLgorICAgICAgICBib29sIHB1dE93bkRh
dGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworCiAgICAgICAgIHZvaWQgcHV0RGlyZWN0KEpT
R2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5z
aWduZWQgYXR0ciA9IDApOwogICAgICAgICBib29sIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwogCkBAIC03MzgsMTIgKzc0OCwxMyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tS
ZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoraW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1
dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKKyAgICBBU1NFUlQoIXN0cnVj
dHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwogCi0gICAgcmV0dXJuIHB1dERp
cmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMs
IGNoZWNrUmVhZE9ubHksIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICByZXR1cm4g
cHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1
ZSwgc2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpAQCAtODQw
LDEzICs4NTEsNiBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRlKiBleGVjCiAg
ICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLWlubGluZSB2b2lkIEpTVmFsdWU6OnB1dERpcmVjdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIEFTU0VSVChpc0NlbGwoKSAmJiBp
c09iamVjdCgpKTsKLSAgICBpZiAoIWFzT2JqZWN0KGFzQ2VsbCgpKS0+cHV0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkgJiYgc2xvdC5pc1N0cmlj
dE1vZGUoKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKTsKLX0KLQogaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewogICAg
IGlmIChVTkxJS0VMWSghaXNDZWxsKCkpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMDQ3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw3ICsyMTgsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKICAgICAgICAgdm9pZCBw
dXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3QoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlKTsKIAogICAgICAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
Owo=
</data>
<flag name="review"
          id="123101"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122360</attachid>
            <date>2012-01-12 19:23:23 -0800</date>
            <delta_ts>2012-01-12 19:30:24 -0800</delta_ts>
            <desc>Part 2</desc>
            <filename>76232.2.patch</filename>
            <type>text/plain</type>
            <size>35011</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0ODg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTAxLTEyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBDbGVhbiB1cCBwdXREaXJlY3QgKHBhcnQgMikKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjMyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHB1dFdpdGhBdHRyaWJ1dGVzIHRv
IHB1dERpcmVjdFZpcnR1YWwsIHRvIGlkZW50aWZ5IHRoYXQgdGhpcworICAgICAgICBoYXMgdGhl
IHNhbWUgdW5jaGVja2VkLURlZmluZU93blByb3BlcnR5IGJlaGF2aW91ciwgY2hhbmdlIHB1dERp
cmVjdEludGVybmFsCisgICAgICAgIHRvIGJlIHRlbXBsYXRlZCBvbiBhbiBlbnVtIGluZGljYXRp
bmcgd2hpY2ggYmVoYXZpb3VyIGl0IGlzIHN1cHBvc2VkIHRvIGJlCisgICAgICAgIGltcGxlbWVu
dGluZywgYW5kIGNoYW5nZSBjbGllbnRzIHRoYXQgYXJlIGRlZmluaW5nIHByb3BlcnRpZXMgdG8g
Y2FsbAorICAgICAgICBwdXREaXJlY3RJbnRlcm5hbCBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBB
UEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RTZXRQcm9wZXJ0eSk6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQWN0
aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmg6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6YWRkRXJyb3JJbmZvKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlv
bjo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0
RGlyZWN0VmlydHVhbCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnB1dERpcmVjdFZpcnR1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RWaXJ0dWFsKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZUdldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
Ojppbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6ZGVmaW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6cHV0RGVzY3JpcHRvcik6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdCk6CisgICAgICAgICogcnVudGltZS9K
U1N0YXRpY1Njb3BlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGF0aWNTY29wZU9iamVj
dDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6CisgICAgICAgICogcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisKIDIwMTItMDEtMTIgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHB1dERpcmVjdCAo
cGFydCAxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShy
ZXZpc2lvbiAxMDQ3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgX19aTjNKU0MxNEpTR2xvYmFs
T2JqZWN0MTJkZWZpbmVTZXR0ZXJFUAogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTNjbGVhclJh
cmVEYXRhRVBOU182SlNDZWxsRQogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0MTN2aXNpdENoaWxk
cmVuRVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNEpTR2xvYmFsT2Jq
ZWN0MTZhZGRTdGF0aWNHbG9iYWxzRVBOUzBfMThHbG9iYWxQcm9wZXJ0eUluZm9FaQotX19aTjNK
U0MxNEpTR2xvYmFsT2JqZWN0MTdwdXRXaXRoQXR0cmlidXRlc0VQTlNfOEpTT2JqZWN0RVBOU185
RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRWoKK19fWk4zSlNDMTRKU0ds
b2JhbE9iamVjdDE2cHV0RGlyZWN0VmlydHVhbEVQTlNfOEpTT2JqZWN0RVBOU185RXhlY1N0YXRl
RVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRWoKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVj
dDE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdDI0
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU184SlNPYmplY3RFUE5TXzlFeGVjU3RhdGVFUktO
U18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0MxNEpTR2xv
YmFsT2JqZWN0MjVzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlRQpAQCAtMzIyLDggKzMyMiw3IEBA
IF9fWk4zSlNDOEpTT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfNkoKIF9fWk4zSlNDOEpTT2Jq
ZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBTMF9QTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5h
bWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDOEpTT2JqZWN0MTdkZWZpbmVP
d25Qcm9wZXJ0eUVQUzBfUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJv
cGVydHlEZXNjcmlwdG9yRWIKIF9fWk4zSlNDOEpTT2JqZWN0MTdwcmV2ZW50RXh0ZW5zaW9uc0VS
TlNfMTJKU0dsb2JhbERhdGFFCi1fX1pOM0pTQzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNF
UE5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRWoKLV9fWk4z
SlNDOEpTT2JqZWN0MTdwdXRXaXRoQXR0cmlidXRlc0VQUzBfUE5TXzlFeGVjU3RhdGVFUktOU18x
MElkZW50aWZpZXJFTlNfN0pTVmFsdWVFagorX19aTjNKU0M4SlNPYmplY3QxNnB1dERpcmVjdFZp
cnR1YWxFUFMwX1BOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRWoK
IF9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVzRVBTMF9QTlNfOUV4ZWNTdGF0
ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlND
OEpTT2JqZWN0MjFkZWxldGVQcm9wZXJ0eUJ5SW5kZXhFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3Rh
dGVFagogX19aTjNKU0M4SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMTA0Nzc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250
ZXh0UmVmIGN0CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7CiAKICAg
ICBpZiAoYXR0cmlidXRlcyAmJiAhanNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIG5hbWUpKQot
ICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0V2l0aEF0dHJpYnV0ZXMoanNPYmpl
Y3QsIGV4ZWMsIG5hbWUsIGpzVmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICBqc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+cHV0RGlyZWN0VmlydHVhbChqc09iamVjdCwgZXhlYywgbmFtZSwganNW
YWx1ZSwgYXR0cmlidXRlcyk7CiAgICAgZWxzZSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90OwogICAgICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KGpzT2JqZWN0LCBleGVj
LCBuYW1lLCBqc1ZhbHVlLCBzbG90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCShyZXZpc2lvbiAxMDQ3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgRGVidWdnZXJBY3RpdmF0
aW9uOjpwdXQoSlNDZWxsKiBjZWwKICAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhv
ZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24uZ2V0KCksIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0
V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCit2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBEZWJ1Z2dlckFjdGl2
YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RGVidWdnZXJBY3RpdmF0aW9uKj4ob2JqZWN0KTsK
LSAgICB0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24tPm1ldGhvZFRhYmxlKCktPnB1dFdpdGhBdHRy
aWJ1dGVzKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSwgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgdGhpc09iamVjdC0+bV9hY3RpdmF0aW9uLT5tZXRo
b2RUYWJsZSgpLT5wdXREaXJlY3RWaXJ0dWFsKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQo
KSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7CiB9CiAKIGJvb2wgRGVi
dWdnZXJBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAkocmV2aXNp
b24gMTA0Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0
aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMg
dm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAg
ICAgIHN0YXRpYyB2b2lkIHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNDg4NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkwNSw3ICs5MDUsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dy
YW1FeGVjCiAgICAgICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgICAg
ICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSwgSlNPTlBQYXRoWzBdLm1fcGF0aEVudHJ5TmFtZSwgSlNPTlBWYWx1ZSwg
c2xvdCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdsb2Jh
bE9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUsIEpTT05QUGF0aFswXS5tX3BhdGhFbnRyeU5hbWUsIEpTT05QVmFsdWUsIERvbnRF
bnVtIHwgRG9udERlbGV0ZSk7CisgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+bWV0
aG9kVGFibGUoKS0+cHV0RGlyZWN0VmlydHVhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSlNP
TlBQYXRoWzBdLm1fcGF0aEVudHJ5TmFtZSwgSlNPTlBWYWx1ZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlKTsKICAgICAgICAgICAgICAgICAvLyB2YXIgZGVjbGFyYXRpb25zIHJldHVybiB1bmRlZmlu
ZWQKICAgICAgICAgICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmgJKHJldmlzaW9uIDEwNDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBIYXNJbnN0YW5jZUZ1bmN0aW9uUHRyIGhhc0luc3RhbmNlOwogCiAgICAg
ICAgIHR5cGVkZWYgdm9pZCAoKlB1dFdpdGhBdHRyaWJ1dGVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgUHV0V2l0aEF0dHJpYnV0ZXNGdW5jdGlvblB0
ciBwdXRXaXRoQXR0cmlidXRlczsKKyAgICAgICAgUHV0V2l0aEF0dHJpYnV0ZXNGdW5jdGlvblB0
ciBwdXREaXJlY3RWaXJ0dWFsOwogCiAgICAgICAgIHR5cGVkZWYgYm9vbCAoKkRlZmluZU93blBy
b3BlcnR5RnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wpOwogICAgICAgICBEZWZpbmVPd25Qcm9wZXJ0
eUZ1bmN0aW9uUHRyIGRlZmluZU93blByb3BlcnR5OwpAQCAtMTM1LDcgKzEzNSw3IEBAIHN0cnVj
dCBNZW1iZXJDaGVjayMjbWVtYmVyIHsgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRQcm9wZXJ0
eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmNsYXNzTmFtZSwgXAogICAgICAgICAmQ2xh
c3NOYW1lOjpoYXNJbnN0YW5jZSwgXAotICAgICAgICAmQ2xhc3NOYW1lOjpwdXRXaXRoQXR0cmli
dXRlcywgXAorICAgICAgICAmQ2xhc3NOYW1lOjpwdXREaXJlY3RWaXJ0dWFsLCBcCiAgICAgICAg
ICZDbGFzc05hbWU6OmRlZmluZU93blByb3BlcnR5LCBcCiAgICAgICAgICZDbGFzc05hbWU6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvciwgXAogICAgIH0sIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDEwNDc3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDExICsx
MjMsMTEgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhKU0dsb2JhbERhdGEqIGdsbwogICAgIGNv
bnN0IFVTdHJpbmcmIHNvdXJjZVVSTCA9IHNvdXJjZS5wcm92aWRlcigpLT51cmwoKTsKIAogICAg
IGlmIChsaW5lICE9IC0xKQotICAgICAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFs
RGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1iZXIo
bGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9yLT5wdXREaXJlY3Qo
Kmdsb2JhbERhdGEsIElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgbGluZVByb3BlcnR5TmFtZSksIGpz
TnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgIGlmIChzb3VyY2VJRCAh
PSAtMSkKLSAgICAgICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIElkZW50
aWZpZXIoZ2xvYmFsRGF0YSwgc291cmNlSWRQcm9wZXJ0eU5hbWUpLCBqc051bWJlcigoZG91Ymxl
KXNvdXJjZUlEKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZXJyb3ItPnB1dERp
cmVjdCgqZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBzb3VyY2VJZFByb3BlcnR5
TmFtZSksIGpzTnVtYmVyKChkb3VibGUpc291cmNlSUQpLCBSZWFkT25seSB8IERvbnREZWxldGUp
OwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQotICAgICAgICBlcnJvci0+cHV0V2l0aEF0
dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBzb3VyY2VVUkxQcm9w
ZXJ0eU5hbWUpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBzb3VyY2VVUkwpLCBSZWFkT25seSB8IERv
bnREZWxldGUpOworICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCpnbG9iYWxEYXRhLCBJZGVudGlm
aWVyKGdsb2JhbERhdGEsIHNvdXJjZVVSTFByb3BlcnR5TmFtZSksIGpzU3RyaW5nKGdsb2JhbERh
dGEsIHNvdXJjZVVSTCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAKICAgICByZXR1cm4gZXJy
b3I7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZh
dGlvbi5jcHAJKHJldmlzaW9uIDEwNDg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2
b2lkIEpTQWN0aXZhdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiB9CiAKIC8vIEZJWE1FOiBN
YWtlIHRoaXMgZnVuY3Rpb24gaG9ub3IgUmVhZE9ubHkgKGNvbnN0KSBhbmQgRG9udEVudW0KLXZv
aWQgSlNBY3RpdmF0aW9uOjpwdXRXaXRoQXR0cmlidXRlcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3ZvaWQgSlNBY3RpdmF0aW9uOjpwdXREaXJlY3RWaXJ0
dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAg
IEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihvYmplY3Qp
OwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0g
SGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBKU0FjdGl2
YXRpb246OnB1dFdpdGhBdHRyaWJ1dGVzKEpTTwogICAgIC8vIHByb3BlcnRpZXMgYXJlIG5vbi1z
dGFuZGFyZCBleHRlbnNpb25zIHRoYXQgb3RoZXIgaW1wbGVtZW50YXRpb25zIGRvIG5vdAogICAg
IC8vIGV4cG9zZSBpbiB0aGUgYWN0aXZhdGlvbiBvYmplY3QuCiAgICAgQVNTRVJUKCF0aGlzT2Jq
ZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgIEpTT2JqZWN0OjpwdXRXaXRo
QXR0cmlidXRlcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1
dGVzKTsKKyAgICBKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKIH0KIAogYm9vbCBKU0FjdGl2YXRpb246
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTA0Nzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBzdGF0aWMgSlNPYmpl
Y3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTA0Nzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAz
LDcgKzIwMyw3IEBAIGJvb2wgSlNDZWxsOjpoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNDZWxsOjpwdXRXaXRoQXR0cmlidXRlcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkK
K3ZvaWQgSlNDZWxsOjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJl
dmlzaW9uIDEwNDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGdldFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CiAgICAgICAgIHN0YXRpYyBVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwog
ICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOwotICAgICAgICBzdGF0aWMgTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lk
IHB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTA0Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUz
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRQogICAgIEpTVmFy
aWFibGVPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0V2l0aEF0dHJpYnV0ZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8
IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwpAQCAtMTY3LDcg
KzE2Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKEoKICAgICBp
ZiAoIXZhbHVlQmVmb3JlKSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWVBZnRlciA9IHRoaXNPYmpl
Y3QtPmdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IGlmICh2YWx1ZUFmdGVyKQotICAgICAgICAgICAgSlNPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWVBZnRlciwgYXR0cmlidXRlcyk7
CisgICAgICAgICAgICBKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlQWZ0ZXIsIGF0dHJpYnV0ZXMpOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShy
ZXZpc2lvbiAxMDQ3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2Jq
ZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIHZv
aWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZp
c2lvbiAxMDQ4NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVj
dDsgIW9iai0+c3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgb2JqID0g
YXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlw
ZSgpOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBpZiAo
IXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIDAsIHRydWUsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKSAmJiBzbG90LmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5h
bDxQdXRNb2RlUHV0PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBn
ZXRKU0Z1bmN0aW9uKHZhbHVlKSkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMDUsNyArMjA1LDcg
QEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJu
YWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgdHJ1ZSwgc2xvdCwgZ2V0SlNG
dW5jdGlvbih2YWx1ZSkpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCF0aGlzT2Jq
ZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSkgJiYgc2xvdC5pc1N0cmlj
dE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICByZXR1cm47CiB9CkBAIC0yMTcsMTYgKzIxNywxMCBA
QCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgCiAgICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20o
ZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTT2JqZWN0Ojpw
dXRXaXRoQXR0cmlidXRlcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7
Ci0gICAgb2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHRydWUsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFs
dWUpKTsKLX0KLQotdm9pZCBKU09iamVjdDo6cHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0g
ICAgcHV0RGlyZWN0SW50ZXJuYWwoKmdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIHRydWUsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdEludGVybmFsPERlZmluZU93blByb3BlcnR5PihleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFs
dWUpKTsKIH0KIAogYm9vbCBKU09iamVjdDo6aGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC0zNjEsNyArMzU1LDcgQEAg
dm9pZCBKU09iamVjdDo6ZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiB0aAogICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3Jl
YXRlKGV4ZWMpOwotICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3IsIHRydWUs
IHNsb3QsIDApOworICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPERlZmluZU93blBy
b3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRl
cyB8IEFjY2Vzc29yLCBzbG90LCAwKTsKIAogICAgIC8vIHB1dERpcmVjdCB3aWxsIGNoYW5nZSBv
dXIgU3RydWN0dXJlIGlmIHdlIGFkZCBhIG5ldyBwcm9wZXJ0eS4gRm9yCiAgICAgLy8gZ2V0dGVy
cyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1Y3R1
cmUKQEAgLTM4MSw3ICszNzUsNyBAQCB2b2lkIEpTT2JqZWN0Ojppbml0aWFsaXplR2V0dGVyU2V0
dGVyUHJvCiAKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRh
KCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMsIHRydWUsIHNs
b3QsIDApOworICAgIHB1dERpcmVjdEludGVybmFsPERlZmluZU93blByb3BlcnR5PihnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcywgc2xvdCwgMCk7CiAK
ICAgICAvLyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBu
ZXcgcHJvcGVydHkuIEZvcgogICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2Ug
YWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCkBAIC00MDgsNyArNDAyLDcgQEAgdm9p
ZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiB0aAogCiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3Q7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZShleGVjKTsKLSAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbChleGVjLT5n
bG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzIHwgQWNj
ZXNzb3IsIHRydWUsIHNsb3QsIDApOworICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFs
PERlZmluZU93blByb3BlcnR5PihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZ2V0
dGVyU2V0dGVyLCBhdHRyaWJ1dGVzIHwgQWNjZXNzb3IsIHNsb3QsIDApOwogCiAgICAgLy8gcHV0
RGlyZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2UgYWRkIGEgbmV3IHByb3BlcnR5
LiBGb3IKICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0
byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQpAQCAtNjkzLDcgKzY4Nyw3IEBAIHN0YXRpYyBib29sIHB1
dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHw9
IEFjY2Vzc29yOwogICAgICAgICAgICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBvbGREZXNjcmlwdG9yLnNldHRlck9iamVjdCgpKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRhcmdldC0+bWV0aG9kVGFibGUoKS0+cHV0V2l0aEF0dHJpYnV0ZXModGFy
Z2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAg
ICAgIHRhcmdldC0+bWV0aG9kVGFibGUoKS0+cHV0RGlyZWN0VmlydHVhbCh0YXJnZXQsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBuZXdWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CkBAIC03MDEsNyArNjk1LDcgQEAgc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZQogICAgICAgICAgICAgbmV3VmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlKCk7CiAgICAg
ICAgIGVsc2UgaWYgKG9sZERlc2NyaXB0b3IudmFsdWUoKSkKICAgICAgICAgICAgIG5ld1ZhbHVl
ID0gb2xkRGVzY3JpcHRvci52YWx1ZSgpOwotICAgICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKCkt
PnB1dFdpdGhBdHRyaWJ1dGVzKHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCBuZXdWYWx1ZSwg
YXR0cmlidXRlcyAmIH5BY2Nlc3Nvcik7CisgICAgICAgIHRhcmdldC0+bWV0aG9kVGFibGUoKS0+
cHV0RGlyZWN0VmlydHVhbCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgbmV3VmFsdWUsIGF0
dHJpYnV0ZXMgJiB+QWNjZXNzb3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
YXR0cmlidXRlcyAmPSB+UmVhZE9ubHk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNDg4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAg
IGZyaWVuZCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKIAorICAgICAgICBlbnVtIFB1dE1v
ZGUgeworICAgICAgICAgICAgUHV0TW9kZVB1dCwKKyAgICAgICAgICAgIERlZmluZU93blByb3Bl
cnR5LAorICAgICAgICB9OworCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwogCkBAIC0xMDcsMTIgKzExMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lk
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlKTsKIAotICAgICAgICAvLyBwdXRXaXRoQXR0cmlidXRlcyBpcyBlZmZlY3RpdmVseSBh
biB1bmNoZWNrZWQgdmVzaW9uIG9mICdkZWZpbmVPd25Qcm9wZXJ0eSc6CisgICAgICAgIC8vIHB1
dERpcmVjdCBpcyBlZmZlY3RpdmVseSBhbiB1bmNoZWNrZWQgdmVzaW9uIG9mICdkZWZpbmVPd25Q
cm9wZXJ0eSc6CiAgICAgICAgIC8vICAtIHRoZSBwcm90b3R5cGUgY2hhaW4gaXMgbm90IGNvbnN1
bHRlZAogICAgICAgICAvLyAgLSBhY2Nlc3NvcnMgYXJlIG5vdCBjYWxsZWQuCiAgICAgICAgIC8v
ICAtIGF0dHJpYnV0ZXMgd2lsbCBiZSByZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9w
ZXJ0eSB3aWxsIGV4aXN0IHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZXMpCi0gICAgICAgIHN0YXRp
YyB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAg
ICAgICAgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAg
ICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKKyAgICAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7CisgICAg
ICAgIHZvaWQgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIHZvaWQgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7CiAKICAgICAgICAg
Ym9vbCBwcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpIGNvbnN0OwogCkBAIC0xODEsMTEgKzE4OCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSlNBY3RpdmF0aW9uLgogICAgICAgICBib29s
IHB1dE93bkRhdGFQcm9wZXJ0eShKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHZvaWQgcHV0
RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICBib29sIHB1dERpcmVjdChKU0dsb2Jh
bERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwotCi0gICAgICAgIHZvaWQgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNp
Z25lZCBhdHRyID0gMCk7Ci0KICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVy
dHkgb2Zmc2V0cy4KICAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QgeyByZXR1cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQogICAg
ICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVf
dCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQo
Z2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CkBAIC0yOTAsNyArMjkyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gJnByb3BlcnR5U3RvcmFnZSgpW29mZnNldF07CiAg
ICAgICAgIH0KIAotICAgICAgICBib29sIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwg
Ym9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqKTsKKyAgICAgICAg
dGVtcGxhdGU8UHV0TW9kZT4KKyAgICAgICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2Jh
bERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHIsIFB1dFByb3BlcnR5U2xvdCYsIEpTQ2VsbCopOwogCiAgICAgICAgIGJvb2wgaW5saW5l
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKQEAgLTYzNyw3ICs2NDAsOCBAQCBpbmxpbmUgSlNWYWx1
ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9
CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikKK3RlbXBsYXRlPEpTT2JqZWN0OjpQ
dXRNb2RlIG1vZGU+CitpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwg
SlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNT
RVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFw
KHRoaXMpKTsKQEAgLTY1MSw3ICs2NTUsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVu
dCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rp
b24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQogICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZSgpLT5kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgIGlmIChjaGVja1JlYWRPbmx5ICYm
IGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCisgICAgICAgICAgICBpZiAoKG1vZGUgPT0g
UHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxE
YXRhLCBvZmZzZXQsIHZhbHVlKTsKQEAgLTY2Niw3ICs2NzAsNyBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChjaGVja1JlYWRPbmx5ICYmICFpc0V4dGVuc2libGUoKSkKKyAg
ICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2libGUoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0g
c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CkBAIC03MDIsNyArNzA2LDcg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgIEpTQ2VsbCog
Y3VycmVudFNwZWNpZmljRnVuY3Rpb247CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbik7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7Ci0gICAgICAg
IGlmIChjaGVja1JlYWRPbmx5ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCisgICAg
ICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRP
bmx5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIFRoZXJlIGFyZSB0
aHJlZSBwb3NzaWJpbGl0aWVzIGhlcmU6CkBAIC03MzAsNyArNzM0LDcgQEAgaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBpZiAoY2hlY2tSZWFkT25seSAmJiAhaXNFeHRlbnNpYmxlKCkpCisgICAgaWYgKCht
b2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2libGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCB0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOwpAQCAtNzU0LDE4ICs3NTgsMTgg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eQogICAgIEFTU0VSVCgh
SGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlz
KSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
KTsKIAotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCB0cnVlLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CisgICAgcmV0
dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKIH0KIAogaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cykKIHsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwg
Z2V0SlNGdW5jdGlvbih2YWx1ZSkpOworICAgIHB1dERpcmVjdEludGVybmFsPERlZmluZU93blBy
b3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90
LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK2lubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgMCwgZmFsc2UsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBw
dXREaXJlY3RJbnRlcm5hbDxEZWZpbmVPd25Qcm9wZXJ0eT4oZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCiBpbmxpbmUg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAkocmV2aXNpb24gMTA0Nzc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0
OjpwdXQoSlNDZWxsKiBjZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEpT
U3RhdGljU2NvcGVPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBKU1N0YXRpY1Njb3BlT2JqZWN0OjpwdXRE
aXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogewogICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTdGF0
aWNTY29wZU9iamVjdCo+KG9iamVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Rh
dGljU2NvcGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgJKHJldmlzaW9uIDEwNDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDewogICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
ICAgICBzdGF0aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pIHsgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5
cGVJbmZvKFN0YXRpY1Njb3BlT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0LmNwcAkocmV2aXNpb24gMTA0Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzcz
LDcgQEAgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjbwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBKU1ZhcmlhYmxlT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25l
ZCkKK3ZvaWQgSlNWYXJpYWJsZU9iamVjdDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCkKIHsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FT
U0VSVCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDg4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDEyLTAxLTEyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDbGVhbiB1cCBwdXREaXJlY3QgKHBhcnQgMikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHB1dFdpdGhBdHRyaWJ1dGVzIHRvIHB1
dERpcmVjdFZpcnR1YWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnB1dERpcmVjdFZpcnR1
YWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKKwogMjAxMi0w
MS0xMiAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogW0Nob21pdW1dIFJlc291cmNlcyBsb2FkZWQgd2l0aCAzMDQgc3RhdHVz
IGNvZGUgaGF2ZSByZWNlaXZpbmcgdGltZSBvZiAxNTAwMCBkYXlzIGluIG5ldHdvcmsgcGFuZWwu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmNwcAkocmV2aXNpb24gMTA0Nzc3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMCArMTA5LDEwIEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6cHV0KEpTQ2VsbCogY2VsbCwKICAgICB0aGlzT2JqZWN0LT53
aW5kb3coKS0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QtPndpbmRvdygpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpw
dXRXaXRoQXR0cmlidXRlcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6cHV0RGlyZWN0VmlydHVhbChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBKU0RPTVdpbmRvd1No
ZWxsKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93U2hlbGwqPihvYmplY3QpOwotICAg
IHRoaXNPYmplY3QtPndpbmRvdygpLT5wdXRXaXRoQXR0cmlidXRlcyh0aGlzT2JqZWN0LT53aW5k
b3coKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgdGhpc09i
amVjdC0+d2luZG93KCktPnB1dERpcmVjdFZpcnR1YWwodGhpc09iamVjdC0+d2luZG93KCksIGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMpOwogfQogCiBib29sIEpTRE9NV2lu
ZG93U2hlbGw6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgJKHJldmlz
aW9uIDEwNDc3NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
cHV0RGlyZWN0VmlydHVhbChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwq
LCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlv
bk1vZGUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSk7Cg==
</data>
<flag name="review"
          id="123120"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124505</attachid>
            <date>2012-01-30 01:07:26 -0800</date>
            <delta_ts>2012-01-30 10:21:03 -0800</delta_ts>
            <desc>Part 3 - merge op_put_getter &amp; op_put_setter.</desc>
            <filename>76232.3.patch</filename>
            <type>text/plain</type>
            <size>29788</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MjE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDEyLTAxLTMwICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBDbGVhbiB1cCBwdXREaXJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFydCAzIC0gbWVyZ2Ugb3BfcHV0X2dldHRlciAmIG9wX3B1
dF9zZXR0ZXIuCisKKyAgICAgICAgUHV0dGluZyB0aGVzZSBzZXBhcmF0ZWx5IGlzIGluZWZmaWNp
ZW50IChhbmQgbWFrZXMgZnV0dXJlIG9wdGltaWF0aW9uLAorICAgICAgICBlLmcuIG1ha2luZyBH
ZXR0ZXJTZXR0ZXIgaW1tdXRhYmxlKSBoYXJkZXIuIENoYW5nZSB0byBlbWl0IGEgc2luZ2xlCisg
ICAgICAgIG9wX3B1dF9nZXR0ZXJfc2V0dGVyIGJ5dGVjb2RlIG9wLiBVbHRpbWF0ZWx5IHdlIHNo
b3VsZCBwcm9iYWJseSBiZQorICAgICAgICBhYmxlIHRvIG1lcmdlIHRoaXMgd2l0aCBwdXQgZGly
ZWN0LCB0byBjcmVhdGUgYSBjb21tb24gb3AgdG8gaW5pdGlhbGl6ZQorICAgICAgICBvYmplY3Qg
bGl0ZXJhbCBwcm9wZXJ0aWVzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNv
ZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaDoKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dldHRl
cl9zZXR0ZXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6Cisg
ICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0VmlydHVhbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpwdXREZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Cisg
ICAgICAgICgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKwogMjAxMi0wMS0yOSAgWm9sdGFuIEhl
cmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIEN1c3RvbSB3cml0dGVuIENT
UyBsZXhlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDEwNjE5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDIsMTggKzkwMiwxMiBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyOiB7Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXI6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBwcmludGYoIlslNGRdIHB1dF9nZXR0ZXJcdCAlcywgJXMsICVzXG4iLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQw
XSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9zZXR0ZXI6IHsKLSAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGlkMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIHB1dF9zZXR0ZXJcdCAlcywgJXMsICVzXG4iLCBs
b2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRl
bnRpZmllcnNbaWQwXSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gcHV0X2dldHRlcl9zZXR0ZXJcdCAlcywgJXMsICVzLCAlc1xuIiwgbG9jYXRpb24s
IHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJz
W2lkMF0pLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShleGVjLCByMikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfbWV0aG9kX2NoZWNrOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDYxOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw4ICsxMzIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X3ZhbCwgNCkgXAogICAgICAg
ICBtYWNybyhvcF9kZWxfYnlfdmFsLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pbmRl
eCwgNCkgXAotICAgICAgICBtYWNybyhvcF9wdXRfZ2V0dGVyLCA0KSBcCi0gICAgICAgIG1hY3Jv
KG9wX3B1dF9zZXR0ZXIsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2dldHRlcl9zZXR0ZXIs
IDUpIFwKICAgICAgICAgXAogICAgICAgICBtYWNybyhvcF9qbXAsIDIpIFwKICAgICAgICAgbWFj
cm8ob3BfanRydWUsIDMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDYxOTcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3MywyMiArMTU3MywxMyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdldHRlcihSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQq
IHNldHRlcikKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX3B1dF9nZXR0ZXIpOworICAgIGVtaXRPcGNv
ZGUob3BfcHV0X2dldHRlcl9zZXR0ZXIpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNl
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVy
dHkpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwotICAgIHJl
dHVybiB2YWx1ZTsKLX0KLQotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRT
ZXR0ZXIoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKQotewotICAgIGVtaXRPcGNvZGUob3BfcHV0X3NldHRlcik7Ci0gICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2
YWx1ZS0+aW5kZXgoKSk7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChnZXR0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXIt
PmluZGV4KCkpOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0
ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDEwNjE5NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMwLDggKzMzMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5
VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlJbmRleChSZWdpc3RlcklEKiBiYXNl
LCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUpOwotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0UHV0R2V0dGVyKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRTZXR0
ZXIoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlKTsKKyAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJl
Z2lzdGVySUQqIHNldHRlcik7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBDYWxsQXJndW1lbnRzJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTA2MTk3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzYsMjcgKzIzNiw3OSBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0Qnl0ZWNvCiAgICAgCiAgICAgZ2VuZXJhdG9yLmVtaXROZXdPYmplY3QobmV3T2JqLmdl
dCgpKTsKICAgICAKLSAgICBmb3IgKFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOyBwOyBwID0g
cC0+bV9uZXh0KSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKHAtPm1fbm9kZS0+bV9hc3NpZ24pOwotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChwLT5t
X25vZGUtPm1fdHlwZSkgewotICAgICAgICAgICAgY2FzZSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50
OiB7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKG5ld09iai5n
ZXQoKSwgcC0+bV9ub2RlLT5uYW1lKCksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgUHJvcGVydHlOb2RlOjpHZXR0ZXI6IHsK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEdldHRlcihuZXdPYmouZ2V0KCksIHAt
Pm1fbm9kZS0+bmFtZSgpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgLy8g
RmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGll
cy4KKyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKKyAgICBmb3IgKDsgcCAmJiBwLT5t
X25vZGUtPm1fdHlwZSA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50OyBwID0gcC0+bV9uZXh0KQor
ICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQobmV3T2JqLmdldCgpLCBwLT5tX25v
ZGUtPm5hbWUoKSwgZ2VuZXJhdG9yLmVtaXROb2RlKHAtPm1fbm9kZS0+bV9hc3NpZ24pKTsKKwor
ICAgIC8vIFdlcmUgdGhlcmUgYW55IGdldC9zZXQgcHJvcGVydGllcz8KKyAgICBpZiAocCkgewor
ICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eU5vZGUqPiBH
ZXR0ZXJTZXR0ZXJQYWlyOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nSW1wbCosIEdl
dHRlclNldHRlclBhaXI+IEdldHRlclNldHRlck1hcDsKKyAgICAgICAgR2V0dGVyU2V0dGVyTWFw
IG1hcDsKKworICAgICAgICAvLyBCdWlsZCBhIG1hcCwgcGFpcmluZyBnZXQvc2V0IHZhbHVlcyB0
b2dldGhlci4KKyAgICAgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBxID0gcDsgcTsgcSA9IHEt
Pm1fbmV4dCkgeworICAgICAgICAgICAgUHJvcGVydHlOb2RlKiBub2RlID0gcS0+bV9ub2RlOwor
ICAgICAgICAgICAgaWYgKG5vZGUtPm1fdHlwZSA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJQYWly
IHBhaXIobm9kZSwgMCk7CisgICAgICAgICAgICBzdGQ6OnBhaXI8R2V0dGVyU2V0dGVyTWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLmFkZChub2RlLT5uYW1lKCkuaW1wbCgpLCBwYWly
KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKKyAgICAgICAgICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZC5zZWNvbmQgPSBub2RlOworICAgICAgICB9CisKKyAgICAgICAgLy8g
SXRlcmF0ZSBvdmVyIHRoZSByZW1haW5pbmcgcHJvcGVydGllcyBpbiB0aGUgbGlzdC4KKyAgICAg
ICAgZm9yICg7IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgICAgIFByb3BlcnR5Tm9kZSog
bm9kZSA9IHAtPm1fbm9kZTsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG5vZGUtPm1fYXNzaWduKTsKKworICAgICAgICAgICAgLy8gSGFuZGxlIHJl
Z3VsYXIgdmFsdWVzLgorICAgICAgICAgICAgaWYgKG5vZGUtPm1fdHlwZSA9PSBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50KSB7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRC
eUlkKG5ld09iai5nZXQoKSwgbm9kZS0+bmFtZSgpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFByb3BlcnR5Tm9kZTo6
U2V0dGVyOiB7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRTZXR0ZXIobmV3T2Jq
LmdldCgpLCBwLT5tX25vZGUtPm5hbWUoKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgZ2V0L3NldCBwcm9wZXJ0eSwgZmluZCBpdHMg
ZW50cnkgaW4gdGhlIG1hcC4KKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5tX3R5cGUgPT0gUHJv
cGVydHlOb2RlOjpHZXR0ZXIgfHwgbm9kZS0+bV90eXBlID09IFByb3BlcnR5Tm9kZTo6U2V0dGVy
KTsKKyAgICAgICAgICAgIEdldHRlclNldHRlck1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChu
b2RlLT5uYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkp
OworICAgICAgICAgICAgR2V0dGVyU2V0dGVyUGFpciYgcGFpciA9IGl0LT5zZWNvbmQ7CisKKyAg
ICAgICAgICAgIC8vIFdhcyB0aGlzIGFscmVhZHkgZ2VuZXJhdGVkIGFzIGEgcGFydCBvZiBpdHMg
cGFydG5lcj8KKyAgICAgICAgICAgIGlmIChwYWlyLnNlY29uZCA9PSBub2RlKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgIAorICAgICAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHBhaXJl
ZCBub2RlIG5vdy4KKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJSZWc7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyUmVnOworCisgICAgICAgICAgICBp
ZiAobm9kZS0+bV90eXBlID09IFByb3BlcnR5Tm9kZTo6R2V0dGVyKSB7CisgICAgICAgICAgICAg
ICAgZ2V0dGVyUmVnID0gdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKHBhaXIuc2Vjb25kKSB7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYWlyLnNlY29uZC0+bV90eXBlID09IFByb3Bl
cnR5Tm9kZTo6U2V0dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyUmVnID0gZ2VuZXJh
dG9yLmVtaXROb2RlKHBhaXIuc2Vjb25kLT5tX2Fzc2lnbik7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyUmVnID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoc2V0dGVyUmVn
LmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5tX3R5cGUgPT0gUHJvcGVydHlO
b2RlOjpTZXR0ZXIpOworICAgICAgICAgICAgICAgIHNldHRlclJlZyA9IHZhbHVlOworICAgICAg
ICAgICAgICAgIGlmIChwYWlyLnNlY29uZCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cGFpci5zZWNvbmQtPm1fdHlwZSA9PSBQcm9wZXJ0eU5vZGU6OkdldHRlcik7CisgICAgICAgICAg
ICAgICAgICAgIGdldHRlclJlZyA9IGdlbmVyYXRvci5lbWl0Tm9kZShwYWlyLnNlY29uZC0+bV9h
c3NpZ24pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGdl
dHRlclJlZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMb2FkKGdldHRlclJlZy5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRHZXR0ZXJTZXR0ZXIobmV3T2JqLmdldCgpLCBub2RlLT5uYW1lKCksIGdldHRlclJl
Zy5nZXQoKSwgc2V0dGVyUmVnLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIG5ld09iai5n
ZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA2MTk3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk2
MSw1MiArNDk2MSw0MSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICBpbnQgcmVzdWx0
ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+cihyZXN1bHQp
LmpzVmFsdWUoKTsKICAgICB9Ci0gICAgREVGSU5FX09QQ09ERShvcF9wdXRfZ2V0dGVyKSB7Ci0g
ICAgICAgIC8qIHB1dF9nZXR0ZXIgYmFzZShyKSBwcm9wZXJ0eShpZCkgZnVuY3Rpb24ocikKKyAg
ICBERUZJTkVfT1BDT0RFKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKSB7CisgICAgICAgIC8qIHB1dF9n
ZXR0ZXJfc2V0dGVyIGJhc2UocikgcHJvcGVydHkoaWQpIGdldHRlcihyKSBzZXR0ZXIocikKIAot
ICAgICAgICAgICBTZXRzIHJlZ2lzdGVyIGZ1bmN0aW9uIG9uIHJlZ2lzdGVyIGJhc2UgYXMgdGhl
IGdldHRlciBuYW1lZAotICAgICAgICAgICBieSBpZGVudGlmaWVyIHByb3BlcnR5LiBCYXNlIGFu
ZCBmdW5jdGlvbiBhcmUgYXNzdW1lZCB0byBiZQotICAgICAgICAgICBvYmplY3RzIGFzIHRoaXMg
b3Agc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgZ2V0dGVycyBkZWZpbmVkCi0gICAgICAgICAgIGlu
IG9iamVjdCBsaXRlcmFsIGZvcm0uCisgICAgICAgICAgIFB1dHMgYWNjZXNzb3IgZGVzY3JpcHRv
ciB0byByZWdpc3RlciBiYXNlIGFzIHRoZSBuYW1lZAorICAgICAgICAgICBpZGVudGlmaWVyIHBy
b3BlcnR5LiBCYXNlIGFuZCBmdW5jdGlvbiBtYXkgYmUgb2JqZWN0cworICAgICAgICAgICBvciB1
bmRlZmluZWQsIHRoaXMgb3Agc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgYWNjZXNzb3JzCisgICAg
ICAgICAgIGRlZmluZWQgaW4gb2JqZWN0IGxpdGVyYWwgZm9ybS4KIAogICAgICAgICAgICBVbmxp
a2UgbWFueSBvcGNvZGVzLCB0aGlzIG9uZSBkb2VzIG5vdCB3cml0ZSBhbnkgb3V0cHV0IHRvCiAg
ICAgICAgICAgIHRoZSByZWdpc3RlciBmaWxlLgogICAgICAgICAqLwogICAgICAgICBpbnQgYmFz
ZSA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBwcm9wZXJ0eSA9IHZQQ1syXS51Lm9w
ZXJhbmQ7Ci0gICAgICAgIGludCBmdW5jdGlvbiA9IHZQQ1szXS51Lm9wZXJhbmQ7CisgICAgICAg
IGludCBnZXR0ZXJSZWcgPSB2UENbM10udS5vcGVyYW5kOworICAgICAgICBpbnQgc2V0dGVyUmVn
ID0gdlBDWzRdLnUub3BlcmFuZDsKIAogICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5yKGJhc2Up
LmpzVmFsdWUoKS5pc09iamVjdCgpKTsKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09i
amVjdChjYWxsRnJhbWUtPnIoYmFzZSkuanNWYWx1ZSgpKTsKICAgICAgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwotICAgICAgICBBU1NFUlQo
Y2FsbEZyYW1lLT5yKGZ1bmN0aW9uKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7Ci0gICAgICAgIGJh
c2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNlT2JqLCBjYWxsRnJhbWUsIGlk
ZW50LCBhc09iamVjdChjYWxsRnJhbWUtPnIoZnVuY3Rpb24pLmpzVmFsdWUoKSksIDApOwogCi0g
ICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9nZXR0ZXIpOwotICAgICAgICBORVhU
X0lOU1RSVUNUSU9OKCk7Ci0gICAgfQotICAgIERFRklORV9PUENPREUob3BfcHV0X3NldHRlcikg
ewotICAgICAgICAvKiBwdXRfc2V0dGVyIGJhc2UocikgcHJvcGVydHkoaWQpIGZ1bmN0aW9uKHIp
Ci0KLSAgICAgICAgICAgU2V0cyByZWdpc3RlciBmdW5jdGlvbiBvbiByZWdpc3RlciBiYXNlIGFz
IHRoZSBzZXR0ZXIgbmFtZWQKLSAgICAgICAgICAgYnkgaWRlbnRpZmllciBwcm9wZXJ0eS4gQmFz
ZSBhbmQgZnVuY3Rpb24gYXJlIGFzc3VtZWQgdG8gYmUKLSAgICAgICAgICAgb2JqZWN0cyBhcyB0
aGlzIG9wIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHNldHRlcnMgZGVmaW5lZAotICAgICAgICAg
ICBpbiBvYmplY3QgbGl0ZXJhbCBmb3JtLgotCi0gICAgICAgICAgIFVubGlrZSBtYW55IG9wY29k
ZXMsIHRoaXMgb25lIGRvZXMgbm90IHdyaXRlIGFueSBvdXRwdXQgdG8KLSAgICAgICAgICAgdGhl
IHJlZ2lzdGVyIGZpbGUuCi0gICAgICAgICovCi0gICAgICAgIGludCBiYXNlID0gdlBDWzFdLnUu
b3BlcmFuZDsKLSAgICAgICAgaW50IHByb3BlcnR5ID0gdlBDWzJdLnUub3BlcmFuZDsKLSAgICAg
ICAgaW50IGZ1bmN0aW9uID0gdlBDWzNdLnUub3BlcmFuZDsKKyAgICAgICAgR2V0dGVyU2V0dGVy
KiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGNhbGxGcmFtZSk7CiAKLSAgICAgICAg
QVNTRVJUKGNhbGxGcmFtZS0+cihiYXNlKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7Ci0gICAgICAg
IEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUo
KSk7Ci0gICAgICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBy
b3BlcnR5KTsKLSAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+cihmdW5jdGlvbikuanNWYWx1ZSgp
LmlzT2JqZWN0KCkpOwotICAgICAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0
ZXIoYmFzZU9iaiwgY2FsbEZyYW1lLCBpZGVudCwgYXNPYmplY3QoY2FsbEZyYW1lLT5yKGZ1bmN0
aW9uKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICAgICAgSlNWYWx1ZSBnZXR0ZXIgPSBjYWxsRnJhbWUt
PnIoZ2V0dGVyUmVnKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgc2V0dGVyID0gY2FsbEZy
YW1lLT5yKHNldHRlclJlZykuanNWYWx1ZSgpOworICAgICAgICBBU1NFUlQoZ2V0dGVyLmlzT2Jq
ZWN0KCkgfHwgZ2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgICAgICBBU1NFUlQoc2V0dGVyLmlz
T2JqZWN0KCkgfHwgc2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgICAgICBBU1NFUlQoZ2V0dGVy
LmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzT2JqZWN0KCkpOworCisgICAgICAgIGlmICghZ2V0dGVy
LmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChnZXR0ZXIpKTsKKyAgICAgICAgaWYgKCFzZXR0ZXIu
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0ZXIoY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KHNldHRlcikpOworICAgICAgICBiYXNlT2JqLT5wdXRE
aXJlY3RBY2Nlc3NvcihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgaWRlbnQsIGFjY2Vzc29yLCBB
Y2Nlc3Nvcik7CiAKLSAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcHV0X3NldHRlcik7
CisgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9nZXR0ZXJfc2V0dGVyKTsKICAg
ICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KICAgICBERUZJTkVfT1BDT0RFKG9wX21l
dGhvZF9jaGVjaykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
MTA2MTk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjgsMTAgKzMyOCw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCi0gICAgICAg
IERFRklORV9PUChvcF9wdXRfZ2V0dGVyKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRl
cl9zZXR0ZXIpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2xvYmFsX3ZhcikKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9zY29wZWRfdmFyKQotICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3Nl
dHRlcikKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmUpCiAgICAgICAgIERFRklORV9PUChv
cF9yZXNvbHZlX2Jhc2UpCiAgICAgICAgIERFRklORV9PUChvcF9lbnN1cmVfcHJvcGVydHlfZXhp
c3RzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMDYxOTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NTcsMTAg
Kzg1Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X2lk
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfaW5kZXgoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXIoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9zZXR0ZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmUo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfYmFzZShJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyhJbnN0
cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMDYxOTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MiwyOSArNjIsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2luZGV4KEluc3Ry
dWN0aQogICAgIHN0dWJDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dl
dHRlcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dldHRlcl9zZXR0ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICB1bnNpZ25lZCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICB1
bnNpZ25lZCBwcm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAg
dW5zaWduZWQgZnVuY3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAg
IHVuc2lnbmVkIGdldHRlciA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAg
dW5zaWduZWQgc2V0dGVyID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKICAgICAK
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dldHRlcik7CisgICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3B1dF9nZXR0ZXJfc2V0dGVyKTsKICAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChiYXNlKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChU
cnVzdGVkSW1tUHRyKCZtX2NvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSkpKTsKLSAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChmdW5jdGlvbik7Ci0gICAgc3R1YkNhbGwuY2FsbCgpOwotfQot
Ci12b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCi17Ci0gICAgdW5zaWduZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kOwotICAgIHVuc2lnbmVkIGZ1bmN0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKLSAgICAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0
X3NldHRlcik7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoYmFzZSk7Ci0gICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cigmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVy
dHkpKSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoZnVuY3Rpb24pOworICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KGdldHRlcik7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc2V0dGVyKTsK
ICAgICBzdHViQ2FsbC5jYWxsKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMDYxOTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYxLDIxICsyNjEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2luZGV4KElu
c3RydWN0aQogICAgIHN0dWJDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2dldHRlcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2dldHRlcl9zZXR0ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dldHRlcik7Ci0gICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVn
VDIpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoJm1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7Ci0gICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgcmVnVDIp
OwotICAgIHN0dWJDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3NldHRl
cihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9wdXRfc2V0dGVyKTsKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2Fs
bCh0aGlzLCBjdGlfb3BfcHV0X2dldHRlcl9zZXR0ZXIpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QyKTsKICAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKCZtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1QyKTsKKyAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCByZWdUMik7CiAgICAg
c3R1YkNhbGwuY2FsbCgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkocmV2aXNpb24gMTA2MTk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MjYsNyArMzUyNiw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwg
b3BfcHV0X2dldHRlcikKK0RFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9nZXR0ZXJf
c2V0dGVyKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIApAQCAt
MzUzNCwyMCArMzUzNCwyMCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfZ2V0
dGVyCiAKICAgICBBU1NFUlQoc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS5pc09iamVjdCgp
KTsKICAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KHN0YWNrRnJhbWUuYXJnc1swXS5q
c1ZhbHVlKCkpOwotICAgIEFTU0VSVChzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLmlzT2Jq
ZWN0KCkpOwotICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNlT2Jq
LCBjYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCksIGFzT2JqZWN0KHN0
YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCkpLCAwKTsKLX0KIAotREVGSU5FX1NUVUJfRlVOQ1RJ
T04odm9pZCwgb3BfcHV0X3NldHRlcikKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3Rh
Y2tGcmFtZSk7CisgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3Jl
YXRlKGNhbGxGcmFtZSk7CiAKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUu
Y2FsbEZyYW1lOwotCi0gICAgQVNTRVJUKHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7Ci0gICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChzdGFja0ZyYW1lLmFy
Z3NbMF0uanNWYWx1ZSgpKTsKLSAgICBBU1NFUlQoc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUo
KS5pc09iamVjdCgpKTsKLSAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIo
YmFzZU9iaiwgY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpLCBhc09i
amVjdChzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpKSwgMCk7CisgICAgSlNWYWx1ZSBnZXR0
ZXIgPSBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc2V0dGVyID0g
c3RhY2tGcmFtZS5hcmdzWzNdLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0
KCkgfHwgZ2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChzZXR0ZXIuaXNPYmplY3Qo
KSB8fCBzZXR0ZXIuaXNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgp
IHx8IHNldHRlci5pc09iamVjdCgpKTsKKworICAgIGlmICghZ2V0dGVyLmlzVW5kZWZpbmVkKCkp
CisgICAgICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGFz
T2JqZWN0KGdldHRlcikpOworICAgIGlmICghc2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAg
IGFjY2Vzc29yLT5zZXRTZXR0ZXIoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KHNl
dHRlcikpOworICAgIGJhc2VPYmotPnB1dERpcmVjdEFjY2Vzc29yKGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpLCBhY2Nlc3NvciwgQWNjZXNz
b3IpOwogfQogCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF90aHJvd19yZWZlcmVuY2Vf
ZXJyb3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAx
MDYxOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzNCw4ICs0MzQsNyBAQCBleHRlcm4gIkMiIHsKICAgICB2b2lkIEpJVF9TVFVC
IGN0aV9vcF9wdXRfYnlfaW5kZXgoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJ
VF9TVFVCIGN0aV9vcF9wdXRfYnlfdmFsKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgdm9p
ZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2J5X3ZhbF9ieXRlX2FycmF5KFNUVUJfQVJHU19ERUNMQVJB
VElPTik7Ci0gICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfcHV0X2dldHRlcihTVFVCX0FSR1NfREVD
TEFSQVRJT04pOwotICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3B1dF9zZXR0ZXIoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKTsKKyAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9wdXRfZ2V0dGVyX3NldHRl
cihTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3RlYXJf
b2ZmX2FjdGl2YXRpb24oU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVC
IGN0aV9vcF90ZWFyX29mZl9hcmd1bWVudHMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2
b2lkIEpJVF9TVFVCIGN0aV9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3IoU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAJKHJldmlzaW9uIDEwNjE5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDEwICsyMjQsMjggQEAgdm9pZCBKU09i
amVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIAogCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RWaXJ0dWFsKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQog
eworICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBB
Y2Nlc3NvcikpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgIG9iamVjdC0+cHV0RGly
ZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihleGVjLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFs
dWUpKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVyU2V0
dGVyKCkgJiYgKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOworICAgIEFTU0VSVChwcm9wZXJ0eU5h
bWUgIT0gZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOworCisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmlu
ZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVz
LCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CisKKyAgICAvLyBwdXREaXJlY3Qgd2lsbCBj
aGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBuZXcgcHJvcGVydHkuIEZvcgorICAgIC8v
IGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIg
U3RydWN0dXJlCisgICAgLy8gaWYgd2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcgbm9uLWdldHRlciBv
ciBub24tc2V0dGVyLgorICAgIGlmIChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5l
d1Byb3BlcnR5KQorICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgU3RydWN0dXJlOjph
dHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpKTsKKworICAgIHN0cnVjdHVyZSgpLT5zZXRIYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzKHRydWUpOworfQorCiBib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKQEAgLTY5MiwxNSArNzEwLDExIEBAIHN0YXRpYyBib29sIHB1
dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNE
ZXNjcmlwdG9yKCkgfHwgZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpIHsKICAgICAgICAg
aWYgKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpICYmIG9sZERlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3Nv
ciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwotICAgICAgICAgICAgaWYgKG9sZERlc2Ny
aXB0b3IuZ2V0dGVyUHJlc2VudCgpKSB7Ci0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBB
Y2Nlc3NvcjsKKyAgICAgICAgICAgIGlmIChvbGREZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSkK
ICAgICAgICAgICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwg
b2xkRGVzY3JpcHRvci5nZXR0ZXJPYmplY3QoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAob2xkRGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkpIHsKLSAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVzIHw9IEFjY2Vzc29yOworICAgICAgICAgICAgaWYgKG9sZERlc2NyaXB0b3Iuc2V0
dGVyUHJlc2VudCgpKQogICAgICAgICAgICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBvbGREZXNjcmlwdG9yLnNldHRlck9iamVjdCgpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHRhcmdldC0+bWV0aG9kVGFibGUoKS0+cHV0RGlyZWN0VmlydHVhbCh0
YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMpOworICAgICAg
ICAgICAgdGFyZ2V0LT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMgfCBBY2Nlc3Nvcik7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBKU1ZhbHVlIG5ld1ZhbHVlID0ganNVbmRl
ZmluZWQoKTsKQEAgLTcwOCwyMSArNzIyLDMyIEBAIHN0YXRpYyBib29sIHB1dERlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGUKICAgICAgICAgICAgIG5ld1ZhbHVlID0gZGVzY3JpcHRvci52YWx1ZSgp
OwogICAgICAgICBlbHNlIGlmIChvbGREZXNjcmlwdG9yLnZhbHVlKCkpCiAgICAgICAgICAgICBu
ZXdWYWx1ZSA9IG9sZERlc2NyaXB0b3IudmFsdWUoKTsKLSAgICAgICAgdGFyZ2V0LT5tZXRob2RU
YWJsZSgpLT5wdXREaXJlY3RWaXJ0dWFsKHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCBuZXdW
YWx1ZSwgYXR0cmlidXRlcyAmIH5BY2Nlc3Nvcik7CisgICAgICAgIHRhcmdldC0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBuZXdWYWx1ZSwgYXR0cmlidXRlcyAm
IH5BY2Nlc3Nvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBhdHRyaWJ1dGVz
ICY9IH5SZWFkT25seTsKKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVy
OjpjcmVhdGUoZXhlYyk7CisKICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkpCi0g
ICAgICAgIHRhcmdldC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKHRhcmdldCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLmdldHRlck9iamVjdCgpLCBhdHRyaWJ1dGVzKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgYWNjZXNzb3ItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGRlc2NyaXB0b3IuZ2V0
dGVyT2JqZWN0KCkpOworICAgIGVsc2UgaWYgKG9sZERlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgp
KQorICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgb2xkRGVz
Y3JpcHRvci5nZXR0ZXJPYmplY3QoKSk7CiAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2Vu
dCgpKQotICAgICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcih0YXJnZXQs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSwgYXR0cmlidXRl
cyk7Ci0gICAgcmV0dXJuICFleGVjLT5oYWRFeGNlcHRpb24oKTsKKyAgICAgICAgYWNjZXNzb3It
PnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGRlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCkp
OworICAgIGVsc2UgaWYgKG9sZERlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKQorICAgICAgICBh
Y2Nlc3Nvci0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgb2xkRGVzY3JpcHRvci5zZXR0
ZXJPYmplY3QoKSk7CisKKyAgICB0YXJnZXQtPnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcyB8IEFjY2Vzc29yKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2Vw
dGlvbikKIHsKKyAgICAvLyBfX3Byb3RvX18gaXMgbWFnaWM7IHdlIGRvbid0IGN1cnJlbnRseSBz
dXBwb3J0IHNldHRpbmcgaXQgYXMgYSByZWd1bGFyIHByb3BlcnR5LgorICAgIC8vIFNpbGVudCBm
aWx0ZXIgb3V0IGNhbGxzIHRvIHNldCBfX3Byb3RvX18gYXQgYW4gZWFybHkgc3RhZ2U7IHByZXRl
bmQgYWxsIGlzIG9rYXkuCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudW5kZXJzY29yZVByb3RvKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIC8vIElm
IHdlIGhhdmUgYSBuZXcgcHJvcGVydHkgd2UgY2FuIGp1c3QgcHV0IGl0IG9uIG5vcm1hbGx5CiAg
ICAgUHJvcGVydHlEZXNjcmlwdG9yIGN1cnJlbnQ7CiAgICAgaWYgKCFvYmplY3QtPm1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgY3VycmVudCkpIHsKQEAgLTgzMiw5ICs4NTcsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjCiAgICAgfQogICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHVuc2lnbmVkIGF0
dHJzID0gY3VycmVudC5hdHRyaWJ1dGVzV2l0aE92ZXJyaWRlKGRlc2NyaXB0b3IpOwotICAgIGlm
IChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSB8fCBkZXNjcmlwdG9yLmdldHRlclByZXNlbnQo
KSkKLSAgICAgICAgYXR0cnMgfD0gQWNjZXNzb3I7Ci0gICAgb2JqZWN0LT5wdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cnMpOworICAg
IG9iamVjdC0+cHV0RGlyZWN0QWNjZXNzb3IoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUsIGdldHRlclNldHRlciwgYXR0cnMgfCBBY2Nlc3Nvcik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNp
b24gMTA2MTk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKICAgICAgICAgdm9pZCBw
dXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAgdm9pZCBwdXREaXJl
Y3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGJvb2wgcHJvcGVydHlJ
c0VudW1lcmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBj
b25zdDsKIApAQCAtNjQyLDYgKzY0Myw3IEBAIHRlbXBsYXRlPEpTT2JqZWN0OjpQdXRNb2RlIG1v
ZGU+CiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBz
cGVjaWZpY0Z1bmN0aW9uKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgQVNTRVJUKHZhbHVl
LmlzR2V0dGVyU2V0dGVyKCkgPT0gISEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAgICAgQVNT
RVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFw
KHRoaXMpKTsKIAogICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKQEAgLTc2
MSwxNyArNzYzLDIwIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkK
IAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKIHsKKyAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYg
IShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAg
ICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFs
dWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJT
ZXR0ZXIoKSk7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5
PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9u
KHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKKyAgICBBU1NF
UlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsK
ICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
Z2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0
dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCg==
</data>
<flag name="review"
          id="125768"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>