<?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>81960</bug_id>
          
          <creation_ts>2012-03-22 13:37:57 -0700</creation_ts>
          <short_desc>Increase code sharing between StylePropertySet and CSSPropertyLonghand.</short_desc>
          <delta_ts>2012-03-26 05:12:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>585649</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 13:37:57 -0700</bug_when>
    <thetext>Increase code sharing between StylePropertySet and CSSPropertyLonghand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585653</commentid>
    <comment_count>1</comment_count>
      <attachid>133338</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 13:42:33 -0700</bug_when>
    <thetext>Created attachment 133338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585691</commentid>
    <comment_count>2</comment_count>
      <attachid>133343</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 14:20:31 -0700</bug_when>
    <thetext>Created attachment 133343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585738</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-22 14:59:46 -0700</bug_when>
    <thetext>nice, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585779</commentid>
    <comment_count>4</comment_count>
      <attachid>133343</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 15:28:24 -0700</bug_when>
    <thetext>Comment on attachment 133343
Patch

Attachment 133343 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12123184

New failing tests:
fast/dom/background-shorthand-csstext.html
fast/backgrounds/repeat/parsing-background-repeat.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585980</commentid>
    <comment_count>5</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 19:07:30 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 133343 [details])
&gt; Attachment 133343 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/12123184
&gt; 
&gt; New failing tests:
&gt; fast/dom/background-shorthand-csstext.html
&gt; fast/backgrounds/repeat/parsing-background-repeat.html

Will look at the failures on monday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587610</commentid>
    <comment_count>6</comment_count>
      <attachid>133774</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-26 04:28:00 -0700</bug_when>
    <thetext>Created attachment 133774
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587612</commentid>
    <comment_count>7</comment_count>
      <attachid>133775</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-26 04:33:28 -0700</bug_when>
    <thetext>Created attachment 133775
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587627</commentid>
    <comment_count>8</comment_count>
      <attachid>133775</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 05:12:04 -0700</bug_when>
    <thetext>Comment on attachment 133775
Patch for landing

Clearing flags on attachment: 133775

Committed r112078: &lt;http://trac.webkit.org/changeset/112078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587628</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 05:12:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133338</attachid>
            <date>2012-03-22 13:42:33 -0700</date>
            <delta_ts>2012-03-22 14:20:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81960-20120322174214.patch</filename>
            <type>text/plain</type>
            <size>25541</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjZDk0MGRlNmU1NWJi
MjRmNjEyYjI0NDBiODAxNzU3ZGU2M2VlYi4uYmE1MzAxYWM1OWE5NjM4NWNhOTQzOTBhNDlkMzll
MmZkNzA2M2Y4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIFN0eWxlUHJvcGVydHlTZXQgYW5kIENTU1Byb3BlcnR5
TG9uZ2hhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZnJvbSBDU1NQcm9wZXJ0eUxvbmdoYW5kIGluIFN0
eWxlUHJvcGVydHlTZXQgaW4gb3JkZXIKKyAgICAgICAgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlv
bi4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiByZWZhY3RvcmluZyBvbmx5LCB3ZSBzaG91bGRu
J3QgaGF2ZSBhbnkgYmVoYXZpb3IgZGlmZmVyZW5jZS4KKworICAgICAgICAqIGNzcy9DU1NQcm9w
ZXJ0eUxvbmdoYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zZm9ybU9yaWdp
bkxvbmdoYW5kKToKKyAgICAgICAgQSBMYXlvdXRUZXN0IHNob3dzIHRoYXQgYSBwcm9wZXJ0eSB3
YXMgbWlzc2luZy4KKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojphc1RleHQpOgorICAgICAgICAqIGNzcy9TdHlsZVBy
b3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0eWxlUHJvcGVydHlT
ZXQpOgorCiAyMDEyLTAzLTIyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgSlNWYWx1ZTo6aXNGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCmluZGV4IGJmNzNhMzg1MzQ5YzIzODk4MjdlMTI5
NDdkNTM1M2VmNTU2NjJkOTguLjMxYzA5YWViM2E2NWQ2YjU3OTM4NGRlZWExMWE1MGQ3Mjk5YmM1
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKQEAgLTM4
Niw3ICszODYsOCBAQCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCB0cmFuc2Zvcm1PcmlnaW5Q
cm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WCwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZCisgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aCiAgICAgfTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kLCAodHJhbnNmb3Jt
T3JpZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0
aWVzKSkpOwogICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCA2NTQ1MmVjM2IwYWE4MTUwNzQ3
OTI5ZjE3ODBmYWJkZDY0NmJmNGZlLi5lNjkwYzQ1ZGFiODcyMDMxYjFlYmQxM2MzZjA2NTBmMGZh
ZWVkZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC0xMDEs
MTczICsxMDEsMTA1IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVZhbHVl
KGludCBwcm9wZXJ0eUlEKSBjb25zdAogCiAgICAgLy8gU2hvcnRoYW5kIGFuZCA0LXZhbHVlcyBw
cm9wZXJ0aWVzCiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7Ci0gICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJTcGFjaW5nOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1sy
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcgfTsKLSAgICAgICAgICAgIHJldHVybiBib3Jk
ZXJTcGFjaW5nVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjogewotICAgICAgICAgICAgLy8gRklYTUU6IElzIHRo
aXMgY29ycmVjdD8gVGhlIGNvZGUgaW4gY3NzcGFyc2VyLmNwcCBpcyBjb25mdXNpbmcKLSAgICAg
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OwotICAgICAgICAgICAg
cmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDogewotICAgICAgICAgICAg
Y29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgs
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRM
YXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzldID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb25ZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U1Byb3BlcnR5QmFja2dyb3VuZENsaXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIH07Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzNdWzRdID0ge3sgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdp
ZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlIH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVy
VG9wQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29s
b3IgfX07Ci0gICAgICAgICAgICBTdHJpbmcgcmVzOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICBTdHJpbmcgdmFsdWUgPSBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzW2ldKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghcmVzLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9ICIgIjsK
LSAgICAgICAgICAgICAgICAgICAgcmVzICs9IHZhbHVlOwotICAgICAgICAgICAgICAgIH0KKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKKyAgICAgICAgcmV0dXJuIGJvcmRlclNw
YWNpbmdWYWx1ZShib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvbjoKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRW
YWx1ZShiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdDoKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1
ZShiYWNrZ3JvdW5kTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6
IHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbOV0gPSB7IENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvblgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIH07CisgICAgICAgIHJldHVybiBnZXRM
YXllcmVkU2hvcnRoYW5kVmFsdWUoQ1NTUHJvcGVydHlMb25naGFuZChwcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpKSk7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXI6IHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM11bNF0gPSB7eyBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRo
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgQ1NTUHJvcGVydHlC
b3JkZXJUb3BTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVy
VG9wQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfX07CisgICAg
ICAgIFN0cmluZyByZXM7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChwcm9wZXJ0aWVzKTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBn
ZXRDb21tb25WYWx1ZShDU1NQcm9wZXJ0eUxvbmdoYW5kKHByb3BlcnRpZXNbaV0sIFdURl9BUlJB
WV9MRU5HVEgocHJvcGVydGllc1tpXSkpKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcy5pc051bGwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmVzICs9ICIgIjsKKyAgICAgICAgICAgICAgICByZXMgKz0gdmFsdWU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJUb3A6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3J9OwotICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHBy
b3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dDogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xv
cn07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbTogewotICAgICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcn07Ci0gICAg
ICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6IHsKLSAgICAgICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3J9OwotICAgICAgICAgICAgcmV0dXJuIGdl
dFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlPdXRsaW5lOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9
IHsgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNv
bG9yIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOiB7Ci0gICAg
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhwcm9w
ZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6
IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJv
cmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwg
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfTsKLSAgICAgICAgICAgIHJldHVybiBnZXQ0VmFs
dWVzKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTdHlsZTogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSB9OwotICAgICAgICAgICAgcmV0dXJu
IGdldDRWYWx1ZXMocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhGbG93OiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1td
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0Rmxl
eFdyYXAgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVz
KTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKLSAgICAgICAgICAg
IHJldHVybiBmb250VmFsdWUoKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjogewot
ICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5TWFyZ2lu
VG9wLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpbkxl
ZnQgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKHByb3BlcnRpZXMpOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzogewotICAgICAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0
eU92ZXJmbG93WSB9OwotICAgICAgICAgICAgcmV0dXJuIGdldENvbW1vblZhbHVlKHByb3BlcnRp
ZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOiB7Ci0gICAg
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlQYWRkaW5nVG9w
LCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIENTU1Byb3BlcnR5UGFkZGluZ0xl
ZnQgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKHByb3BlcnRpZXMpOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6IHsKLSAgICAgICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1By
b3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSB9OwotICAgICAgICAgICAgcmV0dXJu
IGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJ
cyB0aGlzIGNvcnJlY3Q/IFRoZSBjb2RlIGluIGNzc3BhcnNlci5jcHAgaXMgY29uZnVzaW5nCi0g
ICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkgfTsKLSAgICAgICAg
ICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6IHsKLSAgICAgICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZIH07Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b24sIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4gfTsKLSAgICAgICAgICAg
IHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjogewotICAgICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtT3JpZ2luWCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aIH07Ci0gICAg
ICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246IHsKLSAgICAgICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Q
cm9wZXJ0eSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5IH07Ci0gICAg
ICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246IHsKLSAgICAg
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzddID0geyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbk5hbWUsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bkl0ZXJhdGlvbkNvdW50LCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkZpbGxNb2RlIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFu
ZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRXcmFwOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRXcmFwRmxvdywgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luLAotICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcgfTsKLSAgICAgICAgICAg
IHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKICAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcmVzOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgorICAg
ICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUoYm9yZGVyVG9wTG9uZ2hhbmQoKSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgorICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5k
VmFsdWUoYm9yZGVyUmlnaHRMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tOgorICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUoYm9yZGVyQm90dG9tTG9u
Z2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CisgICAgICAgIHJldHVy
biBnZXRTaG9ydGhhbmRWYWx1ZShib3JkZXJMZWZ0TG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU91dGxpbmU6CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShvdXRsaW5l
TG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgorICAgICAgICBy
ZXR1cm4gZ2V0NFZhbHVlcyhib3JkZXJDb2xvckxvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJXaWR0aDoKKyAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMoYm9yZGVyV2lkdGhM
b25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CisgICAgICAgIHJl
dHVybiBnZXQ0VmFsdWVzKGJvcmRlclN0eWxlTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhGbG93OgorICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUod2Vi
a2l0RmxleEZsb3dMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKKyAgICAg
ICAgcmV0dXJuIGZvbnRWYWx1ZSgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAg
ICAgIHJldHVybiBnZXQ0VmFsdWVzKG1hcmdpbkxvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlPdmVyZmxvdzoKKyAgICAgICAgcmV0dXJuIGdldENvbW1vblZhbHVlKG92ZXJmbG93TG9u
Z2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CisgICAgICAgIHJldHVybiBn
ZXQ0VmFsdWVzKHBhZGRpbmdMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0
eWxlOgorICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUobGlzdFN0eWxlTG9uZ2hhbmQo
KSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjoKKyAgICAgICAgcmV0
dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRNYXNrTG9uZ2hhbmQoKSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6CisgICAgICAgIHJldHVybiBnZXRMYXll
cmVkU2hvcnRoYW5kVmFsdWUod2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCkpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrOgorICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFu
ZFZhbHVlKHdlYmtpdE1hc2tMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luOgorICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUod2Via2l0
VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb246CisgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUod2Via2l0
VHJhbnNpdGlvbkxvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b246CisgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUod2Via2l0QW5pbWF0
aW9uTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXA6CisgICAgICAg
IHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRXcmFwTG9uZ2hhbmQoKSk7CiAjaWYgRU5B
QkxFKFNWRykKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlcjogewotICAgICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlN
YXJrZXJTdGFydCk7Ci0gICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlLT5jc3NUZXh0KCk7Ci0gICAgICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5TWFy
a2VyOiB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5TWFya2VyU3RhcnQpOworICAgICAgICBpZiAodmFsdWUpCisgICAgICAg
ICAgICByZXR1cm4gdmFsdWUtPmNzc1RleHQoKTsKKyAgICB9CiAjZW5kaWYKICAgICB9CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3Bh
Y2luZ1ZhbHVlKGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdKSBjb25zdAorU3RyaW5nIFN0eWxlUHJv
cGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBs
b25naGFuZCkgY29uc3QKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGhvcml6b250YWxWYWx1ZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1swXSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVl
PiB2ZXJ0aWNhbFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzWzFdKTsKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IGhvcml6b250YWxWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUo
bG9uZ2hhbmQucHJvcGVydGllcygpWzBdKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZlcnRpY2Fs
VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsxXSk7CiAK
ICAgICBpZiAoIWhvcml6b250YWxWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
MzM2LDEzICsyNjgsMTMgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmZvbnRWYWx1ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCi1TdHJpbmcgU3R5bGVQcm9w
ZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBpbnQqIHByb3BlcnRpZXMpIGNvbnN0CitTdHJpbmcg
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBs
b25naGFuZCkgY29uc3QKIHsKICAgICAvLyBBc3N1bWUgdGhlIHByb3BlcnRpZXMgYXJlIGluIHRo
ZSB1c3VhbCBvcmRlciB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQuCi0gICAgUmVmUHRyPENTU1Zh
bHVlPiB0b3BWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1swXSk7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0
aWVzWzFdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGJvdHRvbVZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShwcm9wZXJ0aWVzWzJdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnRWYWx1ZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1szXSk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiB0b3BWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzBd
KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVl
KGxvbmdoYW5kLnByb3BlcnRpZXMoKVsxXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBib3R0b21W
YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzJdKTsKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnRWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hh
bmQucHJvcGVydGllcygpWzNdKTsKIAogICAgIC8vIEFsbCA0IHByb3BlcnRpZXMgbXVzdCBiZSBz
cGVjaWZpZWQuCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAhYm90dG9tVmFs
dWUgfHwgIWxlZnRWYWx1ZSkKQEAgLTM2MywxNiArMjk1LDE3IEBAIFN0cmluZyBTdHlsZVByb3Bl
cnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IGludCogcHJvcGVydGllcykgY29uc3QKICAgICByZXR1
cm4gcmVzOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFu
ZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90IHNpemUpIGNvbnN0CitTdHJpbmcg
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAogewogICAgIFN0cmluZyByZXM7CiAKKyAgICBj
b25zdCB1bnNpZ25lZCBzaXplID0gbG9uZ2hhbmQubGVuZ3RoKCk7CiAgICAgLy8gQmVnaW4gYnkg
Y29sbGVjdGluZyB0aGUgcHJvcGVydGllcyBpbnRvIGFuIGFycmF5LgogICAgIFZlY3RvcjwgUmVm
UHRyPENTU1ZhbHVlPiA+IHZhbHVlcyhzaXplKTsKICAgICBzaXplX3QgbnVtTGF5ZXJzID0gMDsK
IAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIHZhbHVl
c1tpXSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICB2YWx1ZXNbaV0gPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIGlmICh2YWx1
ZXNbaV0pIHsKICAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0tPmlzVmFsdWVMaXN0KCkpIHsKICAg
ICAgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1Zh
bHVlTGlzdCo+KHZhbHVlc1tpXS5nZXQoKSk7CkBAIC0zODksNyArMzIyLDcgQEAgU3RyaW5nIFN0
eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3Bl
cnRpZXMsIHNpemVfdAogICAgICAgICBib29sIHVzZVJlcGVhdFhTaG9ydGhhbmQgPSBmYWxzZTsK
ICAgICAgICAgYm9vbCB1c2VSZXBlYXRZU2hvcnRoYW5kID0gZmFsc2U7CiAgICAgICAgIGJvb2wg
dXNlU2luZ2xlV29yZFNob3J0aGFuZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IHNpemU7IGorKykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2l6
ZTsgaisrKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlOwogICAgICAgICAg
ICAgaWYgKHZhbHVlc1tqXSkgewogICAgICAgICAgICAgICAgIGlmICh2YWx1ZXNbal0tPmlzVmFs
dWVMaXN0KCkpCkBAIC0zOTgsNyArMzMxLDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6Omdl
dExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdAogICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1tqXTsKIAogICAgICAgICAgICAgICAgICAg
ICAvLyBDb2xvciBvbmx5IGJlbG9uZ3MgaW4gdGhlIGxhc3QgbGF5ZXIuCi0gICAgICAgICAgICAg
ICAgICAgIGlmIChwcm9wZXJ0aWVzW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0gPT0gQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
ICE9IG51bUxheWVycyAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAw
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgIT0gMCkgLy8gT3RoZXIgc2luZ2xl
dG9ucyBvbmx5IGJlbG9uZyBpbiB0aGUgZmlyc3QgbGF5ZXIuCkBAIC00MDksMTAgKzM0MiwxMCBA
QCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0
IGludCogcHJvcGVydGllcywgc2l6ZV90CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlcG9y
dCBiYWNrZ3JvdW5kLXJlcGVhdCBhcyBpdCB3YXMgd3JpdHRlbiBpbiB0aGUgQ1NTLiBJZiB0aGUg
cHJvcGVydHkgaXMgaW1wbGljaXQsCiAgICAgICAgICAgICAvLyB0aGVuIGl0IHdhcyB3cml0dGVu
IHdpdGggb25seSBvbmUgdmFsdWUuIEhlcmUgd2UgZmlndXJlIG91dCB3aGljaCB2YWx1ZSB0aGF0
IHdhcyBzbyB3ZSBjYW4KICAgICAgICAgICAgIC8vIHJlcG9ydCBiYWNrIGNvcnJlY3RseS4KLSAg
ICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVh
dFggJiYgaXNQcm9wZXJ0eUltcGxpY2l0KHByb3BlcnRpZXNbal0pKSB7CisgICAgICAgICAgICBp
ZiAobG9uZ2hhbmQucHJvcGVydGllcygpW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVh
dFggJiYgaXNQcm9wZXJ0eUltcGxpY2l0KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXSkpIHsKIAog
ICAgICAgICAgICAgICAgIC8vIEJVRyA0OTA1NTogbWFrZSBzdXJlIHRoZSB2YWx1ZSB3YXMgbm90
IHJlc2V0IGluIHRoZSBsYXllciBjaGVjayBqdXN0IGFib3ZlLgotICAgICAgICAgICAgICAgIGlm
IChqIDwgc2l6ZSAtIDEgJiYgcHJvcGVydGllc1tqICsgMV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WSAmJiB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIChqIDwgc2l6ZSAtIDEg
JiYgbG9uZ2hhbmQucHJvcGVydGllcygpW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRZICYmIHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
eVZhbHVlOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IG5leHRWYWx1ZSA9
IHZhbHVlc1tqICsgMV07CiAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VmFsdWUtPmlzVmFs
dWVMaXN0KCkpCkBAIC00NjQsMTIgKzM5NywxMiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6
Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90CiAg
ICAgcmV0dXJuIHJlczsKIH0KIAotU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFu
ZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90IHNpemUpIGNvbnN0CitTdHJpbmcg
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgbG9uZ2hhbmQpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlczsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNp
dChwcm9wZXJ0aWVzW2ldKSkgewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1Byb3Bl
cnR5SW1wbGljaXQobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKSkgeworICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVy
dGllcygpW2ldKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBwcm92aWRlIGRlZmF1bHQgdmFsdWUg
aWYgIXZhbHVlCiAgICAgICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXJlcy5pc051bGwoKSkKQEAgLTQ4MiwxMSArNDE1LDExIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5
U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdCBzaXpl
KSBjCiB9CiAKIC8vIG9ubHkgcmV0dXJucyBhIG5vbi1udWxsIHZhbHVlIGlmIGFsbCBwcm9wZXJ0
aWVzIGhhdmUgdGhlIHNhbWUsIG5vbi1udWxsIHZhbHVlCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNl
dDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3Qgc2l6ZSkgY29u
c3QKK1N0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZShjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbaV0pOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsb25naGFuZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVtpXSk7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgICAgIFN0cmluZyB0ZXh0ID0gdmFsdWUtPmNzc1RleHQoKTsKQEAgLTY3NSw5
ICs2MDgsOCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29uc3QKICAgICAv
LyBJdCB3b3VsZCBiZSBhIGJldHRlciBzb2x1dGlvbiBpZiBiYWNrZ3JvdW5kLXBvc2l0aW9uIHdh
cyBDU1NfUEFJUi4KICAgICBpZiAocG9zaXRpb25YUHJvcCAmJiBwb3NpdGlvbllQcm9wICYmIHBv
c2l0aW9uWFByb3AtPmlzSW1wb3J0YW50KCkgPT0gcG9zaXRpb25ZUHJvcC0+aXNJbXBvcnRhbnQo
KSkgewogICAgICAgICBTdHJpbmcgcG9zaXRpb25WYWx1ZTsKLSAgICAgICAgY29uc3QgaW50IHBy
b3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25ZIH07CiAgICAgICAgIGlmIChwb3NpdGlvblhQcm9wLT52YWx1
ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8IHBvc2l0aW9uWVByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0
KCkpCi0gICAgICAgICAgICBwb3NpdGlvblZhbHVlID0gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KHByb3BlcnRpZXMpOworICAgICAgICAgICAgcG9zaXRpb25WYWx1ZSA9IGdldExheWVyZWRTaG9y
dGhhbmRWYWx1ZShiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCgpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcG9zaXRpb25WYWx1ZSA9IHBvc2l0aW9uWFByb3AtPnZhbHVlKCktPmNzc1Rl
eHQoKSArICIgIiArIHBvc2l0aW9uWVByb3AtPnZhbHVlKCktPmNzc1RleHQoKTsKICAgICAgICAg
cmVzdWx0ICs9ICJiYWNrZ3JvdW5kLXBvc2l0aW9uOiAiICsgcG9zaXRpb25WYWx1ZSArIChwb3Np
dGlvblhQcm9wLT5pc0ltcG9ydGFudCgpID8gIiAhaW1wb3J0YW50IiA6ICIiKSArICI7ICI7CkBA
IC02OTEsOSArNjIzLDggQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmFzVGV4dCgpIGNvbnN0
CiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZG8gdGhlIHNhbWUgZm9yIGJhY2tncm91bmQtcmVw
ZWF0LgogICAgIGlmIChyZXBlYXRYUHJvcCAmJiByZXBlYXRZUHJvcCAmJiByZXBlYXRYUHJvcC0+
aXNJbXBvcnRhbnQoKSA9PSByZXBlYXRZUHJvcC0+aXNJbXBvcnRhbnQoKSkgewogICAgICAgICBT
dHJpbmcgcmVwZWF0VmFsdWU7Ci0gICAgICAgIGNvbnN0IGludCByZXBlYXRQcm9wZXJ0aWVzWzJd
ID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRZIH07CiAgICAgICAgIGlmIChyZXBlYXRYUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3Qo
KSB8fCByZXBlYXRZUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJl
cGVhdFZhbHVlID0gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHJlcGVhdFByb3BlcnRpZXMpOwor
ICAgICAgICAgICAgcmVwZWF0VmFsdWUgPSBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dy
b3VuZFJlcGVhdExvbmdoYW5kKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXBlYXRW
YWx1ZSA9IHJlcGVhdFhQcm9wLT52YWx1ZSgpLT5jc3NUZXh0KCkgKyAiICIgKyByZXBlYXRZUHJv
cC0+dmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgICAgICByZXN1bHQgKz0gImJhY2tncm91bmQtcmVw
ZWF0OiAiICsgcmVwZWF0VmFsdWUgKyAocmVwZWF0WFByb3AtPmlzSW1wb3J0YW50KCkgPyAiICFp
bXBvcnRhbnQiIDogIiIpICsgIjsgIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5o
CmluZGV4IDkwNDUyZmY2NzJkOTllM2JlYWVhMjBkZmMyNDUwZTcxZGY4NTRiNWUuLjk4OGNlNjIy
NTQ0YWIxYTQ2NWYwZTdlNzM4MTY5YjZiOGNiNWQ5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydHlTZXQuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NSdWxlOworY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENTU1N0eWxl
RGVjbGFyYXRpb247CiBjbGFzcyBLVVJMOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOwpAQCAtMTE3LDE4ICsxMTgsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogCi0gICAgU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGlu
dCogcHJvcGVydGllcywgc2l6ZV90KSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0Q29tbW9uVmFsdWUo
Y29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0OwotICAgIFN0cmluZyBnZXRMYXll
cmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0Owot
ICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IGludCogcHJvcGVydGllcykgY29uc3Q7Ci0gICAg
U3RyaW5nIGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBpbnQgcHJvcGVydGllc1syXSkgY29uc3Q7
CisgICAgU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
KSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYpIGNvbnN0OworICAgIFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKKyAgICBTdHJpbmcgYm9yZGVyU3BhY2luZ1Zh
bHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKICAgICBTdHJpbmcgZm9udFZh
bHVlKCkgY29uc3Q7CiAgICAgYm9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQo
aW50IHByb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXImIHJlc3VsdCkgY29uc3Q7CiAKLSAgICB0ZW1w
bGF0ZTxzaXplX3Qgc2l6ZT4gU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCAoJnBy
b3BlcnRpZXMpW3NpemVdKSBjb25zdCB7IHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0
aWVzLCBzaXplKTsgfQotICAgIHRlbXBsYXRlPHNpemVfdCBzaXplPiBTdHJpbmcgZ2V0Q29tbW9u
VmFsdWUoY29uc3QgaW50ICgmcHJvcGVydGllcylbc2l6ZV0pIGNvbnN0IHsgcmV0dXJuIGdldENv
bW1vblZhbHVlKHByb3BlcnRpZXMsIHNpemUpOyB9Ci0gICAgdGVtcGxhdGU8c2l6ZV90IHNpemU+
IFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50ICgmcHJvcGVydGllcylb
c2l6ZV0pIGNvbnN0IHsgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVz
LCBzaXplKTsgfQotCiAgICAgYm9vbCByZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShpbnQgcHJvcGVy
dHlJRCk7CiAgICAgYm9vbCBwcm9wZXJ0eU1hdGNoZXMoY29uc3QgQ1NTUHJvcGVydHkqKSBjb25z
dDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133343</attachid>
            <date>2012-03-22 14:20:31 -0700</date>
            <delta_ts>2012-03-26 04:27:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81960-20120322182013.patch</filename>
            <type>text/plain</type>
            <size>24115</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjZDk0MGRlNmU1NWJi
MjRmNjEyYjI0NDBiODAxNzU3ZGU2M2VlYi4uYmE1MzAxYWM1OWE5NjM4NWNhOTQzOTBhNDlkMzll
MmZkNzA2M2Y4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIFN0eWxlUHJvcGVydHlTZXQgYW5kIENTU1Byb3BlcnR5
TG9uZ2hhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZnJvbSBDU1NQcm9wZXJ0eUxvbmdoYW5kIGluIFN0
eWxlUHJvcGVydHlTZXQgaW4gb3JkZXIKKyAgICAgICAgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlv
bi4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiByZWZhY3RvcmluZyBvbmx5LCB3ZSBzaG91bGRu
J3QgaGF2ZSBhbnkgYmVoYXZpb3IgZGlmZmVyZW5jZS4KKworICAgICAgICAqIGNzcy9DU1NQcm9w
ZXJ0eUxvbmdoYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zZm9ybU9yaWdp
bkxvbmdoYW5kKToKKyAgICAgICAgQSBMYXlvdXRUZXN0IHNob3dzIHRoYXQgYSBwcm9wZXJ0eSB3
YXMgbWlzc2luZy4KKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojphc1RleHQpOgorICAgICAgICAqIGNzcy9TdHlsZVBy
b3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0eWxlUHJvcGVydHlT
ZXQpOgorCiAyMDEyLTAzLTIyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgSlNWYWx1ZTo6aXNGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCmluZGV4IGJmNzNhMzg1MzQ5YzIzODk4MjdlMTI5
NDdkNTM1M2VmNTU2NjJkOTguLjMxYzA5YWViM2E2NWQ2YjU3OTM4NGRlZWExMWE1MGQ3Mjk5YmM1
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKQEAgLTM4
Niw3ICszODYsOCBAQCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCB0cmFuc2Zvcm1PcmlnaW5Q
cm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WCwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZCisgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aCiAgICAgfTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kLCAodHJhbnNmb3Jt
T3JpZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0
aWVzKSkpOwogICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCA2NTQ1MmVjM2IwYWE4MTUwNzQ3
OTI5ZjE3ODBmYWJkZDY0NmJmNGZlLi41YjZhYTRhMGY2NDk1ZGMwMzYwY2UwYzJjMzBhN2MzNzdj
MmI1ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC0xMDEs
MTczICsxMDEsODQgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUo
aW50IHByb3BlcnR5SUQpIGNvbnN0CiAKICAgICAvLyBTaG9ydGhhbmQgYW5kIDQtdmFsdWVzIHBy
b3BlcnRpZXMKICAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclNwYWNpbmc6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJd
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OwotICAgICAgICAgICAgcmV0dXJuIGJvcmRl
clNwYWNpbmdWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhp
cyBjb3JyZWN0PyBUaGUgY29kZSBpbiBjc3NwYXJzZXIuY3BwIGlzIGNvbmZ1c2luZwotICAgICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIH07Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OiB7Ci0gICAgICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OwotICAgICAgICAgICAgcmV0dXJuIGdldExh
eWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZDogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbOV0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdFgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0WSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvblksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4gfTsKLSAgICAgICAgICAgIHJldHVy
biBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbM11bNF0gPSB7eyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoIH0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUgfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJU
b3BDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
ciB9fTsKLSAgICAgICAgICAgIFN0cmluZyByZXM7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7ICsraSkgewotICAgICAgICAg
ICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0pOwotICAg
ICAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFyZXMuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gIiAiOwot
ICAgICAgICAgICAgICAgICAgICByZXMgKz0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgfQorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOgorICAgICAgICByZXR1cm4gYm9yZGVyU3Bh
Y2luZ1ZhbHVlKGJvcmRlclNwYWNpbmdMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uOgorICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZh
bHVlKGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0OgorICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KGJhY2tncm91bmRMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoK
KyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3JvdW5kTG9uZ2hh
bmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjogeworICAgICAgICBjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kIHByb3BlcnRpZXNbM10gPSB7IGJvcmRlcldpZHRoTG9uZ2hhbmQoKSwg
Ym9yZGVyU3R5bGVMb25naGFuZCgpLCBib3JkZXJDb2xvckxvbmdoYW5kKCkgfTsKKyAgICAgICAg
U3RyaW5nIHJlczsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVO
R1RIKHByb3BlcnRpZXMpOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENv
bW1vblZhbHVlKHByb3BlcnRpZXNbaV0pOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwo
KSkgeworICAgICAgICAgICAgICAgIGlmICghcmVzLmlzTnVsbCgpKQorICAgICAgICAgICAgICAg
ICAgICByZXMgKz0gIiAiOworICAgICAgICAgICAgICAgIHJlcyArPSB2YWx1ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclRvcDogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
M10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvcn07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJv
cGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
OiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9y
fTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOiB7Ci0gICAgICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21X
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yfTsKLSAgICAg
ICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDogewotICAgICAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcn07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU91dGxpbmU6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0g
eyBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29s
b3IgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6IHsKLSAgICAg
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKHByb3Bl
cnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDog
ewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9y
ZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1
ZXMocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clN0eWxlOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJv
cGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlIH07Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0NFZhbHVlcyhwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0RmxleEZsb3c6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4
V3JhcCB9OwotICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMp
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgotICAgICAgICAgICAg
cmV0dXJuIGZvbnRWYWx1ZSgpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOiB7Ci0g
ICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlNYXJnaW5U
b3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2luTGVm
dCB9OwotICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVydGllcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OiB7Ci0gICAgICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5
T3ZlcmZsb3dZIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Q29tbW9uVmFsdWUocHJvcGVydGll
cyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6IHsKLSAgICAg
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3As
IENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgQ1NTUHJvcGVydHlQYWRkaW5nTGVm
dCB9OwotICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVydGllcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZTogewotICAgICAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTUHJv
cGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlIH07Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjogewotICAgICAgICAgICAgLy8gRklYTUU6IElz
IHRoaXMgY29ycmVjdD8gVGhlIGNvZGUgaW4gY3NzcGFyc2VyLmNwcCBpcyBjb25mdXNpbmcKLSAg
ICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OwotICAgICAgICAg
ICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdDogewotICAgICAgICAg
ICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICAgICAgICAgIHJldHVybiBn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tSZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
biwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiB9OwotICAgICAgICAgICAg
cmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOiB7Ci0gICAgICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW5YLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblogfTsKLSAgICAg
ICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjogewotICAgICAgICAgICAg
Y29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblBy
b3BlcnR5LCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25U
aW1pbmdGdW5jdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkgfTsKLSAgICAg
ICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjogewotICAgICAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbN10gPSB7IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uTmFtZSwgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRp
bWluZ0Z1bmN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
SXRlcmF0aW9uQ291bnQsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRmlsbE1vZGUgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFdyYXA6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdFdyYXBGbG93LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCi0gICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwotICAgICAgICAgICAg
cmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwogICAgICAgICB9CisgICAgICAg
IHJldHVybiByZXM7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6CisgICAg
ICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShib3JkZXJUb3BMb25naGFuZCgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRW
YWx1ZShib3JkZXJSaWdodExvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b206CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShib3JkZXJCb3R0b21Mb25n
aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKKyAgICAgICAgcmV0dXJu
IGdldFNob3J0aGFuZFZhbHVlKGJvcmRlckxlZnRMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5T3V0bGluZToKKyAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKG91dGxpbmVM
b25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgICAgIHJl
dHVybiBnZXQ0VmFsdWVzKGJvcmRlckNvbG9yTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlcldpZHRoOgorICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhib3JkZXJXaWR0aExv
bmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKKyAgICAgICAgcmV0
dXJuIGdldDRWYWx1ZXMoYm9yZGVyU3R5bGVMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0RmxleEZsb3c6CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZSh3ZWJr
aXRGbGV4Rmxvd0xvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgorICAgICAg
ICByZXR1cm4gZm9udFZhbHVlKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKKyAgICAg
ICAgcmV0dXJuIGdldDRWYWx1ZXMobWFyZ2luTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU92ZXJmbG93OgorICAgICAgICByZXR1cm4gZ2V0Q29tbW9uVmFsdWUob3ZlcmZsb3dMb25n
aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZzoKKyAgICAgICAgcmV0dXJuIGdl
dDRWYWx1ZXMocGFkZGluZ0xvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5
bGU6CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShsaXN0U3R5bGVMb25naGFuZCgp
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uOgorICAgICAgICByZXR1
cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdE1hc2tMb25naGFuZCgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdDoKKyAgICAgICAgcmV0dXJuIGdldExheWVy
ZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2s6CisgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUod2Via2l0TWFza0xvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW46CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRU
cmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbjoKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRU
cmFuc2l0aW9uTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bjoKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRBbmltYXRp
b25Mb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKKyAgICAgICAg
cmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHdlYmtpdFdyYXBMb25naGFuZCgpKTsKICNpZiBFTkFC
TEUoU1ZHKQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyOiB7Ci0gICAgICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eU1h
cmtlclN0YXJ0KTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWUtPmNzc1RleHQoKTsKLSAgICAgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJr
ZXI6IHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFs
dWUoQ1NTUHJvcGVydHlNYXJrZXJTdGFydCk7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiB2YWx1ZS0+Y3NzVGV4dCgpOworICAgIH0KICNlbmRpZgogICAgIH0KICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpib3JkZXJTcGFj
aW5nVmFsdWUoY29uc3QgaW50IHByb3BlcnRpZXNbMl0pIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9w
ZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxv
bmdoYW5kKSBjb25zdAogewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gaG9yaXpvbnRhbFZhbHVlID0g
Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzWzBdKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZlcnRpY2FsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbMV0pOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gaG9yaXpvbnRhbFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShs
b25naGFuZC5wcm9wZXJ0aWVzKClbMF0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmVydGljYWxW
YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpWzFdKTsKIAog
ICAgIGlmICghaG9yaXpvbnRhbFZhbHVlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0z
MzYsMTMgKzI0NywxMyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Zm9udFZhbHVlKCkgY29u
c3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBTdHlsZVByb3Bl
cnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IGludCogcHJvcGVydGllcykgY29uc3QKK1N0cmluZyBT
dHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxv
bmdoYW5kKSBjb25zdAogewogICAgIC8vIEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhl
IHVzdWFsIG9yZGVyIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IHRvcFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzWzBdKTsKLSAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRp
ZXNbMV0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKHByb3BlcnRpZXNbMl0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0g
Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzWzNdKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+
IHRvcFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMF0p
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmlnaHRWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUo
bG9uZ2hhbmQucHJvcGVydGllcygpWzFdKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGJvdHRvbVZh
bHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMl0pOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFu
ZC5wcm9wZXJ0aWVzKClbM10pOwogCiAgICAgLy8gQWxsIDQgcHJvcGVydGllcyBtdXN0IGJlIHNw
ZWNpZmllZC4KICAgICBpZiAoIXRvcFZhbHVlIHx8ICFyaWdodFZhbHVlIHx8ICFib3R0b21WYWx1
ZSB8fCAhbGVmdFZhbHVlKQpAQCAtMzYzLDE2ICsyNzQsMTcgQEAgU3RyaW5nIFN0eWxlUHJvcGVy
dHlTZXQ6OmdldDRWYWx1ZXMoY29uc3QgaW50KiBwcm9wZXJ0aWVzKSBjb25zdAogICAgIHJldHVy
biByZXM7CiB9CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3Qgc2l6ZSkgY29uc3QKK1N0cmluZyBT
dHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlczsKIAorICAgIGNv
bnN0IHVuc2lnbmVkIHNpemUgPSBsb25naGFuZC5sZW5ndGgoKTsKICAgICAvLyBCZWdpbiBieSBj
b2xsZWN0aW5nIHRoZSBwcm9wZXJ0aWVzIGludG8gYW4gYXJyYXkuCiAgICAgVmVjdG9yPCBSZWZQ
dHI8Q1NTVmFsdWU+ID4gdmFsdWVzKHNpemUpOwogICAgIHNpemVfdCBudW1MYXllcnMgPSAwOwog
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgdmFsdWVz
W2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIHZhbHVlc1tpXSA9IGdldFByb3Bl
cnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKICAgICAgICAgaWYgKHZhbHVl
c1tpXSkgewogICAgICAgICAgICAgaWYgKHZhbHVlc1tpXS0+aXNWYWx1ZUxpc3QoKSkgewogICAg
ICAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4odmFsdWVzW2ldLmdldCgpKTsKQEAgLTM4OSw3ICszMDEsNyBAQCBTdHJpbmcgU3R5
bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVy
dGllcywgc2l6ZV90CiAgICAgICAgIGJvb2wgdXNlUmVwZWF0WFNob3J0aGFuZCA9IGZhbHNlOwog
ICAgICAgICBib29sIHVzZVJlcGVhdFlTaG9ydGhhbmQgPSBmYWxzZTsKICAgICAgICAgYm9vbCB1
c2VTaW5nbGVXb3JkU2hvcnRoYW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgc2l6ZTsgaisrKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzaXpl
OyBqKyspIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWU7CiAgICAgICAgICAg
ICBpZiAodmFsdWVzW2pdKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlc1tqXS0+aXNWYWx1
ZUxpc3QoKSkKQEAgLTM5OCw3ICszMTAsNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0
TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90CiAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzW2pdOwogCiAgICAgICAgICAgICAgICAgICAg
IC8vIENvbG9yIG9ubHkgYmVsb25ncyBpbiB0aGUgbGFzdCBsYXllci4KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHByb3BlcnRpZXNbal0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkg
IT0gbnVtTGF5ZXJzIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSAhPSAwKSAvLyBPdGhlciBzaW5nbGV0
b25zIG9ubHkgYmVsb25nIGluIHRoZSBmaXJzdCBsYXllci4KQEAgLTQwOSwxMCArMzIxLDEwIEBA
IFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3Qg
aW50KiBwcm9wZXJ0aWVzLCBzaXplX3QKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVwb3J0
IGJhY2tncm91bmQtcmVwZWF0IGFzIGl0IHdhcyB3cml0dGVuIGluIHRoZSBDU1MuIElmIHRoZSBw
cm9wZXJ0eSBpcyBpbXBsaWNpdCwKICAgICAgICAgICAgIC8vIHRoZW4gaXQgd2FzIHdyaXR0ZW4g
d2l0aCBvbmx5IG9uZSB2YWx1ZS4gSGVyZSB3ZSBmaWd1cmUgb3V0IHdoaWNoIHZhbHVlIHRoYXQg
d2FzIHNvIHdlIGNhbgogICAgICAgICAgICAgLy8gcmVwb3J0IGJhY2sgY29ycmVjdGx5LgotICAg
ICAgICAgICAgaWYgKHByb3BlcnRpZXNbal0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WCAmJiBpc1Byb3BlcnR5SW1wbGljaXQocHJvcGVydGllc1tqXSkpIHsKKyAgICAgICAgICAgIGlm
IChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WCAmJiBpc1Byb3BlcnR5SW1wbGljaXQobG9uZ2hhbmQucHJvcGVydGllcygpW2pdKSkgewogCiAg
ICAgICAgICAgICAgICAgLy8gQlVHIDQ5MDU1OiBtYWtlIHN1cmUgdGhlIHZhbHVlIHdhcyBub3Qg
cmVzZXQgaW4gdGhlIGxheWVyIGNoZWNrIGp1c3QgYWJvdmUuCi0gICAgICAgICAgICAgICAgaWYg
KGogPCBzaXplIC0gMSAmJiBwcm9wZXJ0aWVzW2ogKyAxXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRZICYmIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgaWYgKGogPCBzaXplIC0gMSAm
JiBsb25naGFuZC5wcm9wZXJ0aWVzKClbaiArIDFdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdFkgJiYgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB5
VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gbmV4dFZhbHVlID0g
dmFsdWVzW2ogKyAxXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRWYWx1ZS0+aXNWYWx1
ZUxpc3QoKSkKQEAgLTQ2NCwxMiArMzc2LDEyIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QKICAg
ICByZXR1cm4gcmVzOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5k
VmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3Qgc2l6ZSkgY29uc3QKK1N0cmluZyBT
dHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBsb25naGFuZCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmICghaXNQcm9wZXJ0eUltcGxpY2l0
KHByb3BlcnRpZXNbaV0pKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0g
Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoIWlzUHJvcGVy
dHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pKSB7CisgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0
aWVzKClbaV0pOwogICAgICAgICAgICAgLy8gRklYTUU6IHByb3ZpZGUgZGVmYXVsdCB2YWx1ZSBp
ZiAhdmFsdWUKICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgIGlmICgh
cmVzLmlzTnVsbCgpKQpAQCAtNDgyLDExICszOTQsMTEgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlT
ZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90IHNpemUp
IGMKIH0KIAogLy8gb25seSByZXR1cm5zIGEgbm9uLW51bGwgdmFsdWUgaWYgYWxsIHByb3BlcnRp
ZXMgaGF2ZSB0aGUgc2FtZSwgbm9uLW51bGwgdmFsdWUKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0
OjpnZXRDb21tb25WYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdCBzaXplKSBjb25z
dAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZhbHVlKGNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAogewogICAgIFN0cmluZyByZXM7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVy
dGllcygpW2ldKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICAgICAgU3RyaW5nIHRleHQgPSB2YWx1ZS0+Y3NzVGV4dCgpOwpAQCAtNjc1LDkg
KzU4Nyw4IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojphc1RleHQoKSBjb25zdAogICAgIC8v
IEl0IHdvdWxkIGJlIGEgYmV0dGVyIHNvbHV0aW9uIGlmIGJhY2tncm91bmQtcG9zaXRpb24gd2Fz
IENTU19QQUlSLgogICAgIGlmIChwb3NpdGlvblhQcm9wICYmIHBvc2l0aW9uWVByb3AgJiYgcG9z
aXRpb25YUHJvcC0+aXNJbXBvcnRhbnQoKSA9PSBwb3NpdGlvbllQcm9wLT5pc0ltcG9ydGFudCgp
KSB7CiAgICAgICAgIFN0cmluZyBwb3NpdGlvblZhbHVlOwotICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblkgfTsKICAgICAgICAgaWYgKHBvc2l0aW9uWFByb3AtPnZhbHVl
KCktPmlzVmFsdWVMaXN0KCkgfHwgcG9zaXRpb25ZUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3Qo
KSkKLSAgICAgICAgICAgIHBvc2l0aW9uVmFsdWUgPSBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUo
cHJvcGVydGllcyk7CisgICAgICAgICAgICBwb3NpdGlvblZhbHVlID0gZ2V0TGF5ZXJlZFNob3J0
aGFuZFZhbHVlKGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwb3NpdGlvblZhbHVlID0gcG9zaXRpb25YUHJvcC0+dmFsdWUoKS0+Y3NzVGV4
dCgpICsgIiAiICsgcG9zaXRpb25ZUHJvcC0+dmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgICAgICBy
ZXN1bHQgKz0gImJhY2tncm91bmQtcG9zaXRpb246ICIgKyBwb3NpdGlvblZhbHVlICsgKHBvc2l0
aW9uWFByb3AtPmlzSW1wb3J0YW50KCkgPyAiICFpbXBvcnRhbnQiIDogIiIpICsgIjsgIjsKQEAg
LTY5MSw5ICs2MDIsOCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29uc3QK
ICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkbyB0aGUgc2FtZSBmb3IgYmFja2dyb3VuZC1yZXBl
YXQuCiAgICAgaWYgKHJlcGVhdFhQcm9wICYmIHJlcGVhdFlQcm9wICYmIHJlcGVhdFhQcm9wLT5p
c0ltcG9ydGFudCgpID09IHJlcGVhdFlQcm9wLT5pc0ltcG9ydGFudCgpKSB7CiAgICAgICAgIFN0
cmluZyByZXBlYXRWYWx1ZTsKLSAgICAgICAgY29uc3QgaW50IHJlcGVhdFByb3BlcnRpZXNbMl0g
PSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdFkgfTsKICAgICAgICAgaWYgKHJlcGVhdFhQcm9wLT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgp
IHx8IHJlcGVhdFlQcm9wLT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgcmVw
ZWF0VmFsdWUgPSBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocmVwZWF0UHJvcGVydGllcyk7Cisg
ICAgICAgICAgICByZXBlYXRWYWx1ZSA9IGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3Jv
dW5kUmVwZWF0TG9uZ2hhbmQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcGVhdFZh
bHVlID0gcmVwZWF0WFByb3AtPnZhbHVlKCktPmNzc1RleHQoKSArICIgIiArIHJlcGVhdFlQcm9w
LT52YWx1ZSgpLT5jc3NUZXh0KCk7CiAgICAgICAgIHJlc3VsdCArPSAiYmFja2dyb3VuZC1yZXBl
YXQ6ICIgKyByZXBlYXRWYWx1ZSArIChyZXBlYXRYUHJvcC0+aXNJbXBvcnRhbnQoKSA/ICIgIWlt
cG9ydGFudCIgOiAiIikgKyAiOyAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgK
aW5kZXggOTA0NTJmZjY3MmQ5OWUzYmVhZWEyMGRmYzI0NTBlNzFkZjg1NGI1ZS4uOTg4Y2U2MjI1
NDRhYjFhNDY1ZjBlN2U3MzgxNjliNmI4Y2I1ZDllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5oCkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENTU1J1bGU7CitjbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kOwogY2xhc3MgQ1NTU3R5bGVE
ZWNsYXJhdGlvbjsKIGNsYXNzIEtVUkw7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb247CkBAIC0xMTcsMTggKzExOCwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXROZWVk
c1N0eWxlUmVjYWxjKCk7CiAKLSAgICBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgaW50
KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0OwotICAgIFN0cmluZyBnZXRDb21tb25WYWx1ZShj
b25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdCkgY29uc3Q7Ci0gICAgU3RyaW5nIGdldExheWVy
ZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIGdldDRWYWx1ZXMoY29uc3QgaW50KiBwcm9wZXJ0aWVzKSBjb25zdDsKLSAgICBT
dHJpbmcgYm9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdKSBjb25zdDsK
KyAgICBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYp
IGNvbnN0OworICAgIFN0cmluZyBnZXRDb21tb25WYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJikgY29uc3Q7CisgICAgU3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7CisgICAgU3RyaW5nIGdldDRWYWx1ZXMoY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFN0cmluZyBib3JkZXJTcGFjaW5nVmFs
dWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OwogICAgIFN0cmluZyBmb250VmFs
dWUoKSBjb25zdDsKICAgICBib29sIGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChp
bnQgcHJvcGVydHlJRCwgU3RyaW5nQnVpbGRlciYgcmVzdWx0KSBjb25zdDsKIAotICAgIHRlbXBs
YXRlPHNpemVfdCBzaXplPiBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgaW50ICgmcHJv
cGVydGllcylbc2l6ZV0pIGNvbnN0IHsgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRp
ZXMsIHNpemUpOyB9Ci0gICAgdGVtcGxhdGU8c2l6ZV90IHNpemU+IFN0cmluZyBnZXRDb21tb25W
YWx1ZShjb25zdCBpbnQgKCZwcm9wZXJ0aWVzKVtzaXplXSkgY29uc3QgeyByZXR1cm4gZ2V0Q29t
bW9uVmFsdWUocHJvcGVydGllcywgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4g
U3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQgKCZwcm9wZXJ0aWVzKVtz
aXplXSkgY29uc3QgeyByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMs
IHNpemUpOyB9Ci0KICAgICBib29sIHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KGludCBwcm9wZXJ0
eUlEKTsKICAgICBib29sIHByb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSopIGNvbnN0
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133774</attachid>
            <date>2012-03-26 04:28:00 -0700</date>
            <delta_ts>2012-03-26 04:33:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81960-20120326082742.patch</filename>
            <type>text/plain</type>
            <size>25300</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhjOWIyYmM5YmFhN2Q1
Yzg2MjI3YjU5ODk5YWU4Njc0M2MwM2ZmZS4uYzg5ZTdjNTY3NjE1YjQ3MzAyYjUwYWRlNDcyODVj
YTNhMTE2ZjA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTI2ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIFN0eWxlUHJvcGVydHlTZXQgYW5kIENTU1Byb3BlcnR5
TG9uZ2hhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAg
IFVzZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZnJvbSBDU1NQcm9wZXJ0eUxvbmdoYW5kIGluIFN0
eWxlUHJvcGVydHlTZXQgaW4gb3JkZXIKKyAgICAgICAgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlv
bi4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiByZWZhY3RvcmluZyBvbmx5LCB3ZSBzaG91bGRu
J3QgaGF2ZSBhbnkgYmVoYXZpb3IgZGlmZmVyZW5jZS4KKworICAgICAgICAqIGNzcy9DU1NQcm9w
ZXJ0eUxvbmdoYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRMb25naGFuZCk6
CisgICAgICAgIFJlLW9yZGVyIHRoZSBhcnJheSB0byBtYXRjaCB0aGUgc3BlYyBkZWZhdWx0IG9y
ZGVyLgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQpOgor
ICAgICAgICBBIExheW91dFRlc3Qgc2hvd3MgdGhhdCBhIHByb3BlcnR5IHdhcyBtaXNzaW5nLgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9w
ZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UHJvcGVydHlTZXQ6OmFzVGV4dCk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisKIDIwMTIt
MDMtMjYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBkZWRpY2F0ZWQgd29ya2VyIGluc3BlY3RvciBpcyBl
bXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCmluZGV4IDE5
MjE2MjBiMjQzNjI0NTA5NDhmMzFmNzQzYmRhYjM1MjIzNWM0ZmEuLmUxN2ViNDU5YzA4YTgzOGU0
ZDNhNTQ5MzBhY2U0MGJkOTc3M2Y1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlMb25naGFuZC5jcHAKQEAgLTMwLDE1ICszMCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKQogewogICAgIHN0
YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q2xpcCwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZEltYWdlLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmln
aW4sCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsCisgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFksCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0
dGFjaG1lbnQsCiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKICAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLAotICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRYLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCisg
ICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsCisgICAgICAgIENTU1Byb3BlcnR5QmFj
a2dyb3VuZE9yaWdpbgogICAgIH07CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCBiYWNrZ3JvdW5kTG9uZ2hhbmQsIChiYWNrZ3JvdW5kUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUHJvcGVydGllcykpKTsKICAgICByZXR1cm4gYmFja2dy
b3VuZExvbmdoYW5kOwpAQCAtMzk5LDcgKzM5OSw4IEBAIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKCkKIHsKICAgICBzdGF0aWMgY29uc3Qg
aW50IHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpblkKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLAorICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbloKICAgICB9OwogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VHJhbnNmb3JtT3JpZ2lu
TG9uZ2hhbmQsICh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRy
YW5zZm9ybU9yaWdpblByb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJuIHdlYmtpdFRyYW5zZm9ybU9y
aWdpbkxvbmdoYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4
IGY2NTI0NjU2MDI0N2FhYWE3N2M4YjczYzJmOGEyYWM5NmU3ZmNlZDMuLmM0ZWFjYjFmZWIxYmYw
ODdkOWY0MjllNWU0MDc4ZDU2NzkzMzYxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQorI2luY2x1ZGUgPFFEZWJ1Zz4KIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMSwxNzMgKzEwMSw4NCBAQCBTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29u
c3QKIAogICAgIC8vIFNob3J0aGFuZCBhbmQgNC12YWx1ZXMgcHJvcGVydGllcwogICAgIHN3aXRj
aCAocHJvcGVydHlJRCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzog
ewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGlj
YWxTcGFjaW5nIH07Ci0gICAgICAgICAgICByZXR1cm4gYm9yZGVyU3BhY2luZ1ZhbHVlKHByb3Bl
cnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb246IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/IFRoZSBjb2Rl
IGluIGNzc3BhcnNlci5jcHAgaXMgY29uZnVzaW5nCi0gICAgICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblkgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hv
cnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXQ6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzJdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRZIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s5XSA9IHsgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZ
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFj
a2dyb3VuZEF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
bGlwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
QmFja2dyb3VuZE9yaWdpbiB9OwotICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhh
bmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXVs0XSA9IHt7IENT
U1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0V2lkdGggfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIH19OwotICAgICAgICAgICAg
U3RyaW5nIHJlczsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChwcm9wZXJ0aWVzKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVl
ID0gZ2V0Q29tbW9uVmFsdWUocHJvcGVydGllc1tpXSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2
YWx1ZS5pc051bGwoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcy5pc051bGwoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAiICI7Ci0gICAgICAgICAgICAgICAgICAg
IHJlcyArPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclNwYWNpbmc6CisgICAgICAgIHJldHVybiBib3JkZXJTcGFjaW5nVmFsdWUoYm9yZGVyU3Bh
Y2luZ0xvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246
CisgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3VuZFBvc2l0
aW9uTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6Cisg
ICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3VuZFJlcGVhdExv
bmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgorICAgICAgICByZXR1
cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGJhY2tncm91bmRMb25naGFuZCgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyOiB7CisgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQgcHJvcGVydGllc1szXSA9IHsgYm9yZGVyV2lkdGhMb25naGFuZCgpLCBib3JkZXJTdHlsZUxv
bmdoYW5kKCksIGJvcmRlckNvbG9yTG9uZ2hhbmQoKSB9OworICAgICAgICBTdHJpbmcgcmVzOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGll
cyk7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gZ2V0Q29tbW9uVmFsdWUocHJv
cGVydGllc1tpXSk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFyZXMuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJlcyArPSAi
ICI7CisgICAgICAgICAgICAgICAgcmVzICs9IHZhbHVlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJv
cGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9y
fTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6IHsKLSAgICAgICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3J9OwotICAgICAgICAg
ICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206IHsKLSAgICAgICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3J9OwotICAgICAgICAgICAgcmV0dXJu
IGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0OiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGll
c1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1
ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGlu
ZTogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5
T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciB9OwotICAgICAg
ICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjogewotICAgICAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciB9OwotICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVydGllcyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOiB7Ci0gICAgICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwg
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFdpZHRoIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhwcm9wZXJ0aWVz
KTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6IHsKLSAg
ICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0U3R5bGUgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKHBy
b3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4
RmxvdzogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwIH07Ci0gICAg
ICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6Ci0gICAgICAgICAgICByZXR1cm4gZm9udFZh
bHVlKCk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46IHsKLSAgICAgICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eU1hcmdpblRvcCwgQ1NTUHJvcGVy
dHlNYXJnaW5SaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0IH07Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0NFZhbHVlcyhwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzJdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1kgfTsK
LSAgICAgICAgICAgIHJldHVybiBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZzogewotICAgICAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgQ1NTUHJvcGVydHlQ
YWRkaW5nUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0IH07Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0NFZhbHVlcyhwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1szXSA9IHsgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NQcm9wZXJ0eUxpc3RTdHls
ZVBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRW
YWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0
PyBUaGUgY29kZSBpbiBjc3NwYXJzZXIuY3BwIGlzIGNvbmZ1c2luZwotICAgICAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwg
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0WSB9OwotICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9y
dGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFzazogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
TWFza0F0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tDbGlwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGF5
ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46IHsKLSAgICAgICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5ZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiB9OwotICAgICAgICAgICAgcmV0dXJu
IGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
LCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSB9OwotICAgICAgICAgICAgcmV0dXJu
IGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOiB7Ci0gICAgICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1s3XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLCBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24s
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3Vu
dCwgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9k
ZSB9OwotICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0
aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDogewot
ICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0
V3JhcEZsb3csIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwKLSAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0U2hv
cnRoYW5kVmFsdWUocHJvcGVydGllcyk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsK
KyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKKyAgICAgICAgcmV0dXJuIGdl
dFNob3J0aGFuZFZhbHVlKGJvcmRlclRvcExvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodDoKKyAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKGJvcmRlclJp
Z2h0TG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKKyAgICAg
ICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKGJvcmRlckJvdHRvbUxvbmdoYW5kKCkpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgorICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5k
VmFsdWUoYm9yZGVyTGVmdExvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5l
OgorICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUob3V0bGluZUxvbmdoYW5kKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKKyAgICAgICAgcmV0dXJuIGdldDRWYWx1
ZXMoYm9yZGVyQ29sb3JMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lk
dGg6CisgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKGJvcmRlcldpZHRoTG9uZ2hhbmQoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgorICAgICAgICByZXR1cm4gZ2V0NFZhbHVl
cyhib3JkZXJTdHlsZUxvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4
RmxvdzoKKyAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHdlYmtpdEZsZXhGbG93TG9u
Z2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6CisgICAgICAgIHJldHVybiBmb250
VmFsdWUoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgorICAgICAgICByZXR1cm4gZ2V0
NFZhbHVlcyhtYXJnaW5Mb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6
CisgICAgICAgIHJldHVybiBnZXRDb21tb25WYWx1ZShvdmVyZmxvd0xvbmdoYW5kKCkpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhwYWRk
aW5nTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKKyAgICAgICAg
cmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKGxpc3RTdHlsZUxvbmdoYW5kKCkpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246CisgICAgICAgIHJldHVybiBnZXRMYXllcmVk
U2hvcnRoYW5kVmFsdWUod2Via2l0TWFza0xvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0OgorICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZh
bHVlKHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFzazoKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRN
YXNrTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
bjoKKyAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHdlYmtpdFRyYW5zZm9ybU9yaWdp
bkxvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uOgorICAg
ICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdFRyYW5zaXRpb25Mb25n
aGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgorICAgICAgICBy
ZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgorICAgICAgICByZXR1cm4gZ2V0U2hv
cnRoYW5kVmFsdWUod2Via2l0V3JhcExvbmdoYW5kKCkpOwogI2lmIEVOQUJMRShTVkcpCi0gICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXI6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5TWFya2VyU3RhcnQpOwot
ICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS0+Y3Nz
VGV4dCgpOwotICAgICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlcjogeworICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eU1hcmtlclN0YXJ0KTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHZh
bHVlLT5jc3NUZXh0KCk7CisgICAgfQogI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZShjb25z
dCBpbnQgcHJvcGVydGllc1syXSkgY29uc3QKK1N0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpib3Jk
ZXJTcGFjaW5nVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKHByb3BlcnRpZXNbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmVydGljYWxWYWx1
ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1sxXSk7CisgICAgUmVmUHRyPENTU1Zh
bHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVswXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2ZXJ0aWNhbFZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMV0pOwogCiAgICAgaWYgKCFob3Jp
em9udGFsVmFsdWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTMzNiwxMyArMjQ3LDEz
IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpmb250VmFsdWUoKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRW
YWx1ZXMoY29uc3QgaW50KiBwcm9wZXJ0aWVzKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlT
ZXQ6OmdldDRWYWx1ZXMoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0
CiB7CiAgICAgLy8gQXNzdW1lIHRoZSBwcm9wZXJ0aWVzIGFyZSBpbiB0aGUgdXN1YWwgb3JkZXIg
dG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LgotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdG9wVmFsdWUg
PSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcmlnaHRWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1sxXSk7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlPiBib3R0b21WYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVy
dGllc1syXSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBsZWZ0VmFsdWUgPSBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKHByb3BlcnRpZXNbM10pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdG9wVmFsdWUgPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVswXSk7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9w
ZXJ0aWVzKClbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsyXSk7CisgICAgUmVmUHRyPENTU1Zh
bHVlPiBsZWZ0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMo
KVszXSk7CiAKICAgICAvLyBBbGwgNCBwcm9wZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVkLgogICAg
IGlmICghdG9wVmFsdWUgfHwgIXJpZ2h0VmFsdWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFs
dWUpCkBAIC0zNjMsMTYgKzI3NCwxNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZh
bHVlcyhjb25zdCBpbnQqIHByb3BlcnRpZXMpIGNvbnN0CiAgICAgcmV0dXJuIHJlczsKIH0KIAot
U3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBp
bnQqIHByb3BlcnRpZXMsIHNpemVfdCBzaXplKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlT
ZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBs
b25naGFuZCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwogCisgICAgY29uc3QgdW5zaWduZWQg
c2l6ZSA9IGxvbmdoYW5kLmxlbmd0aCgpOwogICAgIC8vIEJlZ2luIGJ5IGNvbGxlY3RpbmcgdGhl
IHByb3BlcnRpZXMgaW50byBhbiBhcnJheS4KICAgICBWZWN0b3I8IFJlZlB0cjxDU1NWYWx1ZT4g
PiB2YWx1ZXMoc2l6ZSk7CiAgICAgc2l6ZV90IG51bUxheWVycyA9IDA7CiAKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICB2YWx1ZXNbaV0gPSBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbaV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShs
b25naGFuZC5wcm9wZXJ0aWVzKClbaV0pOwogICAgICAgICBpZiAodmFsdWVzW2ldKSB7CiAgICAg
ICAgICAgICBpZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICAgICAg
Q1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1
ZXNbaV0uZ2V0KCkpOwpAQCAtMzg5LDcgKzMwMSw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0
OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QK
ICAgICAgICAgYm9vbCB1c2VSZXBlYXRYU2hvcnRoYW5kID0gZmFsc2U7CiAgICAgICAgIGJvb2wg
dXNlUmVwZWF0WVNob3J0aGFuZCA9IGZhbHNlOwogICAgICAgICBib29sIHVzZVNpbmdsZVdvcmRT
aG9ydGhhbmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzaXplOyBq
KyspIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNpemU7IGorKykgewogICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZTsKICAgICAgICAgICAgIGlmICh2YWx1ZXNb
al0pIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWVzW2pdLT5pc1ZhbHVlTGlzdCgpKQpAQCAt
Mzk4LDcgKzMxMCw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRo
YW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QKICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSB2YWx1ZXNbal07CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQ29sb3Igb25s
eSBiZWxvbmdzIGluIHRoZSBsYXN0IGxheWVyLgotICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydGllc1tqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgeworICAgICAgICAgICAg
ICAgICAgICBpZiAobG9uZ2hhbmQucHJvcGVydGllcygpW2pdID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBudW1MYXllcnMg
LSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChpICE9IDApIC8vIE90aGVyIHNpbmdsZXRvbnMgb25seSBiZWxv
bmcgaW4gdGhlIGZpcnN0IGxheWVyLgpAQCAtNDA5LDEwICszMjEsMTAgQEAgU3RyaW5nIFN0eWxl
UHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRp
ZXMsIHNpemVfdAogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZXBvcnQgYmFja2dyb3VuZC1y
ZXBlYXQgYXMgaXQgd2FzIHdyaXR0ZW4gaW4gdGhlIENTUy4gSWYgdGhlIHByb3BlcnR5IGlzIGlt
cGxpY2l0LAogICAgICAgICAgICAgLy8gdGhlbiBpdCB3YXMgd3JpdHRlbiB3aXRoIG9ubHkgb25l
IHZhbHVlLiBIZXJlIHdlIGZpZ3VyZSBvdXQgd2hpY2ggdmFsdWUgdGhhdCB3YXMgc28gd2UgY2Fu
CiAgICAgICAgICAgICAvLyByZXBvcnQgYmFjayBjb3JyZWN0bHkuCi0gICAgICAgICAgICBpZiAo
cHJvcGVydGllc1tqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYICYmIGlzUHJvcGVy
dHlJbXBsaWNpdChwcm9wZXJ0aWVzW2pdKSkgeworICAgICAgICAgICAgaWYgKGxvbmdoYW5kLnBy
b3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYICYmIGlzUHJvcGVy
dHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0pKSB7CiAKICAgICAgICAgICAgICAg
ICAvLyBCVUcgNDkwNTU6IG1ha2Ugc3VyZSB0aGUgdmFsdWUgd2FzIG5vdCByZXNldCBpbiB0aGUg
bGF5ZXIgY2hlY2sganVzdCBhYm92ZS4KLSAgICAgICAgICAgICAgICBpZiAoaiA8IHNpemUgLSAx
ICYmIHByb3BlcnRpZXNbaiArIDFdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgJiYg
dmFsdWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoaiA8IHNpemUgLSAxICYmIGxvbmdoYW5kLnBy
b3BlcnRpZXMoKVtqICsgMV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSAmJiB2YWx1
ZSkgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHlWYWx1ZTsKICAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBuZXh0VmFsdWUgPSB2YWx1ZXNbaiArIDFd
OwogICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFZhbHVlLT5pc1ZhbHVlTGlzdCgpKQpAQCAt
NDYwLDE2ICszNzIsMTYgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9y
dGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdAogICAgICAgICAgICAgcmVz
ICs9IGxheWVyUmVzOwogICAgICAgICB9CiAgICAgfQotCisgICAgcVdhcm5pbmcoKTw8IlJFUyI8
PFFTdHJpbmcocmVzKTsKICAgICByZXR1cm4gcmVzOwogfQogCi1TdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3Qgc2l6
ZSkgY29uc3QKK1N0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVz
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmICgh
aXNQcm9wZXJ0eUltcGxpY2l0KHByb3BlcnRpZXNbaV0pKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkgeworICAg
ICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pKSB7
CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1
ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbaV0pOwogICAgICAgICAgICAgLy8gRklYTUU6IHByb3Zp
ZGUgZGVmYXVsdCB2YWx1ZSBpZiAhdmFsdWUKICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAg
ICAgICAgICAgICAgIGlmICghcmVzLmlzTnVsbCgpKQpAQCAtNDgyLDExICszOTQsMTEgQEAgU3Ry
aW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVy
dGllcywgc2l6ZV90IHNpemUpIGMKIH0KIAogLy8gb25seSByZXR1cm5zIGEgbm9uLW51bGwgdmFs
dWUgaWYgYWxsIHByb3BlcnRpZXMgaGF2ZSB0aGUgc2FtZSwgbm9uLW51bGwgdmFsdWUKLVN0cmlu
ZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMs
IHNpemVfdCBzaXplKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZh
bHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kKSBjb25zdAogewogICAgIFN0
cmluZyByZXM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGll
c1tpXSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyAr
K2kpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFs
dWUobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgU3RyaW5nIHRleHQgPSB2YWx1ZS0+Y3Nz
VGV4dCgpOwpAQCAtNjgwLDExICs1OTIsOSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNU
ZXh0KCkgY29uc3QKICAgICAvLyB3b3VsZCBub3Qgd29yayBpbiBGaXJlZm94ICg8cmRhcjovL3By
b2JsZW0vNTE0MzE4Mz4pCiAgICAgLy8gSXQgd291bGQgYmUgYSBiZXR0ZXIgc29sdXRpb24gaWYg
YmFja2dyb3VuZC1wb3NpdGlvbiB3YXMgQ1NTX1BBSVIuCiAgICAgaWYgKHBvc2l0aW9uWFByb3Ag
JiYgcG9zaXRpb25ZUHJvcCAmJiBwb3NpdGlvblhQcm9wLT5pc0ltcG9ydGFudCgpID09IHBvc2l0
aW9uWVByb3AtPmlzSW1wb3J0YW50KCkpIHsKLSAgICAgICAgU3RyaW5nIHBvc2l0aW9uVmFsdWU7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OwogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJiYWNrZ3JvdW5kLXBvc2l0aW9uOiAiKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uWFByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgcG9zaXRpb25ZUHJvcC0+dmFsdWUo
KS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0TGF5ZXJlZFNo
b3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0
TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCkpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBvc2l0aW9uWFByb3AtPnZh
bHVlKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgIik7CkBAIC03
MDIsMTEgKzYxMiw5IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojphc1RleHQoKSBjb25zdAog
CiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZG8gdGhlIHNhbWUgZm9yIGJhY2tncm91bmQtcmVw
ZWF0LgogICAgIGlmIChyZXBlYXRYUHJvcCAmJiByZXBlYXRZUHJvcCAmJiByZXBlYXRYUHJvcC0+
aXNJbXBvcnRhbnQoKSA9PSByZXBlYXRZUHJvcC0+aXNJbXBvcnRhbnQoKSkgewotICAgICAgICBT
dHJpbmcgcmVwZWF0VmFsdWU7Ci0gICAgICAgIGNvbnN0IGludCByZXBlYXRQcm9wZXJ0aWVzWzJd
ID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRZIH07CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoImJhY2tncm91bmQtcmVwZWF0OiAiKTsK
ICAgICAgICAgaWYgKHJlcGVhdFhQcm9wLT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8IHJlcGVh
dFlQcm9wLT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocmVwZWF0UHJvcGVydGllcykpOworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dyb3VuZFJlcGVh
dExvbmdoYW5kKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHJlcGVhdFhQcm9wLT52YWx1ZSgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiICIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKaW5kZXggOTA0NTJm
ZjY3MmQ5OWUzYmVhZWEyMGRmYzI0NTBlNzFkZjg1NGI1ZS4uOTg4Y2U2MjI1NDRhYjFhNDY1ZjBl
N2U3MzgxNjliNmI4Y2I1ZDllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5o
CkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1J1bGU7
CitjbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsK
IGNsYXNzIEtVUkw7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC0x
MTcsMTggKzExOCwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiAKLSAgICBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVz
LCBzaXplX3QpIGNvbnN0OwotICAgIFN0cmluZyBnZXRDb21tb25WYWx1ZShjb25zdCBpbnQqIHBy
b3BlcnRpZXMsIHNpemVfdCkgY29uc3Q7Ci0gICAgU3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRW
YWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdCkgY29uc3Q7Ci0gICAgU3RyaW5nIGdl
dDRWYWx1ZXMoY29uc3QgaW50KiBwcm9wZXJ0aWVzKSBjb25zdDsKLSAgICBTdHJpbmcgYm9yZGVy
U3BhY2luZ1ZhbHVlKGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdKSBjb25zdDsKKyAgICBTdHJpbmcg
Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAg
IFN0cmluZyBnZXRDb21tb25WYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJikgY29uc3Q7
CisgICAgU3RyaW5nIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJikgY29uc3Q7CisgICAgU3RyaW5nIGdldDRWYWx1ZXMoY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYpIGNvbnN0OworICAgIFN0cmluZyBib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYpIGNvbnN0OwogICAgIFN0cmluZyBmb250VmFsdWUoKSBjb25zdDsK
ICAgICBib29sIGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChpbnQgcHJvcGVydHlJ
RCwgU3RyaW5nQnVpbGRlciYgcmVzdWx0KSBjb25zdDsKIAotICAgIHRlbXBsYXRlPHNpemVfdCBz
aXplPiBTdHJpbmcgZ2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgaW50ICgmcHJvcGVydGllcylbc2l6
ZV0pIGNvbnN0IHsgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIHNpemUpOyB9
Ci0gICAgdGVtcGxhdGU8c2l6ZV90IHNpemU+IFN0cmluZyBnZXRDb21tb25WYWx1ZShjb25zdCBp
bnQgKCZwcm9wZXJ0aWVzKVtzaXplXSkgY29uc3QgeyByZXR1cm4gZ2V0Q29tbW9uVmFsdWUocHJv
cGVydGllcywgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4gU3RyaW5nIGdldExh
eWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQgKCZwcm9wZXJ0aWVzKVtzaXplXSkgY29uc3Qg
eyByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIHNpemUpOyB9Ci0K
ICAgICBib29sIHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KGludCBwcm9wZXJ0eUlEKTsKICAgICBi
b29sIHByb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSopIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133775</attachid>
            <date>2012-03-26 04:33:28 -0700</date>
            <delta_ts>2012-03-26 05:12:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81960-20120326083310.patch</filename>
            <type>text/plain</type>
            <size>26000</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhjOWIyYmM5YmFhN2Q1
Yzg2MjI3YjU5ODk5YWU4Njc0M2MwM2ZmZS4uMTI5ZDFiMTRlMDVkMjVhNzM0YTk0OTQyYzMyMjQy
NDJlNTNmMzQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAzLTI2ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIFN0eWxlUHJvcGVydHlTZXQgYW5kIENTU1Byb3BlcnR5
TG9uZ2hhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAg
IFVzZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZnJvbSBDU1NQcm9wZXJ0eUxvbmdoYW5kIGluIFN0
eWxlUHJvcGVydHlTZXQgaW4gb3JkZXIKKyAgICAgICAgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlv
bi4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiByZWZhY3RvcmluZyBvbmx5LCB3ZSBzaG91bGRu
J3QgaGF2ZSBhbnkgYmVoYXZpb3IgZGlmZmVyZW5jZS4KKworICAgICAgICAqIGNzcy9DU1NQcm9w
ZXJ0eUxvbmdoYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRMb25naGFuZCk6
CisgICAgICAgIFJlLW9yZGVyIHRoZSBhcnJheSB0byBtYXRjaCB0aGUgc3BlYyBkZWZhdWx0IG9y
ZGVyLgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFza0xvbmdoYW5kKToKKyAgICAgICAgUmUt
b3JkZXIgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIG9yZGVyLgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQpOgorICAgICAgICBBIExheW91dFRlc3Qgc2hvd3Mg
dGhhdCBhIHByb3BlcnR5IHdhcyBtaXNzaW5nLgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5
U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2lu
Z1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFu
ZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFu
ZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmFzVGV4dCk6CisgICAg
ICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoU3R5bGVQcm9wZXJ0eVNldCk6CisKIDIwMTItMDMtMjYgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBk
ZWRpY2F0ZWQgd29ya2VyIGluc3BlY3RvciBpcyBlbXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuY3BwCmluZGV4IDE5MjE2MjBiMjQzNjI0NTA5NDhmMzFmNzQzYmRh
YjM1MjIzNWM0ZmEuLmU3NGM0YTAwOTdkZDk3YjA3YjgwYTlhM2VlNDk5NjI1NDhjMjE0MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKQEAgLTMwLDE1ICsz
MCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBi
YWNrZ3JvdW5kTG9uZ2hhbmQoKQogewogICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBy
b3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwK
LSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKICAgICAgICAgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAotICAg
ICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sCisgICAgICAgIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdFgsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksCisg
ICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCiAgICAgICAgIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLAotICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENsaXAsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbgogICAgIH07CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBiYWNrZ3JvdW5kTG9uZ2hh
bmQsIChiYWNrZ3JvdW5kUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUHJv
cGVydGllcykpKTsKICAgICByZXR1cm4gYmFja2dyb3VuZExvbmdoYW5kOwpAQCAtMzM5LDE0ICsz
MzksMTQgQEAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFycXVlZUxvbmdoYW5k
KCkKIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tMb25naGFuZCgpCiB7CiAg
ICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
bGlwLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwKLSAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXNrT3JpZ2luLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRYLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLAorICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwKLSAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwKLSAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WQorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLAorICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4KICAgICB9OwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza0xvbmdoYW5kLCAobWFza1By
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Byb3BlcnRpZXMpKSk7CiAgICAgcmV0dXJu
IHdlYmtpdE1hc2tMb25naGFuZDsKQEAgLTM5OSw3ICszOTksOCBAQCBjb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IGludCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5ZCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WSwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aCiAgICAgfTsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRyYW5zZm9y
bU9yaWdpbkxvbmdoYW5kLCAodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSCh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKSkpOwogICAgIHJldHVybiB3ZWJraXRUcmFu
c2Zvcm1PcmlnaW5Mb25naGFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cAppbmRleCBmNjUyNDY1NjAyNDdhYWFhNzdjOGI3M2MyZjhhMmFjOTZlN2ZjZWQzLi44NWMwYTIz
Y2VkYjE0OWI3NWEyMzgyNzJkNGJkZmU4NjhiM2I2YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwCkBAIC0xMDEsMTczICsxMDEsODQgQEAgU3RyaW5nIFN0eWxlUHJv
cGVydHlTZXQ6OmdldFByb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAKICAgICAv
LyBTaG9ydGhhbmQgYW5kIDQtdmFsdWVzIHByb3BlcnRpZXMKICAgICBzd2l0Y2ggKHByb3BlcnR5
SUQpIHsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmc6IHsKLSAgICAgICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhv
cml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9
OwotICAgICAgICAgICAgcmV0dXJuIGJvcmRlclNwYWNpbmdWYWx1ZShwcm9wZXJ0aWVzKTsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOiB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PyBUaGUgY29kZSBpbiBjc3NwYXJz
ZXIuY3BwIGlzIGNvbmZ1c2luZwotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0g
PSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb25ZIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0OiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9
OwotICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVz
KTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDogewotICAg
ICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbOV0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5QmFja2dyb3VuZEltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRh
Y2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRP
cmlnaW4gfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJv
cGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjogewot
ICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM11bNF0gPSB7eyBDU1NQcm9wZXJ0eUJv
cmRlclRvcFdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFdpZHRoIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHls
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0U3R5bGUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciB9fTsKLSAgICAgICAgICAgIFN0cmluZyByZXM7
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocHJv
cGVydGllcyk7ICsraSkgewotICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENvbW1v
blZhbHVlKHByb3BlcnRpZXNbaV0pOwotICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuaXNOdWxsKCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXMgKz0gIiAiOwotICAgICAgICAgICAgICAgICAgICByZXMgKz0gdmFs
dWU7Ci0gICAgICAgICAgICAgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5n
OgorICAgICAgICByZXR1cm4gYm9yZGVyU3BhY2luZ1ZhbHVlKGJvcmRlclNwYWNpbmdMb25naGFu
ZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOgorICAgICAgICBy
ZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5k
KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgorICAgICAgICByZXR1
cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIGdldExheWVy
ZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3JvdW5kTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlcjogeworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kIHByb3BlcnRp
ZXNbM10gPSB7IGJvcmRlcldpZHRoTG9uZ2hhbmQoKSwgYm9yZGVyU3R5bGVMb25naGFuZCgpLCBi
b3JkZXJDb2xvckxvbmdoYW5kKCkgfTsKKyAgICAgICAgU3RyaW5nIHJlczsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsK
KyAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0p
OworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIGlm
ICghcmVzLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICByZXMgKz0gIiAiOworICAgICAg
ICAgICAgICAgIHJlcyArPSB2YWx1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biByZXM7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDogewot
ICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcn07Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OiB7Ci0gICAgICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yfTsKLSAgICAgICAgICAgIHJldHVybiBn
ZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGll
c1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhh
bmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdDogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRDb2xvcn07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGll
cyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6IHsKLSAgICAg
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0
aCwgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IgfTsKLSAgICAgICAgICAgIHJldHVy
biBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAg
ICAgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDogewotICAgICAgICAgICAgY29uc3QgaW50
IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aCB9OwotICAgICAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocHJvcGVydGllcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOiB7Ci0gICAgICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFN0eWxlIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0NFZhbHVlcyhwcm9wZXJ0aWVzKTsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3c6IHsKLSAg
ICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Rmxl
eERpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgICAgICAgICAgcmV0
dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMpOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250OgotICAgICAgICAgICAgcmV0dXJuIGZvbnRWYWx1ZSgpOwotICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlN
YXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2luTGVmdCB9OwotICAgICAgICAgICAgcmV0dXJu
IGdldDRWYWx1ZXMocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU92ZXJmbG93OiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsg
Q1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZIH07Ci0gICAgICAgICAg
ICByZXR1cm4gZ2V0Q29tbW9uVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5UGFk
ZGluZ0JvdHRvbSwgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCB9OwotICAgICAgICAgICAgcmV0dXJu
IGdldDRWYWx1ZXMocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZTogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7
IENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUxpc3RT
dHlsZUltYWdlIH07Ci0gICAgICAgICAgICByZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVy
dGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvbjogewotICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgY29ycmVjdD8gVGhlIGNvZGUg
aW4gY3NzcGFyc2VyLmNwcCBpcyBjb25mdXNpbmcKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWSB9OwotICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9y
dGhhbmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza1JlcGVhdDogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
Ml0gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFkgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUo
cHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2s6IHsKLSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
V2Via2l0TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2ht
ZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFza09yaWdpbiB9OwotICAgICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhh
bmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luOiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGll
c1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybU9yaWdpblogfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRTaG9ydGhh
bmRWYWx1ZShwcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvbjogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0g
PSB7IENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uRGVsYXkgfTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMYXllcmVk
U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjogewotICAgICAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbN10gPSB7IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUgfTsKLSAgICAg
ICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUocHJvcGVydGllcyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXA6IHsKLSAgICAgICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LCBD
U1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCi0gICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRXcmFwUGFkZGluZyB9OwotICAgICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVl
KHByb3BlcnRpZXMpOwogICAgICAgICB9CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRW
YWx1ZShib3JkZXJUb3BMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmln
aHQ6CisgICAgICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShib3JkZXJSaWdodExvbmdoYW5k
KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206CisgICAgICAgIHJldHVybiBn
ZXRTaG9ydGhhbmRWYWx1ZShib3JkZXJCb3R0b21Mb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyTGVmdDoKKyAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKGJvcmRl
ckxlZnRMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKKyAgICAgICAg
cmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKG91dGxpbmVMb25naGFuZCgpKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgICAgIHJldHVybiBnZXQ0VmFsdWVzKGJvcmRlckNv
bG9yTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgorICAgICAg
ICByZXR1cm4gZ2V0NFZhbHVlcyhib3JkZXJXaWR0aExvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJTdHlsZToKKyAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMoYm9yZGVyU3R5
bGVMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3c6CisgICAg
ICAgIHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgorICAgICAgICByZXR1cm4gZm9udFZhbHVlKCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKKyAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMobWFy
Z2luTG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgorICAgICAgICBy
ZXR1cm4gZ2V0Q29tbW9uVmFsdWUob3ZlcmZsb3dMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZzoKKyAgICAgICAgcmV0dXJuIGdldDRWYWx1ZXMocGFkZGluZ0xvbmdoYW5k
KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6CisgICAgICAgIHJldHVybiBnZXRT
aG9ydGhhbmRWYWx1ZShsaXN0U3R5bGVMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uOgorICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZh
bHVlKHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0OgorICAgICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFzazoKKyAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSh3ZWJraXRNYXNr
TG9uZ2hhbmQoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoK
KyAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxv
bmdoYW5kKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uOgorICAgICAg
ICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdFRyYW5zaXRpb25Mb25naGFu
ZCgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgorICAgICAgICByZXR1
cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgorICAgICAgICByZXR1cm4gZ2V0U2hvcnRo
YW5kVmFsdWUod2Via2l0V3JhcExvbmdoYW5kKCkpOwogI2lmIEVOQUJMRShTVkcpCi0gICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJrZXI6IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5TWFya2VyU3RhcnQpOwotICAg
ICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS0+Y3NzVGV4
dCgpOwotICAgICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlcjogeworICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eU1h
cmtlclN0YXJ0KTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LT5jc3NUZXh0KCk7CisgICAgfQogI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KIAotU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBp
bnQgcHJvcGVydGllc1syXSkgY29uc3QKK1N0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpib3JkZXJT
cGFjaW5nVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CiB7
Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKHByb3BlcnRpZXNbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmVydGljYWxWYWx1ZSA9
IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1sxXSk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiBob3Jpem9udGFsVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRp
ZXMoKVswXSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2ZXJ0aWNhbFZhbHVlID0gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVzKClbMV0pOwogCiAgICAgaWYgKCFob3Jpem9u
dGFsVmFsdWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTMzNiwxMyArMjQ3LDEzIEBA
IFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpmb250VmFsdWUoKSBjb25zdAogICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1
ZXMoY29uc3QgaW50KiBwcm9wZXJ0aWVzKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6
OmdldDRWYWx1ZXMoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CiB7
CiAgICAgLy8gQXNzdW1lIHRoZSBwcm9wZXJ0aWVzIGFyZSBpbiB0aGUgdXN1YWwgb3JkZXIgdG9w
LCByaWdodCwgYm90dG9tLCBsZWZ0LgotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdG9wVmFsdWUgPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cmlnaHRWYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1sxXSk7Ci0gICAgUmVm
UHRyPENTU1ZhbHVlPiBib3R0b21WYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGll
c1syXSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBsZWZ0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKHByb3BlcnRpZXNbM10pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdG9wVmFsdWUgPSBnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVswXSk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiByaWdodFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25naGFuZC5wcm9wZXJ0
aWVzKClbMV0pOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFsdWUgPSBnZXRQcm9wZXJ0
eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsyXSk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiBsZWZ0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVsz
XSk7CiAKICAgICAvLyBBbGwgNCBwcm9wZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIGlm
ICghdG9wVmFsdWUgfHwgIXJpZ2h0VmFsdWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUp
CkBAIC0zNjMsMTYgKzI3NCwxNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVl
cyhjb25zdCBpbnQqIHByb3BlcnRpZXMpIGNvbnN0CiAgICAgcmV0dXJuIHJlczsKIH0KIAotU3Ry
aW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQq
IHByb3BlcnRpZXMsIHNpemVfdCBzaXplKSBjb25zdAorU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6
OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25n
aGFuZCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwogCisgICAgY29uc3QgdW5zaWduZWQgc2l6
ZSA9IGxvbmdoYW5kLmxlbmd0aCgpOwogICAgIC8vIEJlZ2luIGJ5IGNvbGxlY3RpbmcgdGhlIHBy
b3BlcnRpZXMgaW50byBhbiBhcnJheS4KICAgICBWZWN0b3I8IFJlZlB0cjxDU1NWYWx1ZT4gPiB2
YWx1ZXMoc2l6ZSk7CiAgICAgc2l6ZV90IG51bUxheWVycyA9IDA7CiAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICB2YWx1ZXNbaV0gPSBnZXRQcm9wZXJ0
eUNTU1ZhbHVlKHByb3BlcnRpZXNbaV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShsb25n
aGFuZC5wcm9wZXJ0aWVzKClbaV0pOwogICAgICAgICBpZiAodmFsdWVzW2ldKSB7CiAgICAgICAg
ICAgICBpZiAodmFsdWVzW2ldLT5pc1ZhbHVlTGlzdCgpKSB7CiAgICAgICAgICAgICAgICAgQ1NT
VmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZXNb
aV0uZ2V0KCkpOwpAQCAtMzg5LDcgKzMwMSw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QKICAg
ICAgICAgYm9vbCB1c2VSZXBlYXRYU2hvcnRoYW5kID0gZmFsc2U7CiAgICAgICAgIGJvb2wgdXNl
UmVwZWF0WVNob3J0aGFuZCA9IGZhbHNlOwogICAgICAgICBib29sIHVzZVNpbmdsZVdvcmRTaG9y
dGhhbmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzaXplOyBqKysp
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNpemU7IGorKykgewogICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZTsKICAgICAgICAgICAgIGlmICh2YWx1ZXNbal0p
IHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWVzW2pdLT5pc1ZhbHVlTGlzdCgpKQpAQCAtMzk4
LDcgKzMxMCw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QKICAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSB2YWx1ZXNbal07CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQ29sb3Igb25seSBi
ZWxvbmdzIGluIHRoZSBsYXN0IGxheWVyLgotICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVy
dGllc1tqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgeworICAgICAgICAgICAgICAg
ICAgICBpZiAobG9uZ2hhbmQucHJvcGVydGllcygpW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBudW1MYXllcnMgLSAx
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChpICE9IDApIC8vIE90aGVyIHNpbmdsZXRvbnMgb25seSBiZWxvbmcg
aW4gdGhlIGZpcnN0IGxheWVyLgpAQCAtNDA5LDEwICszMjEsMTAgQEAgU3RyaW5nIFN0eWxlUHJv
cGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMs
IHNpemVfdAogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZXBvcnQgYmFja2dyb3VuZC1yZXBl
YXQgYXMgaXQgd2FzIHdyaXR0ZW4gaW4gdGhlIENTUy4gSWYgdGhlIHByb3BlcnR5IGlzIGltcGxp
Y2l0LAogICAgICAgICAgICAgLy8gdGhlbiBpdCB3YXMgd3JpdHRlbiB3aXRoIG9ubHkgb25lIHZh
bHVlLiBIZXJlIHdlIGZpZ3VyZSBvdXQgd2hpY2ggdmFsdWUgdGhhdCB3YXMgc28gd2UgY2FuCiAg
ICAgICAgICAgICAvLyByZXBvcnQgYmFjayBjb3JyZWN0bHkuCi0gICAgICAgICAgICBpZiAocHJv
cGVydGllc1tqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYICYmIGlzUHJvcGVydHlJ
bXBsaWNpdChwcm9wZXJ0aWVzW2pdKSkgeworICAgICAgICAgICAgaWYgKGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYICYmIGlzUHJvcGVydHlJ
bXBsaWNpdChsb25naGFuZC5wcm9wZXJ0aWVzKClbal0pKSB7CiAKICAgICAgICAgICAgICAgICAv
LyBCVUcgNDkwNTU6IG1ha2Ugc3VyZSB0aGUgdmFsdWUgd2FzIG5vdCByZXNldCBpbiB0aGUgbGF5
ZXIgY2hlY2sganVzdCBhYm92ZS4KLSAgICAgICAgICAgICAgICBpZiAoaiA8IHNpemUgLSAxICYm
IHByb3BlcnRpZXNbaiArIDFdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgJiYgdmFs
dWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoaiA8IHNpemUgLSAxICYmIGxvbmdoYW5kLnByb3Bl
cnRpZXMoKVtqICsgMV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSAmJiB2YWx1ZSkg
ewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHlWYWx1ZTsKICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBuZXh0VmFsdWUgPSB2YWx1ZXNbaiArIDFdOwog
ICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFZhbHVlLT5pc1ZhbHVlTGlzdCgpKQpAQCAtNDYw
LDE2ICszNzIsMTUgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhh
bmRWYWx1ZShjb25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdAogICAgICAgICAgICAgcmVzICs9
IGxheWVyUmVzOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJuIHJlczsKIH0KIAotU3Ry
aW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCogcHJvcGVy
dGllcywgc2l6ZV90IHNpemUpIGNvbnN0CitTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0U2hv
cnRoYW5kVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQpIGNvbnN0CiB7
CiAgICAgU3RyaW5nIHJlczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewotICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChwcm9wZXJ0aWVzW2ldKSkgewotICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJv
cGVydGllc1tpXSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1Byb3BlcnR5SW1wbGljaXQobG9uZ2hhbmQucHJv
cGVydGllcygpW2ldKSkgeworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdl
dFByb3BlcnR5Q1NTVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpW2ldKTsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBwcm92aWRlIGRlZmF1bHQgdmFsdWUgaWYgIXZhbHVlCiAgICAgICAgICAgICBp
ZiAodmFsdWUpIHsKICAgICAgICAgICAgICAgICBpZiAoIXJlcy5pc051bGwoKSkKQEAgLTQ4Miwx
MSArMzkzLDExIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZShj
b25zdCBpbnQqIHByb3BlcnRpZXMsIHNpemVfdCBzaXplKSBjCiB9CiAKIC8vIG9ubHkgcmV0dXJu
cyBhIG5vbi1udWxsIHZhbHVlIGlmIGFsbCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHNhbWUsIG5vbi1u
dWxsIHZhbHVlCi1TdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3Qg
aW50KiBwcm9wZXJ0aWVzLCBzaXplX3Qgc2l6ZSkgY29uc3QKK1N0cmluZyBTdHlsZVByb3BlcnR5
U2V0OjpnZXRDb21tb25WYWx1ZShjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZCkg
Y29uc3QKIHsKICAgICBTdHJpbmcgcmVzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKHByb3BlcnRpZXNbaV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb25n
aGFuZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIGlm
ICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIFN0cmluZyB0
ZXh0ID0gdmFsdWUtPmNzc1RleHQoKTsKQEAgLTY4MCwxMSArNTkxLDkgQEAgU3RyaW5nIFN0eWxl
UHJvcGVydHlTZXQ6OmFzVGV4dCgpIGNvbnN0CiAgICAgLy8gd291bGQgbm90IHdvcmsgaW4gRmly
ZWZveCAoPHJkYXI6Ly9wcm9ibGVtLzUxNDMxODM+KQogICAgIC8vIEl0IHdvdWxkIGJlIGEgYmV0
dGVyIHNvbHV0aW9uIGlmIGJhY2tncm91bmQtcG9zaXRpb24gd2FzIENTU19QQUlSLgogICAgIGlm
IChwb3NpdGlvblhQcm9wICYmIHBvc2l0aW9uWVByb3AgJiYgcG9zaXRpb25YUHJvcC0+aXNJbXBv
cnRhbnQoKSA9PSBwb3NpdGlvbllQcm9wLT5pc0ltcG9ydGFudCgpKSB7Ci0gICAgICAgIFN0cmlu
ZyBwb3NpdGlvblZhbHVlOwotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blkgfTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiYmFja2dyb3VuZC1wb3NpdGlvbjogIik7CiAg
ICAgICAgIGlmIChwb3NpdGlvblhQcm9wLT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8IHBvc2l0
aW9uWVByb3AtPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzKSk7CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3JvdW5kUG9zaXRpb25M
b25naGFuZCgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChw
b3NpdGlvblhQcm9wLT52YWx1ZSgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiICIpOwpAQCAtNzAyLDExICs2MTEsOSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6
YXNUZXh0KCkgY29uc3QKIAogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRvIHRoZSBzYW1lIGZv
ciBiYWNrZ3JvdW5kLXJlcGVhdC4KICAgICBpZiAocmVwZWF0WFByb3AgJiYgcmVwZWF0WVByb3Ag
JiYgcmVwZWF0WFByb3AtPmlzSW1wb3J0YW50KCkgPT0gcmVwZWF0WVByb3AtPmlzSW1wb3J0YW50
KCkpIHsKLSAgICAgICAgU3RyaW5nIHJlcGVhdFZhbHVlOwotICAgICAgICBjb25zdCBpbnQgcmVw
ZWF0UHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OwogICAgICAgICByZXN1bHQuYXBwZW5kKCJiYWNrZ3Jv
dW5kLXJlcGVhdDogIik7CiAgICAgICAgIGlmIChyZXBlYXRYUHJvcC0+dmFsdWUoKS0+aXNWYWx1
ZUxpc3QoKSB8fCByZXBlYXRZUHJvcC0+dmFsdWUoKS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHJlcGVhdFByb3BlcnRp
ZXMpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChyZXBlYXRYUHJvcC0+dmFsdWUoKS0+Y3NzVGV4dCgpKTsKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIiAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNl
dC5oCmluZGV4IDkwNDUyZmY2NzJkOTllM2JlYWVhMjBkZmMyNDUwZTcxZGY4NTRiNWUuLjk4OGNl
NjIyNTQ0YWIxYTQ2NWYwZTdlNzM4MTY5YjZiOGNiNWQ5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTZXQuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NSdWxlOworY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENTU1N0
eWxlRGVjbGFyYXRpb247CiBjbGFzcyBLVVJMOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOwpAQCAtMTE3LDE4ICsxMTgsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0
TmVlZHNTdHlsZVJlY2FsYygpOwogCi0gICAgU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0
IGludCogcHJvcGVydGllcywgc2l6ZV90KSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0Q29tbW9uVmFs
dWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0OwotICAgIFN0cmluZyBnZXRM
YXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0
OwotICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IGludCogcHJvcGVydGllcykgY29uc3Q7Ci0g
ICAgU3RyaW5nIGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBpbnQgcHJvcGVydGllc1syXSkgY29u
c3Q7CisgICAgU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0Q29tbW9uVmFsdWUoY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYpIGNvbnN0OworICAgIFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYpIGNvbnN0OworICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKKyAgICBTdHJpbmcgYm9yZGVyU3BhY2lu
Z1ZhbHVlKGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmKSBjb25zdDsKICAgICBTdHJpbmcgZm9u
dFZhbHVlKCkgY29uc3Q7CiAgICAgYm9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGlj
aXQoaW50IHByb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXImIHJlc3VsdCkgY29uc3Q7CiAKLSAgICB0
ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4gU3RyaW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IGludCAo
JnByb3BlcnRpZXMpW3NpemVdKSBjb25zdCB7IHJldHVybiBnZXRTaG9ydGhhbmRWYWx1ZShwcm9w
ZXJ0aWVzLCBzaXplKTsgfQotICAgIHRlbXBsYXRlPHNpemVfdCBzaXplPiBTdHJpbmcgZ2V0Q29t
bW9uVmFsdWUoY29uc3QgaW50ICgmcHJvcGVydGllcylbc2l6ZV0pIGNvbnN0IHsgcmV0dXJuIGdl
dENvbW1vblZhbHVlKHByb3BlcnRpZXMsIHNpemUpOyB9Ci0gICAgdGVtcGxhdGU8c2l6ZV90IHNp
emU+IFN0cmluZyBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgaW50ICgmcHJvcGVydGll
cylbc2l6ZV0pIGNvbnN0IHsgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0
aWVzLCBzaXplKTsgfQotCiAgICAgYm9vbCByZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShpbnQgcHJv
cGVydHlJRCk7CiAgICAgYm9vbCBwcm9wZXJ0eU1hdGNoZXMoY29uc3QgQ1NTUHJvcGVydHkqKSBj
b25zdDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>