<?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>79712</bug_id>
          
          <creation_ts>2012-02-27 16:10:38 -0800</creation_ts>
          <short_desc>Clipboard::getData should return an empty string instead of undefined</short_desc>
          <delta_ts>2012-02-28 17:32:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>566069</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-27 16:10:38 -0800</bug_when>
    <thetext>Clipboard::getData should return an empty string instead of undefined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566097</commentid>
    <comment_count>1</comment_count>
      <attachid>129126</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-27 16:35:13 -0800</bug_when>
    <thetext>Created attachment 129126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566100</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-27 16:36:38 -0800</bug_when>
    <thetext>Are we planning on importing more IETC tests? This is covered by http://samples.msdn.microsoft.com/ietestcenter/html5/dragdrop/getData_dragenter.htm.

Otherwise I&apos;ll just write a new layout test for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566104</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 16:38:16 -0800</bug_when>
    <thetext>You can either import the IETC test or write a new test.  Whatever is more convenient for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566127</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-27 16:58:26 -0800</bug_when>
    <thetext>In the past I&apos;ve found it easier to write a new test.  Most of the IETC tests are not designed for automated testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566129</commentid>
    <comment_count>5</comment_count>
      <attachid>129126</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-27 16:59:28 -0800</bug_when>
    <thetext>Comment on attachment 129126
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        No new tests. (OOPS!)

This will cause the CQ to fail, you&apos;ll need to replace this line with a list of tests your&apos;e changing/adding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566195</commentid>
    <comment_count>6</comment_count>
      <attachid>129149</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-27 17:43:15 -0800</bug_when>
    <thetext>Created attachment 129149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567113</commentid>
    <comment_count>7</comment_count>
      <attachid>129149</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-28 14:36:08 -0800</bug_when>
    <thetext>Comment on attachment 129149
Patch

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

It seems unfortunate that you can&apos;t tell if something is in the clipboard or just an empty string, but maybe that&apos;s intentional.

What does Firefox do?

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:452
&gt; +    if (!getWebLocData(dataObject, url, title)) {

Nit: Can we early return here instead of nesting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567269</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-28 17:29:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 129149 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129149&amp;action=review
&gt; 
&gt; It seems unfortunate that you can&apos;t tell if something is in the clipboard or just an empty string, but maybe that&apos;s intentional.
&gt; 
&gt; What does Firefox do?
&gt; 

My test shows they return empty strings instead of undefined.

&gt; &gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:452
&gt; &gt; +    if (!getWebLocData(dataObject, url, title)) {
&gt; 
&gt; Nit: Can we early return here instead of nesting?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567272</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2012-02-28 17:32:07 -0800</bug_when>
    <thetext>Committed r109176: &lt;http://trac.webkit.org/changeset/109176&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129126</attachid>
            <date>2012-02-27 16:35:13 -0800</date>
            <delta_ts>2012-02-27 17:43:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79712-20120227163512.patch</filename>
            <type>text/plain</type>
            <size>31467</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAwMGU4YjM3MTYwNGZl
MmU5NDMwNTQ4NjZlNDc3NjFkYzkwYTUxMy4uMWQ0YzRmOWFmZDQzMjE3ZGM2MGJiY2RjODM2NTIy
MmI3NDQyOGMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAyLTI3ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsaXBib2FyZDo6Z2V0
RGF0YSBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mIHVuZGVmaW5lZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXIgdGhlIHNw
ZWMsIGFuIGVtcHR5IHN0cmluZyBzaG91bGQgYmUgcmV0dXJuZWQgd2hlbiB0aGVyZSBpcyBubyBk
YXRhIGZvciB0aGUgZ2l2ZW4gdHlwZXN0cmluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChP
T1BTISkKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwOgorICAgICAg
ICAqIGRvbS9DbGlwYm9hcmQuaDoKKyAgICAgICAgKENsaXBib2FyZCk6CisgICAgICAgICogZG9t
L0NsaXBib2FyZC5pZGw6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRC
bGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEJsYWNrQmVycnk6Omdl
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJy
eS5oOgorICAgICAgICAoQ2xpcGJvYXJkQmxhY2tCZXJyeSk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkQ2hyb21pdW06OmdldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmg6CisgICAgICAgIChDbGlwYm9hcmRDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRFZmw6OmdldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuaDoK
KyAgICAgICAgKENsaXBib2FyZEVmbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmdldERhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDoKKyAgICAgICAgKENsaXBib2FyZEd0
ayk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oOgorICAgICAgICAoQ2xp
cGJvYXJkTWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6Z2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaDoKKyAgICAgICAgKENs
aXBib2FyZFF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZ1bGxDRkhUTUwpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsYWluVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRUZXh0SFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDRkhUTUwpOgorICAg
ICAgICAoV2ViQ29yZTo6ZnJhZ21lbnRGcm9tSFRNTCk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRXaW46OmdldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaDoK
KyAgICAgICAgKENsaXBib2FyZFdpbik6CisgICAgICAgICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJk
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV3g6OmdldERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL3d4L0NsaXBib2FyZFd4Lmg6CisgICAgICAgIChDbGlwYm9hcmRXeCk6CisK
IDIwMTItMDItMjMgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFN3aXRjaCBkcmF3TGluZUZvckJveFNpZGUgdG8gdXNlIGludGVnZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAKaW5kZXggMzUzMmM3
ODU5MjRmYWRkYzJmZDI5ZjA3NjQ1MWZjZTkzYjIyODlkOC4uNmMxMjE3ZWE5NzBkYjM2OWNiY2Q3
Y2IyNjEyOGMyMjEwNjQwZGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtNjYsMjIgKzY2LDYgQEAgSlNWYWx1ZSBKU0NsaXBi
b2FyZDo6Y2xlYXJEYXRhKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiY2xlYXJEYXRhOiBJbnZhbGlkIG51bWJlciBv
ZiBhcmd1bWVudHMiKSk7CiB9CiAKLUpTVmFsdWUgSlNDbGlwYm9hcmQ6OmdldERhdGEoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIC8vIEZJWE1FOiBJdCBkb2VzIG5vdCBtYXRjaCB0aGUgcmVzdCBv
ZiB0aGUgSlMgYmluZGluZ3MgdG8gdGhyb3cgb24gaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRz
LgotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgImdldERhdGE6IEludmFsaWQg
bnVtYmVyIG9mIGFyZ3VtZW50cyIpKTsKLQotICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gaW1w
bCgpOwotCi0gICAgYm9vbCBzdWNjZXNzOwotICAgIFN0cmluZyByZXN1bHQgPSBjbGlwYm9hcmQt
PmdldERhdGEodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSksIHN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcmVzdWx0KTsK
LX0KLQogSlNWYWx1ZSBKU0NsaXBib2FyZDo6c2V0RHJhZ0ltYWdlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4
IDUxZDZmMmM3MjEyYjhkMTgwMzc2NzJmYjFiZjdmMGJiNjUzMWJhMTYuLjY2NTI3MGMyNjY0MDg1
ZDYxZDgxYjYwNDk3ZGZhMGMyYzY1MjU2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtNjIsMjIgKzYy
LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpjbGVhckRhdGFDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Z2V0RGF0YUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uQ2xpcGJv
YXJkLmdldERhdGEoKSIpOwotICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gVjhDbGlwYm9hcmQ6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoImdldERhdGE6IEludmFsaWQgbnVtYmVyIG9mIGFy
Z3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKLQotICAgIGJvb2wgc3VjY2VzczsKLSAg
ICBTdHJpbmcgcmVzdWx0ID0gY2xpcGJvYXJkLT5nZXREYXRhKHRvV2ViQ29yZVN0cmluZyhhcmdz
WzBdKSwgc3VjY2Vzcyk7Ci0gICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiB2OFN0cmlu
ZyhyZXN1bHQpOwotCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNsaXBib2FyZC5zZXREcmFn
SW1hZ2UoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCmluZGV4IGQzMzgyOWE2YzE5YzExYjZkMzJh
NzkyZTM3MTRlYzQ4ODNiMzFmZmIuLmY0NjUwMmQyOWJlYzIzZDRiYWVlNWU4NDcxN2FhNTEzYWRl
OWVhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxEYXRhKCkgPSAw
OwotICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9v
bCYgc3VjY2VzcykgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkgPSAwOwogICAgIAogICAg
ICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NsaXBib2FyZC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlk
bAppbmRleCBjMWM1ODUwZWMxMzBkMDM2ZmE3YWViZmY3MTEwZjliMGUyZmM2ODViLi43ZGU5MWNh
OTEzYmM2ZTNlOGUxOGM2MGM4Yjg1ZmVlNjdhM2EzZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2xpcGJvYXJkLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
LmlkbApAQCAtMzYsOCArMzYsNyBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgW0N1c3RvbV0g
dm9pZCBjbGVhckRhdGEoaW4gW09wdGlvbmFsXSBET01TdHJpbmcgdHlwZSkKICAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldERhdGEoaW4g
RE9NU3RyaW5nIHR5cGUpCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgRE9NU3RyaW5nIGdldERhdGEoaW4gRE9NU3RyaW5nIHR5cGUpOwogICAgICAgICBib29sZWFu
IHNldERhdGEoaW4gRE9NU3RyaW5nIHR5cGUsIGluIERPTVN0cmluZyBkYXRhKTsKICAgICAgICAg
W0N1c3RvbV0gdm9pZCBzZXREcmFnSW1hZ2UoaW4gSFRNTEltYWdlRWxlbWVudCBpbWFnZSwgaW4g
bG9uZyB4LCBpbiBsb25nIHkpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxh
Y2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2Fy
ZEJsYWNrQmVycnkuY3BwCmluZGV4IGIyMjRkNWNiMDE5ZTU3NzM3YWJjNjg0MDc1ZTNhMDM0NGM2
YWJjOTAuLjE0MjMyNzg0OTdiZWYzNTg1NTgwZWUzYzU3ODhiMDc1ZDJkNDI0NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRC
bGFja0JlcnJ5LmNwcApAQCAtNTYsOSArNTYsOCBAQCB2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6
OmNsZWFyQWxsRGF0YSgpCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6Y2xl
YXJDbGlwYm9hcmQoKTsKIH0KIAotU3RyaW5nIENsaXBib2FyZEJsYWNrQmVycnk6OmdldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAorU3RyaW5nIENsaXBib2Fy
ZEJsYWNrQmVycnk6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewotICAgIHN1
Y2Nlc3MgPSB0cnVlOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpDbGlwYm9hcmQ6OnJlYWRDbGlwYm9hcmRCeVR5cGUodHlwZS51dGY4KCkuZGF0YSgp
KS5jX3N0cigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuaAppbmRleCAyNTVkNmFhMjg0Y2M2OTIzZmMy
ZjBjNDQ3MjliYjA0NmIxOGI0MGU0Li4wMTEzZTAxMTc5MGY1OTg4NGNjNTY4YjUwMTRkMTkwNmE5
ZTZhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Ns
aXBib2FyZEJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIHZvaWQgY2xlYXJBbGxE
YXRhKCk7Ci0gICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNj
ZXNzKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
OwogICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAKICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4
IDFiMTUzNmUzNTQ1NDIxZDMxZWVmMmU1ZmJmYmQ3ODYwYWIzOTQ4OTYuLjE4Y2RiOWQ5NGEzNmQ4
MTJlZGY1NGVkYzRiOTdiNmMwNTQ5ZGUxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTI2MywxNiArMjYz
LDE2IEBAIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OmNsZWFyQWxsRGF0YSgpCiAgICAgbV9kYXRh
T2JqZWN0LT5jbGVhckFsbCgpOwogfQogCi1TdHJpbmcgQ2xpcGJvYXJkQ2hyb21pdW06OmdldERh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAorU3RyaW5nIENsaXBi
b2FyZENocm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKLSAgICBz
dWNjZXNzID0gZmFsc2U7CisgICAgYm9vbCBpZ25vcmVkU3VjY2VzcyA9IGZhbHNlOwogICAgIGlm
IChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8fCAhbV9kYXRhT2JqZWN0KQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoaXNGb3JDb3B5QW5kUGFzdGUoKSAmJiBwbGF0
Zm9ybUNsaXBib2FyZENoYW5nZWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAg
cmV0dXJuIG1fZGF0YU9iamVjdC0+Z2V0RGF0YShub3JtYWxpemVUeXBlKHR5cGUpLCBzdWNjZXNz
KTsKKyAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT5nZXREYXRhKG5vcm1hbGl6ZVR5cGUodHlwZSks
IGlnbm9yZWRTdWNjZXNzKTsKIH0KIAogYm9vbCBDbGlwYm9hcmRDaHJvbWl1bTo6c2V0RGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCmluZGV4IGFlOWVi
NzExYjFkODJjZGI1OGVkMjJkYTNlMDEyMDJjODJmMGE1NzcuLjgwNTk3NWE2ZTZmMWQxNWRlMzVk
ZTIxYjJjOGQwNWQ3YTkwN2ZlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpOwogICAgICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwotICAgICAgICBTdHJpbmcg
Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OworICAgICAg
ICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgICAgICBib29s
IHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgICAg
ICBib29sIHBsYXRmb3JtQ2xpcGJvYXJkQ2hhbmdlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCmluZGV4IDYwMTUyNzI2YTQ5NTIzN2M5
YzI1ODI2ODM2MTQ5MzVmMmJkNmVhNGMuLjYzZTU2MTVkZDUzNDE0MDMwYmU0NzhmYTg4ODYyYzNm
NDliODI5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9h
cmRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwu
Y3BwCkBAIC02NSwxMCArNjUsOSBAQCB2b2lkIENsaXBib2FyZEVmbDo6Y2xlYXJBbGxEYXRhKCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1TdHJpbmcgQ2xpcGJvYXJkRWZsOjpnZXREYXRh
KGNvbnN0IFN0cmluZyYsIGJvb2wgJnN1Y2Nlc3MpIGNvbnN0CitTdHJpbmcgQ2xpcGJvYXJkRWZs
OjpnZXREYXRhKGNvbnN0IFN0cmluZyYpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKaW5kZXggNTY0NTUxOTBmNWM2OTI0
ZjU2NjNmOTJkOGY3NzM2MzBiNTZhMTIzMy4uMDJiYjUyOGU1ZTRmNDgxYzA5NjhiZDQzYzQ4MzQy
ZjUyY2ZiMGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBi
b2FyZEVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwu
aApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwotICAgIFN0cmluZyBnZXREYXRhKGNv
bnN0IFN0cmluZyYsIGJvb2wmKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJp
bmcmKSBjb25zdDsKICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jik7CiAKICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHR5cGVzKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IGIyMDIxNjc2
MGJhNTg2MjlmMjVjZjczYTY4NzczODRiYmZhNDQ5YTEuLmFjOTc2MjIxOGJiM2ZhZTA3OTMyYTlh
Mjc1NzQ2ZTdmYmRlZTA4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlw
Ym9hcmRHdGsuY3BwCkBAIC0xNDMsMTMgKzE0Myw4IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVh
ckFsbERhdGEoKQogICAgICAgICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhl
bHBlcigpLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkKTsKIH0KIAotU3RyaW5n
IENsaXBib2FyZEd0azo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIGJvb2wmIHN1
Y2Nlc3MpIGNvbnN0CitTdHJpbmcgQ2xpcGJvYXJkR3RrOjpnZXREYXRhKGNvbnN0IFN0cmluZyYg
dHlwZVN0cmluZykgY29uc3QKIHsKLSAgICBzdWNjZXNzID0gdHJ1ZTsgLy8gQWNjb3JkaW5nIHRv
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlw
YWdlL2RuZC5odG1sCi0gICAgLy8gIlRoZSBnZXREYXRhKGZvcm1hdCkgbWV0aG9kIG11c3QgcmV0
dXJuIHRoZSBkYXRhIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlIGZvcm1hdCBjb252
ZXJ0ZWQKLSAgICAvLyB0byBBU0NJSSBsb3dlcmNhc2UsIGlmIGFueSwgYW5kIG11c3QgcmV0dXJu
IHRoZSBlbXB0eSBzdHJpbmcgb3RoZXJ3aXNlLiIgU2luY2Ugc3VjY2VzcyA9PSBmYWxzZSAKLSAg
ICAvLyByZXN1bHRzIGluIGFuICd1bmRlZmluZWQnIHJldHVybiB2YWx1ZSwgd2UgYWx3YXlzIHdh
bnQgdG8gcmV0dXJuIHN1Y2Nlc3MgPT0gdHJ1ZS4gVGhpcyBwYXJhbWV0ZXIKLSAgICAvLyBzaG91
bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLgogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRS
ZWFkYWJsZSB8fCAhbV9kYXRhT2JqZWN0KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBiNzJlMWM4MWJl
NjliZTg3ODMzN2ZjOTg5YjQzMGI4NWRlZjMxMzA1Li42YWQxNGI3ZTEwNmVhZDM3NTU5Yzg1ZmY3
YTcwY2ExMjhjOWM5YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Q2xpcGJvYXJkR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5oCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBjbGVhckFsbERhdGEo
KTsKLSAgICAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAgICAgYm9v
bCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0eXBlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCmluZGV4IGE4NGYyODlkY2E4YzI0NWJkMzRl
Njk0NzEwZDM5NmQwYzJlNmM0MTUuLmQyOGJmMmU3YzhjZTVmMjM2MjU4MjE5NGQwY2Q4YzNiMjU4
NDEyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSk7CiAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKLSAgICBTdHJpbmcgZ2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OworICAgIFN0cmluZyBn
ZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgYm9vbCBzZXREYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgaGFzRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ns
aXBib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0KaW5kZXggODhlZWZjYjUzMjYzYjE2N2FmZDg2ZGFhYjdmOWM5ZDYyZTkxMTRlMC4uMGNjZmYw
MGY0ODU1ZDFmY2FkZmZjNThhNTc0MDliN2Y3YTJiZWVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC0yMTIsOSArMjEyLDggQEAgc3RhdGljIFZl
Y3RvcjxTdHJpbmc+IGFic29sdXRlVVJMc0Zyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGIKICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIH0KIAotU3RyaW5n
IENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3Mp
IGNvbnN0CitTdHJpbmcgQ2xpcGJvYXJkTWFjOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKLSAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBi
b2FyZFJlYWRhYmxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTIzNiw3ICsyMzUs
NiBAQCBTdHJpbmcgQ2xpcGJvYXJkTWFjOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9v
bCYgc3VjY2VzcykgY29uc3QKICAgICAvLyBFbmZvcmNlIGNoYW5nZUNvdW50IG91cnNlbHZlcyBm
b3Igc2VjdXJpdHkuICBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQgb2YgYmVmb3JlIHRv
IGJlCiAgICAgLy8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91ciB0ZXN0aW5nIHRo
ZSBjaGFuZ2UgY291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KICAgICBpZiAoIWNvY29hVmFs
dWUuaXNFbXB0eSgpICYmIG1fY2hhbmdlQ291bnQgPT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKSkgewotICAg
ICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGNvY29hVmFsdWU7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKaW5kZXggM2Q4YmFi
MWY2NWFiOWMzNjliYjQ1MTQ5Mjg1NmRmMjk3M2UwZTQ3Yi4uZTQ4MmRjNjUzZTZlOTU0NjQxOTVl
ZWM4OWFiZWM2OGM4ZmFjMTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBi
b2FyZFF0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyQWxs
RGF0YSgpCiAgICAgbV93cml0YWJsZURhdGEgPSAwOwogfQogCi1TdHJpbmcgQ2xpcGJvYXJkUXQ6
OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAorU3RyaW5n
IENsaXBib2FyZFF0OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKIAogICAg
IGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmgKaW5kZXggYTg0MGJlY2Y2ZDk5NmZlNzYyNzExN2ViZWMxOTM1
MDk4Zjc4MTNkMC4uZTkzZjQxZmJhY2QzYzE1NWI2NjlkZjY4ODEyNzIzMDc4Nzk2YzhiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAg
dm9pZCBjbGVhckFsbERhdGEoKTsKLSAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OworICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3Q7CiAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhKTsKIAogICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNX
aW4uY3BwCmluZGV4IDgyN2UzNTg4YzU5ZDliMGExYTE3YTY3M2RhMGI2N2Q2Njc4M2U2N2QuLjJj
MTgyOTJkOTZiYTc5NzE2NmVhYzEyZDAxNDJjZmIxYmMyZDY0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFy
PiYgdmVjdG9yKQogICAgIHJldHVybiBnbG9iYWxEYXRhOwogfQogCi1zdGF0aWMgU3RyaW5nIGdl
dEZ1bGxDRkhUTUwoSURhdGFPYmplY3QqIGRhdGEsIGJvb2wmIHN1Y2Nlc3MpCitzdGF0aWMgU3Ry
aW5nIGdldEZ1bGxDRkhUTUwoSURhdGFPYmplY3QqIGRhdGEpCiB7CiAgICAgU1RHTUVESVVNIHN0
b3JlOwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+R2V0RGF0YShodG1sRm9ybWF0KCksICZzdG9y
ZSkpKSB7CkBAIC0yMTgsMTAgKzIxOCw4IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RnVsbENGSFRNTChJ
RGF0YU9iamVjdCogZGF0YSwgYm9vbCYgc3VjY2VzcykKICAgICAgICAgU3RyaW5nIGNmaHRtbChV
VEY4RW5jb2RpbmcoKS5kZWNvZGUoZGF0YSwgZGF0YVNpemUpKTsKICAgICAgICAgR2xvYmFsVW5s
b2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7Ci0g
ICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgICAgICByZXR1cm4gY2ZodG1sOwogICAgIH0KLSAg
ICBzdWNjZXNzID0gZmFsc2U7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCkBAIC00NDcsNTkg
KzQ0NSw1MCBAQCB2b2lkIHNldEZpbGVDb250ZW50RGF0YShJRGF0YU9iamVjdCogZGF0YU9iamVj
dCwgaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKQogICAgIGRhdGFPYmplY3QtPlNldERhdGEoZmls
ZUNvbnRlbnRGb3JtYXRaZXJvKCksICZtZWRpdW0sIFRSVUUpOwogfQogCi1TdHJpbmcgZ2V0VVJM
KElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBEcmFnRGF0YTo6RmlsZW5hbWVDb252ZXJzaW9uUG9s
aWN5IGZpbGVuYW1lUG9saWN5LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQorU3RyaW5n
IGdldFVSTChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkKIHsKICAgICBTVEdNRURJ
VU0gc3RvcmU7CiAgICAgU3RyaW5nIHVybDsKLSAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgaWYg
KGdldFdlYkxvY0RhdGEoZGF0YU9iamVjdCwgdXJsLCB0aXRsZSkpCi0gICAgICAgIHN1Y2Nlc3Mg
PSB0cnVlOwotICAgIGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKHVybFdG
b3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy8gVVJMIHVzaW5nIFVuaWNvZGUKLSAgICAg
ICAgVUNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KEdsb2JhbExvY2soc3RvcmUuaEds
b2JhbCkpOwotICAgICAgICB1cmwgPSBleHRyYWN0VVJMKFN0cmluZyhkYXRhKSwgdGl0bGUpOwot
ICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7Ci0gICAgICAgIFJlbGVhc2VTdGdN
ZWRpdW0oJnN0b3JlKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChT
VUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YSh1cmxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAg
ICAgICAgLy8gVVJMIHVzaW5nIEFTQ0lJCi0gICAgICAgIGNoYXIqIGRhdGEgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4oR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKSk7Ci0gICAgICAgIHVybCA9IGV4dHJh
Y3RVUkwoU3RyaW5nKGRhdGEpLCB0aXRsZSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5o
R2xvYmFsKTsKLSAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwotICAgICAgICBzdWNj
ZXNzID0gdHJ1ZTsKLSAgICB9Ci0jaWYgVVNFKENGKQotICAgIGVsc2UgaWYgKGZpbGVuYW1lUG9s
aWN5ID09IERyYWdEYXRhOjpDb252ZXJ0RmlsZW5hbWVzKSB7Ci0gICAgICAgIGlmIChTVUNDRUVE
RUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAg
ICAgICAgICAgIC8vIGZpbGUgdXNpbmcgdW5pY29kZQotICAgICAgICAgICAgd2NoYXJfdCogZGF0
YSA9IHN0YXRpY19jYXN0PHdjaGFyX3QqPihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKLSAg
ICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzKGRhdGEpIHx8
IFBhdGhJc1VOQyhkYXRhKSkpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkp
OwotICAgICAgICAgICAgICAgIGlmICh1cmxGcm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwg
dXJsKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICBpZiAoIWdldFdlYkxvY0Rh
dGEoZGF0YU9iamVjdCwgdXJsLCB0aXRsZSkpIHsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRh
T2JqZWN0LT5HZXREYXRhKHVybFdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAgICAgICAgIC8v
IFVSTCB1c2luZyBVbmljb2RlCisgICAgICAgICAgICBVQ2hhciogZGF0YSA9IHN0YXRpY19jYXN0
PFVDaGFyKj4oR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKSk7CisgICAgICAgICAgICB1cmwgPSBl
eHRyYWN0VVJMKFN0cmluZyhkYXRhKSwgdGl0bGUpOwogICAgICAgICAgICAgR2xvYmFsVW5sb2Nr
KHN0b3JlLmhHbG9iYWwpOwogICAgICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwot
ICAgICAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1l
Rm9ybWF0KCksICZzdG9yZSkpKSB7Ci0gICAgICAgICAgICAvLyBmaWxlbmFtZSB1c2luZyBhc2Np
aQorICAgICAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKHVybEZv
cm1hdCgpLCAmc3RvcmUpKSkgeworICAgICAgICAgICAgLy8gVVJMIHVzaW5nIEFTQ0lJCiAgICAg
ICAgICAgICBjaGFyKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soc3RvcmUu
aEdsb2JhbCkpOwotICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVF
eGlzdHNBKGRhdGEpIHx8IFBhdGhJc1VOQ0EoZGF0YSkpKSB7Ci0gICAgICAgICAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0
ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIGtDRlN0cmluZ0VuY29kaW5n
QVNDSUkpKTsKLSAgICAgICAgICAgICAgICBpZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcu
Z2V0KCksIHVybCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlKQorICAgICAgICAg
ICAgdXJsID0gZXh0cmFjdFVSTChTdHJpbmcoZGF0YSksIHRpdGxlKTsKKyAgICAgICAgICAgIEds
b2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKKyAgICAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0o
JnN0b3JlKTsKKyAgICAgICAgfQorI2lmIFVTRShDRikKKyAgICAgICAgZWxzZSBpZiAoZmlsZW5h
bWVQb2xpY3kgPT0gRHJhZ0RhdGE6OkNvbnZlcnRGaWxlbmFtZXMpIHsKKyAgICAgICAgICAgIGlm
IChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3Jl
KSkpIHsKKyAgICAgICAgICAgICAgICAvLyBmaWxlIHVzaW5nIHVuaWNvZGUKKyAgICAgICAgICAg
ICAgICB3Y2hhcl90KiBkYXRhID0gc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KEdsb2JhbExvY2soc3Rv
cmUuaEdsb2JhbCkpOworICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBh
dGhGaWxlRXhpc3RzKGRhdGEpIHx8IFBhdGhJc1VOQyhkYXRhKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVbmlD
aGFyKilkYXRhLCB3Y3NsZW4oZGF0YSkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVybEZy
b21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpICYmIHRpdGxlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgKnRpdGxlID0gdXJsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgICAgICAgICAgUmVsZWFz
ZVN0Z01lZGl1bSgmc3RvcmUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0
YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZUZvcm1hdCgpLCAmc3RvcmUpKSkgeworICAgICAgICAg
ICAgICAgIC8vIGZpbGVuYW1lIHVzaW5nIGFzY2lpCisgICAgICAgICAgICAgICAgY2hhciogZGF0
YSA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0c0EoZGF0YSkg
fHwgUGF0aElzVU5DQShkYXRhKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgp
LCB1cmwpICYmIHRpdGxlKQogICAgICAgICAgICAgICAgICAgICAgICAgKnRpdGxlID0gdXJsOwot
ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAg
ICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKLSAgICAgICAgICAgIFJlbGVhc2VTdGdNZWRp
dW0oJnN0b3JlKTsKICAgICAgICAgfQotICAgIH0KICNlbmRpZgorICAgIH0KICAgICByZXR1cm4g
dXJsOwogfQogCkBAIC01MzAsMzEgKzUxOSwyNyBAQCBTdHJpbmcgZ2V0VVJMKGNvbnN0IERyYWdE
YXRhTWFwKiBkYXRhLCBEcmFnRGF0YTo6RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYQog
ICAgIHJldHVybiB1cmw7CiB9CiAKLVN0cmluZyBnZXRQbGFpblRleHQoSURhdGFPYmplY3QqIGRh
dGFPYmplY3QsIGJvb2wmIHN1Y2Nlc3MpCitTdHJpbmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0
KiBkYXRhT2JqZWN0KQogewogICAgIFNUR01FRElVTSBzdG9yZTsKICAgICBTdHJpbmcgdGV4dDsK
LSAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXRE
YXRhKHBsYWluVGV4dFdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKICAgICAgICAgLy8gVW5pY29kZSB0
ZXh0CiAgICAgICAgIFVDaGFyKiBkYXRhID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihHbG9iYWxMb2Nr
KHN0b3JlLmhHbG9iYWwpKTsKICAgICAgICAgdGV4dCA9IFN0cmluZyhkYXRhKTsKICAgICAgICAg
R2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZz
dG9yZSk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVE
KGRhdGFPYmplY3QtPkdldERhdGEocGxhaW5UZXh0Rm9ybWF0KCksICZzdG9yZSkpKSB7CiAgICAg
ICAgIC8vIEFTQ0lJIHRleHQKICAgICAgICAgY2hhciogZGF0YSA9IHN0YXRpY19jYXN0PGNoYXIq
PihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKICAgICAgICAgdGV4dCA9IFN0cmluZyhkYXRh
KTsKICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNl
U3RnTWVkaXVtKCZzdG9yZSk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBPcmlnaW5hbGx5LCB3ZSBjYWxsZWQgZ2V0VVJMKCkgaGVyZSBi
ZWNhdXNlIGRyYWdnaW5nIGFuZCBkcm9wcGluZyBmaWxlcyBkb2Vzbid0CiAgICAgICAgIC8vIHBv
cHVsYXRlIHRoZSBkcmFnIHdpdGggdGV4dCBkYXRhLiBQZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM4ODI2LCB0aGlzCiAgICAgICAgIC8vIGlzIHVuZGVzaXJhYmxl
LCBzbyBtYXliZSB0aGlzIGxpbmUgY2FuIGJlIHJlbW92ZWQuCi0gICAgICAgIHRleHQgPSBnZXRV
UkwoZGF0YU9iamVjdCwgRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcywgc3VjY2Vzcyk7
Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICB0ZXh0ID0gZ2V0VVJMKGRhdGFPYmpl
Y3QsIERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpOwogICAgIH0KICAgICByZXR1cm4g
dGV4dDsKIH0KQEAgLTU3MCwxNyArNTU1LDE1IEBAIFN0cmluZyBnZXRQbGFpblRleHQoY29uc3Qg
RHJhZ0RhdGFNYXAqIGRhdGEpCiAgICAgcmV0dXJuIGdldFVSTChkYXRhLCBEcmFnRGF0YTo6RG9O
b3RDb252ZXJ0RmlsZW5hbWVzKTsKIH0KIAotU3RyaW5nIGdldFRleHRIVE1MKElEYXRhT2JqZWN0
KiBkYXRhLCBib29sJiBzdWNjZXNzKQorU3RyaW5nIGdldFRleHRIVE1MKElEYXRhT2JqZWN0KiBk
YXRhKQogewogICAgIFNUR01FRElVTSBzdG9yZTsKICAgICBTdHJpbmcgaHRtbDsKLSAgICBzdWNj
ZXNzID0gZmFsc2U7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5HZXREYXRhKHRleHRodG1sRm9y
bWF0KCksICZzdG9yZSkpKSB7CiAgICAgICAgIFVDaGFyKiBkYXRhID0gc3RhdGljX2Nhc3Q8VUNo
YXIqPihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKICAgICAgICAgaHRtbCA9IFN0cmluZyhk
YXRhKTsKICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxl
YXNlU3RnTWVkaXVtKCZzdG9yZSk7Ci0gICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gaHRtbDsKIH0KQEAgLTU5MiwxMCArNTc1LDEwIEBAIFN0cmluZyBnZXRUZXh0SFRN
TChjb25zdCBEcmFnRGF0YU1hcCogZGF0YSkKICAgICByZXR1cm4gdGV4dDsKIH0KIAotU3RyaW5n
IGdldENGSFRNTChJRGF0YU9iamVjdCogZGF0YSwgYm9vbCYgc3VjY2VzcykKK1N0cmluZyBnZXRD
RkhUTUwoSURhdGFPYmplY3QqIGRhdGEpCiB7Ci0gICAgU3RyaW5nIGNmaHRtbCA9IGdldEZ1bGxD
RkhUTUwoZGF0YSwgc3VjY2Vzcyk7Ci0gICAgaWYgKHN1Y2Nlc3MpCisgICAgU3RyaW5nIGNmaHRt
bCA9IGdldEZ1bGxDRkhUTUwoZGF0YSk7CisgICAgaWYgKCFjZmh0bWwuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gZXh0cmFjdE1hcmt1cEZyb21DRkhUTUwoY2ZodG1sKTsKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CkBAIC02NTUsMTYgKzYzOCwxNSBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqIGRvYywgSURhdGFPYmplY3QqIGRhdGEp
CiAgICAgaWYgKCFkb2MgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYm9vbCBz
dWNjZXNzID0gZmFsc2U7Ci0gICAgU3RyaW5nIGNmaHRtbCA9IGdldEZ1bGxDRkhUTUwoZGF0YSwg
c3VjY2Vzcyk7Ci0gICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICBTdHJpbmcgY2ZodG1sID0gZ2V0RnVs
bENGSFRNTChkYXRhKTsKKyAgICBpZiAoIWNmaHRtbC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUNGSFRNTChk
b2MsIGNmaHRtbCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOwogICAg
IH0KIAotICAgIFN0cmluZyBodG1sID0gZ2V0VGV4dEhUTUwoZGF0YSwgc3VjY2Vzcyk7CisgICAg
U3RyaW5nIGh0bWwgPSBnZXRUZXh0SFRNTChkYXRhKTsKICAgICBTdHJpbmcgc3JjVVJMOwotICAg
IGlmIChzdWNjZXNzKQorICAgIGlmICghaHRtbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jLCBodG1sLCBzcmNVUkwsIEZyYWdtZW50U2NyaXB0
aW5nTm90QWxsb3dlZCk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAppbmRleCA3NTAxZDU2ZjE3ZmQ3
MjAyOTE0ZmVhY2U1YTQ1YjgwMmJjNjM5NDc2Li5lOGQ0NzU1ZTM3OTgzNjZkOTJjNjcxMWJlMDcy
NGEzMDYzOWJhNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC02NywxMyArNjcsMTMgQEAgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21IVE1MKERvY3VtZW50KiwgSURhdGFPYmplY3QqKTsK
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tSFRNTChEb2N1bWVudCos
IGNvbnN0IERyYWdEYXRhTWFwKik7CiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50RnJvbUNGSFRNTChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgY2ZodG1sKTsKIAotU3RyaW5n
IGdldFVSTChJRGF0YU9iamVjdCosIERyYWdEYXRhOjpGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ks
IGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUgPSAwKTsKK1N0cmluZyBnZXRVUkwoSURhdGFP
YmplY3QqLCBEcmFnRGF0YTo6RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxl
ID0gMCk7CiBTdHJpbmcgZ2V0VVJMKGNvbnN0IERyYWdEYXRhTWFwKiwgRHJhZ0RhdGE6OkZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSA9IDApOwotU3RyaW5nIGdldFBsYWlu
VGV4dChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MpOworU3RyaW5nIGdldFBsYWluVGV4dChJ
RGF0YU9iamVjdCopOwogU3RyaW5nIGdldFBsYWluVGV4dChjb25zdCBEcmFnRGF0YU1hcCopOwot
U3RyaW5nIGdldFRleHRIVE1MKElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CitTdHJpbmcg
Z2V0VGV4dEhUTUwoSURhdGFPYmplY3QqKTsKIFN0cmluZyBnZXRUZXh0SFRNTChjb25zdCBEcmFn
RGF0YU1hcCopOwotU3RyaW5nIGdldENGSFRNTChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3Mp
OworU3RyaW5nIGdldENGSFRNTChJRGF0YU9iamVjdCopOwogU3RyaW5nIGdldENGSFRNTChjb25z
dCBEcmFnRGF0YU1hcCopOwogCiB2b2lkIGdldENsaXBib2FyZERhdGEoSURhdGFPYmplY3QqLCBG
T1JNQVRFVEMqIGZldGMsIFZlY3RvcjxTdHJpbmc+JiBkYXRhU3RyaW5ncyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IDg5Y2FjYjM1MWFiZTU5
Yjc3YzNlNzc0YWY2ZjljMWRmNDRkYjY4OWQuLjA4MDFmMjkwMzYzYWM3MGE2MzA0NGY3NzJmNTIw
YTI0YmYxNDFhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRX
aW4uY3BwCkBAIC00MzYsMjIgKzQzNiwyMSBAQCB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJBbGxE
YXRhKCkKICAgICBtX2RhdGFPYmplY3QgPSBtX3dyaXRhYmxlRGF0YU9iamVjdDsKIH0KIAotU3Ry
aW5nIENsaXBib2FyZFdpbjo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nl
c3MpIGNvbnN0CitTdHJpbmcgQ2xpcGJvYXJkV2luOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKIHsgICAgIAotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAocG9saWN5KCkg
IT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgKCFtX2RhdGFPYmplY3QgJiYgbV9kcmFnRGF0YU1hcC5p
c0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gIiI7CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSBk
YXRhVHlwZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CiAgICAgaWYgKGRhdGFU
eXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkKLSAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVj
dCA/IGdldFBsYWluVGV4dChtX2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3MpIDogZ2V0UGxhaW5U
ZXh0KCZtX2RyYWdEYXRhTWFwKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldFBs
YWluVGV4dChtX2RhdGFPYmplY3QuZ2V0KCkpIDogZ2V0UGxhaW5UZXh0KCZtX2RyYWdEYXRhTWFw
KTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpCi0gICAgICAgIHJl
dHVybiBtX2RhdGFPYmplY3QgPyBnZXRVUkwobV9kYXRhT2JqZWN0LmdldCgpLCBEcmFnRGF0YTo6
RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBzdWNjZXNzKSA6IGdldFVSTCgmbV9kcmFnRGF0YU1hcCwg
RHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcyk7CisgICAgICAgIHJldHVybiBtX2RhdGFP
YmplY3QgPyBnZXRVUkwobV9kYXRhT2JqZWN0LmdldCgpLCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0
RmlsZW5hbWVzKSA6IGdldFVSTCgmbV9kcmFnRGF0YU1hcCwgRHJhZ0RhdGE6OkRvTm90Q29udmVy
dEZpbGVuYW1lcyk7CiAgICAgZWxzZSBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVU
ZXh0SFRNTCkgewotICAgICAgICBTdHJpbmcgZGF0YSA9IG1fZGF0YU9iamVjdCA/IGdldFRleHRI
VE1MKG1fZGF0YU9iamVjdC5nZXQoKSwgc3VjY2VzcykgOiBnZXRUZXh0SFRNTCgmbV9kcmFnRGF0
YU1hcCk7Ci0gICAgICAgIGlmIChzdWNjZXNzKQorICAgICAgICBTdHJpbmcgZGF0YSA9IG1fZGF0
YU9iamVjdCA/IGdldFRleHRIVE1MKG1fZGF0YU9iamVjdC5nZXQoKSkgOiBnZXRUZXh0SFRNTCgm
bV9kcmFnRGF0YU1hcCk7CisgICAgICAgIGlmICghZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZGF0YTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTCht
X2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3MpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsK
KyAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0
KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJu
ICIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oCmluZGV4IDhj
MjJjMGEzNWY1ZTg1NjM3ZWJhMjZjYTBiM2E4MmM3NjExOWIxMTguLjU5MjQ1YzkyZGE1OTlkMDM5
MTRhMGM5ZWM3OWMwNzFiOTY2MDYwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVh
ckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwotICAg
IFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7
CisgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBib29s
IHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogCiAgICAg
Ly8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L0NsaXBib2FyZFd4LmNwcAppbmRleCAxNjFiY2U4YWFhZDRmNzVlZTVjMWJhYTA0MGU0OTYzNTcy
YjlmODdlLi44YmI5NzA3YWFiNjg0MmI3OTc3MjczZGVhMjFiZjQ4YmM3MmQzMmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwCkBAIC01OCw3ICs1OCw3IEBA
IHZvaWQgQ2xpcGJvYXJkV3g6OmNsZWFyQWxsRGF0YSgpCiAgICAgUGFzdGVib2FyZDo6Z2VuZXJh
bFBhc3RlYm9hcmQoKS0+Y2xlYXIoKTsKIH0KIAotU3RyaW5nIENsaXBib2FyZFd4OjpnZXREYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QgCitTdHJpbmcgQ2xpcGJv
YXJkV3g6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdCAKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiAiIjsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xp
cGJvYXJkV3guaAppbmRleCBmOTI3MjZhZTZhMDRmMzQzYjBhOTllNDlkZmM3ZGE5YjE0NTBmZDQy
Li4wZWQ3YmFmYmZlYWE4NzM3YzJkMTE1MmI2MWJlNjc1ODI0NzUwYjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7
CiAgICAgICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7Ci0gICAgICAgIFN0cmluZyBnZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CisgICAgICAgIFN0cmluZyBn
ZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgICAgIGJvb2wgc2V0RGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgCiAgICAgICAgIC8v
IGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmFmNjI3NTgwMTBhNjlmODRjZDU4
YWYwZmQzYzdiNWVhZDRiNTU4Mi4uOGQ3NmI3NWEwZjg3NzY5NTRjZGNlZDdlYTBhNjI2YjM3Yjcx
NjI0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAyLTI3ICBEYW5pZWwgQ2hlbmcgIDxk
Y2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsaXBib2FyZDo6Z2V0RGF0YSBzaG91bGQg
cmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mIHVuZGVmaW5lZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZHJh
Zy1vdmVyLXJlbW90ZS1jb250ZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2RyYWctb3Zlci1yZW1vdGUtY29udGVudC1pZnJhbWUtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWlm
cmFtZS5odG1sOgorCiAyMDEyLTAyLTIzICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHRlc3QgZml4IGFmdGVyIHIxMDg2OTkuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2RyYWctb3Zlci1yZW1vdGUt
Y29udGVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2RyYWct
b3Zlci1yZW1vdGUtY29udGVudC1leHBlY3RlZC50eHQKaW5kZXggNjc0NTRiMjg4ZWRkNWMzMjUz
ZDEyMDBiY2U5ODc4YzIzMzkzMWQ0Ny4uZDg4MDE3MmRlNzIyN2FhODczNTFmNGFlOTNhNDRhMTY2
NmJlZWRjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9kcmFnLW92
ZXItcmVtb3RlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9jYWwvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtNyw1ICs3
LDUgQEAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTA3IHwgcmRh
cjovL3Byb2JsZW0vNjkxMDgzMi4KIAogVG8gdGVzdCwgZHJhZyBBYmUncyBpbWFnZSBpbnRvIHRo
aXMgbGlnaHQgYmx1ZSBkaXYuCiAKLVBBU1M6IG9uZHJhZ292ZXIgc2F3IGEgVVJMIG9mICd1bmRl
ZmluZWQnCitQQVNTOiBvbmRyYWdvdmVyIHNhdyBhIFVSTCBvZiAnJwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2RyYWctb3Zlci1yZW1vdGUtY29udGVudC1p
ZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9kcmFn
LW92ZXItcmVtb3RlLWNvbnRlbnQtaWZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCAxYjZjOWQ0NzZm
OGViM2YyMzdlOWE2YzJhYmEyNTI1OGIyYjBhOTU4Li5lYjEyZTA0NDdmMmQ4NDIxZmM1MmUyYWVk
NmIzOTZjMDUyMzgzMmQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2RyYWctb3Zlci1yZW1vdGUtY29udGVudC1pZnJhbWUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTQsNSArNCw1IEBAIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTkwNyB8IHJkYXI6Ly9wcm9ibGVtLzY5MTA4MzIuCiAKIFRvIHRl
c3QsIGRyYWcgQWJlJ3MgaW1hZ2UgaW50byB0aGlzIGxpZ2h0IGJsdWUgZGl2LgogCi1QQVNTOiBv
bmRyYWdvdmVyIHNhdyBhIFVSTCBvZiAndW5kZWZpbmVkJworUEFTUzogb25kcmFnb3ZlciBzYXcg
YSBVUkwgb2YgJycKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9kcmFnLW92ZXItcmVtb3RlLWNvbnRlbnQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2RyYWctb3Zlci1yZW1vdGUtY29udGVudC1pZnJhbWUuaHRtbAppbmRl
eCA3OTQyODY2MjcwNTc5ZDc4ZTgwNjY4YWM3ODQ5MzcwZTA0YWMyOTkwLi42MzlhYmYzZDE4NmEz
ZjBlNDQ2NTUyMWVjMmJjYTdmYmU2MTY5OTdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2RyYWctb3Zlci1yZW1vdGUtY29udGVudC1pZnJhbWUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2RyYWctb3Zlci1yZW1vdGUtY29udGVu
dC1pZnJhbWUuaHRtbApAQCAtMTcsOCArMTcsOCBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24g
KCkgewogCiAgICAgZHJhZ1RhcmdldC5vbmRyYWdvdmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
IHZhciB1cmwgPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgnVVJMJyk7Ci0gICAgICAgIHZh
ciByZXN1bHQgPSB1cmwgPT09IHVuZGVmaW5lZAotICAgICAgICAgICAgPyAiUEFTUzogb25kcmFn
b3ZlciBzYXcgYSBVUkwgb2YgJ3VuZGVmaW5lZCciCisgICAgICAgIHZhciByZXN1bHQgPSB1cmwg
PT09ICcnCisgICAgICAgICAgICA/ICJQQVNTOiBvbmRyYWdvdmVyIHNhdyBhIFVSTCBvZiAnJyIK
ICAgICAgICAgICAgIDogIkZBSUw6IG9uZHJhZ292ZXIgc2F3IGEgVVJMIG9mICciICsgdXJsICsg
IiciOwogICAgICAgICBsb2cocmVzdWx0KTsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129149</attachid>
            <date>2012-02-27 17:43:15 -0800</date>
            <delta_ts>2012-02-28 14:36:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79712-20120227174314.patch</filename>
            <type>text/plain</type>
            <size>36866</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAwMGU4YjM3MTYwNGZl
MmU5NDMwNTQ4NjZlNDc3NjFkYzkwYTUxMy4uY2E2Yjk0NGEwZWFmNTU1ZWIwNWIxMmQ0Yzc1Zjkw
YzcwNDA5ZjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAyLTI3ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsaXBib2FyZDo6Z2V0
RGF0YSBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mIHVuZGVmaW5lZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXIgdGhlIHNw
ZWMsIGFuIGVtcHR5IHN0cmluZyBzaG91bGQgYmUgcmV0dXJuZWQgd2hlbiB0aGVyZSBpcyBubyBk
YXRhIGZvciB0aGUgZ2l2ZW4gdHlwZXN0cmluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50
cy9kYXRhVHJhbnNmZXItZ2V0RGF0YS1yZXR1cm5zLWVtcHR5LXN0cmluZy5odG1sCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBkb20vQ2xpcGJv
YXJkLmg6CisgICAgICAgIChDbGlwYm9hcmQpOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmQuaWRs
OgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRCbGFja0JlcnJ5OjpnZXREYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuaDoKKyAgICAgICAg
KENsaXBib2FyZEJsYWNrQmVycnkpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpn
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5o
OgorICAgICAgICAoQ2xpcGJvYXJkQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9D
bGlwYm9hcmRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRWZsOjpnZXREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmg6CisgICAgICAgIChDbGlw
Ym9hcmRFZmwpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkR3RrLmg6CisgICAgICAgIChDbGlwYm9hcmRHdGspOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaDoKKyAgICAgICAgKENsaXBib2FyZE1hYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZE1hYzo6Z2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJk
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmdldERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0Lmg6CisgICAgICAgIChDbGlwYm9hcmRRdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRGdWxsQ0ZIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VGV4
dEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q0ZIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6
OmZyYWdtZW50RnJvbUhUTUwpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9D
bGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmg6CisgICAgICAgIChDbGlw
Ym9hcmRXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFd4OjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
eC9DbGlwYm9hcmRXeC5oOgorICAgICAgICAoQ2xpcGJvYXJkV3gpOgorCiAyMDEyLTAyLTIzICBM
ZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTd2l0Y2ggZHJh
d0xpbmVGb3JCb3hTaWRlIHRvIHVzZSBpbnRlZ2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IDM1MzJjNzg1OTI0ZmFkZGMyZmQy
OWYwNzY0NTFmY2U5M2IyMjg5ZDguLjZjMTIxN2VhOTcwZGIzNjljYmNkN2NiMjYxMjhjMjIxMDY0
MGRlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJk
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1
c3RvbS5jcHAKQEAgLTY2LDIyICs2Niw2IEBAIEpTVmFsdWUgSlNDbGlwYm9hcmQ6OmNsZWFyRGF0
YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgImNsZWFyRGF0YTogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIikp
OwogfQogCi1KU1ZhbHVlIEpTQ2xpcGJvYXJkOjpnZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICAvLyBGSVhNRTogSXQgZG9lcyBub3QgbWF0Y2ggdGhlIHJlc3Qgb2YgdGhlIEpTIGJpbmRp
bmdzIHRvIHRocm93IG9uIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cy4KLSAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpICE9IDEpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJnZXREYXRhOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1
bWVudHMiKSk7Ci0KLSAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGltcGwoKTsKLQotICAgIGJv
b2wgc3VjY2VzczsKLSAgICBTdHJpbmcgcmVzdWx0ID0gY2xpcGJvYXJkLT5nZXREYXRhKHVzdHJp
bmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
LCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotCi0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCk7Ci19Ci0KIEpTVmFsdWUg
SlNDbGlwYm9hcmQ6OnNldERyYWdJbWFnZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgQ2xpcGJv
YXJkKiBjbGlwYm9hcmQgPSBpbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRleCA1MWQ2ZjJjNzIxMmI4
ZDE4MDM3NjcyZmIxYmY3ZjBiYjY1MzFiYTE2Li42NjUyNzBjMjY2NDA4NWQ2MWQ4MWI2MDQ5N2Rm
YTBjMmM2NTI1NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKQEAgLTYyLDIyICs2Miw2IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OmdldERhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkNsaXBib2FyZC5nZXREYXRhKCki
KTsKLSAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xpcGJvYXJkOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDEpCi0gICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKCJnZXREYXRhOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiLCBWOFBy
b3h5OjpTeW50YXhFcnJvcik7Ci0KLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgU3RyaW5nIHJlc3Vs
dCA9IGNsaXBib2FyZC0+Z2V0RGF0YSh0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIHN1Y2Nlc3Mp
OwotICAgIGlmIChzdWNjZXNzKQotICAgICAgICByZXR1cm4gdjhTdHJpbmcocmVzdWx0KTsKLQot
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQuc2V0RHJhZ0ltYWdlKCkiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DbGlwYm9hcmQuaAppbmRleCBkMzM4MjlhNmMxOWMxMWI2ZDMyYTc5MmUzNzE0ZWM0ODgz
YjMxZmZiLi5mNDY1MDJkMjliZWMyM2Q0YmFlZTVlODQ3MTdhYTUxM2FkZTllYTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NsaXBib2FyZC5oCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRGF0YSgpID0gMDsKLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpID0gMDsKICAgICAKICAgICAgICAgLy8gZXh0ZW5z
aW9ucyBiZXlvbmQgSUUncyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5pZGwKaW5kZXggYzFjNTg1
MGVjMTMwZDAzNmZhN2FlYmZmNzExMGY5YjBlMmZjNjg1Yi4uN2RlOTFjYTkxM2JjNmUzZThlMThj
NjBjOGI4NWZlZTY3YTNhM2YyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBi
b2FyZC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5pZGwKQEAgLTM2LDgg
KzM2LDcgQEAgbW9kdWxlIGNvcmUgewogCiAgICAgICAgIFtDdXN0b21dIHZvaWQgY2xlYXJEYXRh
KGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIHR5cGUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXREYXRhKGluIERPTVN0cmluZyB0eXBl
KQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIERPTVN0cmluZyBn
ZXREYXRhKGluIERPTVN0cmluZyB0eXBlKTsKICAgICAgICAgYm9vbGVhbiBzZXREYXRhKGluIERP
TVN0cmluZyB0eXBlLCBpbiBET01TdHJpbmcgZGF0YSk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQg
c2V0RHJhZ0ltYWdlKGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIGluIGxvbmcgeCwgaW4gbG9u
ZyB5KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNw
cAppbmRleCBiMjI0ZDVjYjAxOWU1NzczN2FiYzY4NDA3NWUzYTAzNDRjNmFiYzkwLi4xNDIzMjc4
NDk3YmVmMzU4NTU4MGVlM2M1Nzg4YjA3NWQyZDQyNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJyeS5jcHAK
QEAgLTU2LDkgKzU2LDggQEAgdm9pZCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjbGVhckFsbERhdGEo
KQogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OmNsZWFyQ2xpcGJvYXJkKCk7
CiB9CiAKLVN0cmluZyBDbGlwYm9hcmRCbGFja0JlcnJ5OjpnZXREYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKK1N0cmluZyBDbGlwYm9hcmRCbGFja0JlcnJ5Ojpn
ZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKLSAgICBzdWNjZXNzID0gdHJ1ZTsK
ICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJv
YXJkOjpyZWFkQ2xpcGJvYXJkQnlUeXBlKHR5cGUudXRmOCgpLmRhdGEoKSkuY19zdHIoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJv
YXJkQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlw
Ym9hcmRCbGFja0JlcnJ5LmgKaW5kZXggMjU1ZDZhYTI4NGNjNjkyM2ZjMmYwYzQ0NzI5YmIwNDZi
MThiNDBlNC4uMDExM2UwMTE3OTBmNTk4ODRjYzU2OGI1MDE0ZDE5MDZhOWU2YTRkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0Jl
cnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRC
bGFja0JlcnJ5LmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckRh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwotICAgIFN0
cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7Cisg
ICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBib29sIHNl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogCiAgICAgLy8g
ZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCAxYjE1MzZlMzU0NTQy
MWQzMWVlZjJlNWZiZmJkNzg2MGFiMzk0ODk2Li4xOGNkYjlkOTRhMzZkODEyZWRmNTRlZGM0Yjk3
YjZjMDU0OWRlMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC0yNjMsMTYgKzI2MywxNiBAQCB2b2lkIENs
aXBib2FyZENocm9taXVtOjpjbGVhckFsbERhdGEoKQogICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJB
bGwoKTsKIH0KIAotU3RyaW5nIENsaXBib2FyZENocm9taXVtOjpnZXREYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKK1N0cmluZyBDbGlwYm9hcmRDaHJvbWl1bTo6
Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAgc3VjY2VzcyA9IGZhbHNl
OworICAgIGJvb2wgaWdub3JlZFN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAocG9saWN5KCkgIT0g
Q2xpcGJvYXJkUmVhZGFibGUgfHwgIW1fZGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgaWYgKGlzRm9yQ29weUFuZFBhc3RlKCkgJiYgcGxhdGZvcm1DbGlwYm9hcmRD
aGFuZ2VkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBtX2RhdGFP
YmplY3QtPmdldERhdGEobm9ybWFsaXplVHlwZSh0eXBlKSwgc3VjY2Vzcyk7CisgICAgcmV0dXJu
IG1fZGF0YU9iamVjdC0+Z2V0RGF0YShub3JtYWxpemVUeXBlKHR5cGUpLCBpZ25vcmVkU3VjY2Vz
cyk7CiB9CiAKIGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06OnNldERhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaAppbmRleCBhZTllYjcxMWIxZDgyY2RiNThl
ZDIyZGEzZTAxMjAyYzgyZjBhNTc3Li44MDU5NzVhNmU2ZjFkMTVkZTM1ZGUyMWIyYzhkMDVkN2E5
MDdmZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmgKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAg
ICAgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKLSAgICAgICAgU3RyaW5nIGdldERhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIGdldERh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICAgICAgYm9vbCBzZXREYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICAgICAgYm9vbCBwbGF0Zm9y
bUNsaXBib2FyZENoYW5nZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvQ2xpcGJvYXJkRWZsLmNwcAppbmRleCA2MDE1MjcyNmE0OTUyMzdjOWMyNTgyNjgzNjE0OTM1
ZjJiZDZlYTRjLi42M2U1NjE1ZGQ1MzQxNDAzMGJlNDc4ZmE4ODg2MmMzZjQ5YjgyOTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcApAQCAtNjUsMTAg
KzY1LDkgQEAgdm9pZCBDbGlwYm9hcmRFZmw6OmNsZWFyQWxsRGF0YSgpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotU3RyaW5nIENsaXBib2FyZEVmbDo6Z2V0RGF0YShjb25zdCBTdHJpbmcm
LCBib29sICZzdWNjZXNzKSBjb25zdAorU3RyaW5nIENsaXBib2FyZEVmbDo6Z2V0RGF0YShjb25z
dCBTdHJpbmcmKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgc3VjY2VzcyA9
IGZhbHNlOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL0NsaXBib2FyZEVmbC5oCmluZGV4IDU2NDU1MTkwZjVjNjkyNGY1NjYzZjkyZDhmNzcz
NjMwYjU2YTEyMzMuLjAyYmI1MjhlNWU0ZjQ4MWMwOTY4YmQ0M2M0ODM0MmY1MmNmYjBmNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmgKQEAgLTM2LDcgKzM2
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBjbGVhckFsbERhdGEoKTsKLSAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmLCBi
b29sJikgY29uc3Q7CisgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAg
ICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiB0eXBlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCBiMjAyMTY3NjBiYTU4NjI5ZjI1Y2Y3
M2E2ODc3Mzg0YmJmYTQ0OWExLi5hYzk3NjIyMThiYjNmYWUwNzkzMmE5YTI3NTc0NmU3ZmJkZWUw
ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApA
QCAtMTQzLDEzICsxNDMsOCBAQCB2b2lkIENsaXBib2FyZEd0azo6Y2xlYXJBbGxEYXRhKCkKICAg
ICAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVD
bGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7CiB9CiAKLVN0cmluZyBDbGlwYm9hcmRHdGs6
OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBib29sJiBzdWNjZXNzKSBjb25zdAor
U3RyaW5nIENsaXBib2FyZEd0azo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpIGNv
bnN0CiB7Ci0gICAgc3VjY2VzcyA9IHRydWU7IC8vIEFjY29yZGluZyB0byBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9kbmQuaHRtbAot
ICAgIC8vICJUaGUgZ2V0RGF0YShmb3JtYXQpIG1ldGhvZCBtdXN0IHJldHVybiB0aGUgZGF0YSB0
aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHlwZSBmb3JtYXQgY29udmVydGVkCi0gICAgLy8g
dG8gQVNDSUkgbG93ZXJjYXNlLCBpZiBhbnksIGFuZCBtdXN0IHJldHVybiB0aGUgZW1wdHkgc3Ry
aW5nIG90aGVyd2lzZS4iIFNpbmNlIHN1Y2Nlc3MgPT0gZmFsc2UgCi0gICAgLy8gcmVzdWx0cyBp
biBhbiAndW5kZWZpbmVkJyByZXR1cm4gdmFsdWUsIHdlIGFsd2F5cyB3YW50IHRvIHJldHVybiBz
dWNjZXNzID09IHRydWUuIFRoaXMgcGFyYW1ldGVyCi0gICAgLy8gc2hvdWxkIGV2ZW50dWFsbHkg
YmUgcmVtb3ZlZC4KICAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgIW1f
ZGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggYjcyZTFjODFiZTY5YmU4NzgzMzdmYzk4
OWI0MzBiODVkZWYzMTMwNS4uNmFkMTRiN2UxMDZlYWQzNzU1OWM4NWZmN2E3MGNhMTI4YzljOWJj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtNTQs
NyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBjbGVhckRhdGEo
Y29uc3QgU3RyaW5nJik7CiAgICAgICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7Ci0gICAgICAgIFN0
cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYsIGJvb2wmKSBjb25zdDsKKyAgICAgICAgU3RyaW5n
IGdldERhdGEoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIGJvb2wgc2V0RGF0YShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gdHlwZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9DbGlwYm9hcmRNYWMuaAppbmRleCBhODRmMjg5ZGNhOGMyNDViZDM0ZTY5NDcxMGQzOTZkMGMy
ZTZjNDE1Li5kMjhiZjJlN2M4Y2U1ZjIzNjI1ODIxOTRkMGNkOGMzYjI1ODQxMjgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5oCkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwog
ICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7Ci0gICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IDg4ZWVm
Y2I1MzI2M2IxNjdhZmQ4NmRhYWI3ZjljOWQ2MmU5MTE0ZTAuLjBjY2ZmMDBmNDg1NWQxZmNhZGZm
YzU4YTU3NDA5YjdmN2EyYmVlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ns
aXBib2FyZE1hYy5tbQpAQCAtMjEyLDkgKzIxMiw4IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBh
YnNvbHV0ZVVSTHNGcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBi
CiAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiB9CiAKLVN0cmluZyBDbGlwYm9hcmRNYWM6
OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAorU3RyaW5n
IENsaXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7Ci0gICAg
c3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0yMzYsNyArMjM1LDYgQEAgU3RyaW5nIENs
aXBib2FyZE1hYzo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0CiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9yIHNlY3VyaXR5LiAg
V2UgY2hlY2sgYWZ0ZXIgcmVhZGluZyBpbnN0ZWFkIG9mIGJlZm9yZSB0byBiZQogICAgIC8vIHN1
cmUgaXQgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiBvdXIgdGVzdGluZyB0aGUgY2hhbmdlIGNvdW50
IGFuZCBhY2Nlc3NpbmcgdGhlIGRhdGEuCiAgICAgaWYgKCFjb2NvYVZhbHVlLmlzRW1wdHkoKSAm
JiBtX2NoYW5nZUNvdW50ID09IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSkpIHsKLSAgICAgICAgc3VjY2VzcyA9
IHRydWU7CiAgICAgICAgIHJldHVybiBjb2NvYVZhbHVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCmluZGV4IDNkOGJhYjFmNjVhYjljMzY5YmI0
NTE0OTI4NTZkZjI5NzNlMGU0N2IuLmRmZjFiYjdkZWViMzcyZDYyYmI2ZTY4YmU2ZjVjMGRiODhj
YWFlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAg
LTE0NCwyOCArMTQ0LDIxIEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmNsZWFyQWxsRGF0YSgpCiAgICAg
bV93cml0YWJsZURhdGEgPSAwOwogfQogCi1TdHJpbmcgQ2xpcGJvYXJkUXQ6OmdldERhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAorU3RyaW5nIENsaXBib2FyZFF0
OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKIAotICAgIGlmIChwb2xpY3ko
KSAhPSBDbGlwYm9hcmRSZWFkYWJsZSkgewotICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
aWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgfQogCi0gICAgaWYgKGlzSHRtbE1pbWVUeXBlKHR5cGUpICYmIG1fcmVhZGFibGVE
YXRhLT5oYXNIdG1sKCkpIHsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgaWYgKGlzSHRt
bE1pbWVUeXBlKHR5cGUpICYmIG1fcmVhZGFibGVEYXRhLT5oYXNIdG1sKCkpCiAgICAgICAgIHJl
dHVybiBtX3JlYWRhYmxlRGF0YS0+aHRtbCgpOwotICAgIH0KIAotICAgIGlmIChpc1RleHRNaW1l
VHlwZSh0eXBlKSAmJiBtX3JlYWRhYmxlRGF0YS0+aGFzVGV4dCgpKSB7Ci0gICAgICAgIHN1Y2Nl
c3MgPSB0cnVlOworICAgIGlmIChpc1RleHRNaW1lVHlwZSh0eXBlKSAmJiBtX3JlYWRhYmxlRGF0
YS0+aGFzVGV4dCgpKQogICAgICAgICByZXR1cm4gbV9yZWFkYWJsZURhdGEtPnRleHQoKTsKLSAg
ICB9CiAKICAgICBBU1NFUlQobV9yZWFkYWJsZURhdGEpOwogICAgIFFCeXRlQXJyYXkgcmF3RGF0
YSA9IG1fcmVhZGFibGVEYXRhLT5kYXRhKHR5cGUpOwogICAgIFFTdHJpbmcgZGF0YSA9IFFUZXh0
Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTE2IiktPnRvVW5pY29kZShyYXdEYXRhKTsKLSAgICBz
dWNjZXNzID0gIWRhdGEuaXNFbXB0eSgpOwogICAgIHJldHVybiBkYXRhOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaAppbmRleCBhODQwYmVjZjZkOTk2ZmU3NjI3
MTE3ZWJlYzE5MzUwOThmNzgxM2QwLi5lOTNmNDFmYmFjZDNjMTU1YjY2OWRmNjg4MTI3MjMwNzg3
OTZjOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRR
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0
eXBlKTsKICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwotICAgIFN0cmluZyBnZXREYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3Q7CisgICAgU3RyaW5nIGdldERhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogCiAgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQg
SUUncyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggODI3ZTM1ODhjNTlkOWIwYTFhMTdhNjczZGEwYjY3ZDY2
NzgzZTY3ZC4uMmMxODI5MmQ5NmJhNzk3MTY2ZWFjMTJkMDE0MmNmYjFiYzJkNjQ3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dp
bi5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3Qg
VmVjdG9yPGNoYXI+JiB2ZWN0b3IpCiAgICAgcmV0dXJuIGdsb2JhbERhdGE7CiB9CiAKLXN0YXRp
YyBTdHJpbmcgZ2V0RnVsbENGSFRNTChJRGF0YU9iamVjdCogZGF0YSwgYm9vbCYgc3VjY2VzcykK
K3N0YXRpYyBTdHJpbmcgZ2V0RnVsbENGSFRNTChJRGF0YU9iamVjdCogZGF0YSkKIHsKICAgICBT
VEdNRURJVU0gc3RvcmU7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5HZXREYXRhKGh0bWxGb3Jt
YXQoKSwgJnN0b3JlKSkpIHsKQEAgLTIxOCwxMCArMjE4LDggQEAgc3RhdGljIFN0cmluZyBnZXRG
dWxsQ0ZIVE1MKElEYXRhT2JqZWN0KiBkYXRhLCBib29sJiBzdWNjZXNzKQogICAgICAgICBTdHJp
bmcgY2ZodG1sKFVURjhFbmNvZGluZygpLmRlY29kZShkYXRhLCBkYXRhU2l6ZSkpOwogICAgICAg
ICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0o
JnN0b3JlKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgICAgIHJldHVybiBjZmh0bWw7
CiAgICAgfQotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
QEAgLTQ0Nyw1OSArNDQ1LDUwIEBAIHZvaWQgc2V0RmlsZUNvbnRlbnREYXRhKElEYXRhT2JqZWN0
KiBkYXRhT2JqZWN0LCBpbnQgc2l6ZSwgdm9pZCogZGF0YUJsb2IpCiAgICAgZGF0YU9iamVjdC0+
U2V0RGF0YShmaWxlQ29udGVudEZvcm1hdFplcm8oKSwgJm1lZGl1bSwgVFJVRSk7CiB9CiAKLVN0
cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIERyYWdEYXRhOjpGaWxlbmFtZUNv
bnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0
bGUpCitTdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBEcmFnRGF0YTo6Rmls
ZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKQogewog
ICAgIFNUR01FRElVTSBzdG9yZTsKICAgICBTdHJpbmcgdXJsOwotICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKLSAgICBpZiAoZ2V0V2ViTG9jRGF0YShkYXRhT2JqZWN0LCB1cmwsIHRpdGxlKSkKLSAgICAg
ICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdl
dERhdGEodXJsV0Zvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAgICAvLyBVUkwgdXNpbmcgVW5p
Y29kZQotICAgICAgICBVQ2hhciogZGF0YSA9IHN0YXRpY19jYXN0PFVDaGFyKj4oR2xvYmFsTG9j
ayhzdG9yZS5oR2xvYmFsKSk7Ci0gICAgICAgIHVybCA9IGV4dHJhY3RVUkwoU3RyaW5nKGRhdGEp
LCB0aXRsZSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKLSAgICAgICAg
UmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwotICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKLSAgICB9
IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKHVybEZvcm1hdCgpLCAmc3Rv
cmUpKSkgewotICAgICAgICAvLyBVUkwgdXNpbmcgQVNDSUkKLSAgICAgICAgY2hhciogZGF0YSA9
IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKLSAgICAgICAg
dXJsID0gZXh0cmFjdFVSTChTdHJpbmcoZGF0YSksIHRpdGxlKTsKLSAgICAgICAgR2xvYmFsVW5s
b2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7Ci0g
ICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgIH0KLSNpZiBVU0UoQ0YpCi0gICAgZWxzZSBpZiAo
ZmlsZW5hbWVQb2xpY3kgPT0gRHJhZ0RhdGE6OkNvbnZlcnRGaWxlbmFtZXMpIHsKLSAgICAgICAg
aWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lV0Zvcm1hdCgpLCAmc3Rv
cmUpKSkgewotICAgICAgICAgICAgLy8gZmlsZSB1c2luZyB1bmljb2RlCi0gICAgICAgICAgICB3
Y2hhcl90KiBkYXRhID0gc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KEdsb2JhbExvY2soc3RvcmUuaEds
b2JhbCkpOwotICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlz
dHMoZGF0YSkgfHwgUGF0aElzVU5DKGRhdGEpKSkgewotICAgICAgICAgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciopZGF0YSwgd2Nz
bGVuKGRhdGEpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3Ry
aW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICp0aXRsZSA9IHVybDsKLSAgICAgICAgICAgICAgICAgICAgc3Vj
Y2VzcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgIGlmICgh
Z2V0V2ViTG9jRGF0YShkYXRhT2JqZWN0LCB1cmwsIHRpdGxlKSkgeworICAgICAgICBpZiAoU1VD
Q0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEodXJsV0Zvcm1hdCgpLCAmc3RvcmUpKSkgeworICAg
ICAgICAgICAgLy8gVVJMIHVzaW5nIFVuaWNvZGUKKyAgICAgICAgICAgIFVDaGFyKiBkYXRhID0g
c3RhdGljX2Nhc3Q8VUNoYXIqPihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKKyAgICAgICAg
ICAgIHVybCA9IGV4dHJhY3RVUkwoU3RyaW5nKGRhdGEpLCB0aXRsZSk7CiAgICAgICAgICAgICBH
bG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgICAgICBSZWxlYXNlU3RnTWVkaXVt
KCZzdG9yZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERh
dGEoZmlsZW5hbWVGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgICAgIC8vIGZpbGVuYW1l
IHVzaW5nIGFzY2lpCisgICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdl
dERhdGEodXJsRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAgICAgICAgICAvLyBVUkwgdXNpbmcg
QVNDSUkKICAgICAgICAgICAgIGNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFs
TG9jayhzdG9yZS5oR2xvYmFsKSk7Ci0gICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYm
IChQYXRoRmlsZUV4aXN0c0EoZGF0YSkgfHwgUGF0aElzVU5DQShkYXRhKSkpIHsKLSAgICAgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSwga0NGU3Ry
aW5nRW5jb2RpbmdBU0NJSSkpOwotICAgICAgICAgICAgICAgIGlmICh1cmxGcm9tUGF0aChwYXRo
QXNDRlN0cmluZy5nZXQoKSwgdXJsKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUp
CisgICAgICAgICAgICB1cmwgPSBleHRyYWN0VVJMKFN0cmluZyhkYXRhKSwgdGl0bGUpOworICAg
ICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgUmVsZWFz
ZVN0Z01lZGl1bSgmc3RvcmUpOworICAgICAgICB9CisjaWYgVVNFKENGKQorICAgICAgICBlbHNl
IGlmIChmaWxlbmFtZVBvbGljeSA9PSBEcmFnRGF0YTo6Q29udmVydEZpbGVuYW1lcykgeworICAg
ICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lV0Zvcm1h
dCgpLCAmc3RvcmUpKSkgeworICAgICAgICAgICAgICAgIC8vIGZpbGUgdXNpbmcgdW5pY29kZQor
ICAgICAgICAgICAgICAgIHdjaGFyX3QqIGRhdGEgPSBzdGF0aWNfY2FzdDx3Y2hhcl90Kj4oR2xv
YmFsTG9jayhzdG9yZS5oR2xvYmFsKSk7CisgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0
YVswXSAmJiAoUGF0aEZpbGVFeGlzdHMoZGF0YSkgfHwgUGF0aElzVU5DKGRhdGEpKSkgeworICAg
ICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFk
b3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KGNvbnN0IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkpOworICAgICAgICAgICAgICAgICAg
ICBpZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkgJiYgdGl0bGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKKyAgICAgICAgICAg
ICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKFNV
Q0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lRm9ybWF0KCksICZzdG9yZSkpKSB7
CisgICAgICAgICAgICAgICAgLy8gZmlsZW5hbWUgdXNpbmcgYXNjaWkKKyAgICAgICAgICAgICAg
ICBjaGFyKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soc3RvcmUuaEdsb2Jh
bCkpOworICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhp
c3RzQShkYXRhKSB8fCBQYXRoSXNVTkNBKGRhdGEpKSkgeworICAgICAgICAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3Jl
YXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSwga0NGU3RyaW5nRW5jb2Rp
bmdBU0NJSSkpOworICAgICAgICAgICAgICAgICAgICBpZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZT
dHJpbmcuZ2V0KCksIHVybCkgJiYgdGl0bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAqdGl0
bGUgPSB1cmw7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7Cisg
ICAgICAgICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICAgICAgUmVs
ZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgICAgICB9Ci0gICAgfQogI2VuZGlmCisgICAgfQog
ICAgIHJldHVybiB1cmw7CiB9CiAKQEAgLTUzMCwzMSArNTE5LDI3IEBAIFN0cmluZyBnZXRVUkwo
Y29uc3QgRHJhZ0RhdGFNYXAqIGRhdGEsIERyYWdEYXRhOjpGaWxlbmFtZUNvbnZlcnNpb25Qb2xp
Y3kgZmlsZW5hCiAgICAgcmV0dXJuIHVybDsKIH0KIAotU3RyaW5nIGdldFBsYWluVGV4dChJRGF0
YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcykKK1N0cmluZyBnZXRQbGFpblRleHQo
SURhdGFPYmplY3QqIGRhdGFPYmplY3QpCiB7CiAgICAgU1RHTUVESVVNIHN0b3JlOwogICAgIFN0
cmluZyB0ZXh0OwotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGFP
YmplY3QtPkdldERhdGEocGxhaW5UZXh0V0Zvcm1hdCgpLCAmc3RvcmUpKSkgewogICAgICAgICAv
LyBVbmljb2RlIHRleHQKICAgICAgICAgVUNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxVQ2hhcio+
KEdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCkpOwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRhdGEp
OwogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIFJlbGVhc2VT
dGdNZWRpdW0oJnN0b3JlKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIGlm
IChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShwbGFpblRleHRGb3JtYXQoKSwgJnN0b3Jl
KSkpIHsKICAgICAgICAgLy8gQVNDSUkgdGV4dAogICAgICAgICBjaGFyKiBkYXRhID0gc3RhdGlj
X2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCkpOwogICAgICAgICB0ZXh0ID0g
U3RyaW5nKGRhdGEpOwogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAg
ICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IE9yaWdpbmFsbHksIHdlIGNhbGxlZCBnZXRV
UkwoKSBoZXJlIGJlY2F1c2UgZHJhZ2dpbmcgYW5kIGRyb3BwaW5nIGZpbGVzIGRvZXNuJ3QKICAg
ICAgICAgLy8gcG9wdWxhdGUgdGhlIGRyYWcgd2l0aCB0ZXh0IGRhdGEuIFBlciBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYsIHRoaXMKICAgICAgICAgLy8gaXMg
dW5kZXNpcmFibGUsIHNvIG1heWJlIHRoaXMgbGluZSBjYW4gYmUgcmVtb3ZlZC4KLSAgICAgICAg
dGV4dCA9IGdldFVSTChkYXRhT2JqZWN0LCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVz
LCBzdWNjZXNzKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIHRleHQgPSBnZXRV
UkwoZGF0YU9iamVjdCwgRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcyk7CiAgICAgfQog
ICAgIHJldHVybiB0ZXh0OwogfQpAQCAtNTcwLDE3ICs1NTUsMTUgQEAgU3RyaW5nIGdldFBsYWlu
VGV4dChjb25zdCBEcmFnRGF0YU1hcCogZGF0YSkKICAgICByZXR1cm4gZ2V0VVJMKGRhdGEsIERy
YWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpOwogfQogCi1TdHJpbmcgZ2V0VGV4dEhUTUwo
SURhdGFPYmplY3QqIGRhdGEsIGJvb2wmIHN1Y2Nlc3MpCitTdHJpbmcgZ2V0VGV4dEhUTUwoSURh
dGFPYmplY3QqIGRhdGEpCiB7CiAgICAgU1RHTUVESVVNIHN0b3JlOwogICAgIFN0cmluZyBodG1s
OwotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPkdldERhdGEo
dGV4dGh0bWxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKICAgICAgICAgVUNoYXIqIGRhdGEgPSBzdGF0
aWNfY2FzdDxVQ2hhcio+KEdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCkpOwogICAgICAgICBodG1s
ID0gU3RyaW5nKGRhdGEpOwogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAg
ICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKLSAgICAgICAgc3VjY2VzcyA9IHRydWU7
CiAgICAgfQogICAgIHJldHVybiBodG1sOwogfQpAQCAtNTkyLDEwICs1NzUsMTAgQEAgU3RyaW5n
IGdldFRleHRIVE1MKGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhKQogICAgIHJldHVybiB0ZXh0Owog
fQogCi1TdHJpbmcgZ2V0Q0ZIVE1MKElEYXRhT2JqZWN0KiBkYXRhLCBib29sJiBzdWNjZXNzKQor
U3RyaW5nIGdldENGSFRNTChJRGF0YU9iamVjdCogZGF0YSkKIHsKLSAgICBTdHJpbmcgY2ZodG1s
ID0gZ2V0RnVsbENGSFRNTChkYXRhLCBzdWNjZXNzKTsKLSAgICBpZiAoc3VjY2VzcykKKyAgICBT
dHJpbmcgY2ZodG1sID0gZ2V0RnVsbENGSFRNTChkYXRhKTsKKyAgICBpZiAoIWNmaHRtbC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBleHRyYWN0TWFya3VwRnJvbUNGSFRNTChjZmh0bWwpOwog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KQEAgLTY1NSwxNiArNjM4LDE1IEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tSFRNTChEb2N1bWVudCogZG9jLCBJRGF0YU9i
amVjdCogZGF0YSkKICAgICBpZiAoIWRvYyB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBTdHJpbmcgY2ZodG1sID0gZ2V0RnVsbENG
SFRNTChkYXRhLCBzdWNjZXNzKTsKLSAgICBpZiAoc3VjY2VzcykgeworICAgIFN0cmluZyBjZmh0
bWwgPSBnZXRGdWxsQ0ZIVE1MKGRhdGEpOworICAgIGlmICghY2ZodG1sLmlzRW1wdHkoKSkgewog
ICAgICAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRG
cm9tQ0ZIVE1MKGRvYywgY2ZodG1sKSkKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxl
YXNlKCk7CiAgICAgfQogCi0gICAgU3RyaW5nIGh0bWwgPSBnZXRUZXh0SFRNTChkYXRhLCBzdWNj
ZXNzKTsKKyAgICBTdHJpbmcgaHRtbCA9IGdldFRleHRIVE1MKGRhdGEpOwogICAgIFN0cmluZyBz
cmNVUkw7Ci0gICAgaWYgKHN1Y2Nlc3MpCisgICAgaWYgKCFodG1sLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2MsIGh0bWwsIHNyY1VSTCwgRnJh
Z21lbnRTY3JpcHRpbmdOb3RBbGxvd2VkKTsKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmluZGV4IDc1
MDFkNTZmMTdmZDcyMDI5MTRmZWFjZTVhNDViODAyYmM2Mzk0NzYuLmU4ZDQ3NTVlMzc5ODM2NmQ5
MmM2NzExYmUwNzI0YTMwNjM5YmE0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKQEAgLTY3LDEzICs2NywxMyBAQCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqLCBJRGF0
YU9iamVjdCopOwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21IVE1M
KERvY3VtZW50KiwgY29uc3QgRHJhZ0RhdGFNYXAqKTsKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnRGcm9tQ0ZIVE1MKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBjZmh0bWwp
OwogCi1TdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSwgYm9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSA9IDApOworU3RyaW5nIGdl
dFVSTChJRGF0YU9iamVjdCosIERyYWdEYXRhOjpGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0
cmluZyogdGl0bGUgPSAwKTsKIFN0cmluZyBnZXRVUkwoY29uc3QgRHJhZ0RhdGFNYXAqLCBEcmFn
RGF0YTo6RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlID0gMCk7Ci1TdHJp
bmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CitTdHJpbmcgZ2V0
UGxhaW5UZXh0KElEYXRhT2JqZWN0Kik7CiBTdHJpbmcgZ2V0UGxhaW5UZXh0KGNvbnN0IERyYWdE
YXRhTWFwKik7Ci1TdHJpbmcgZ2V0VGV4dEhUTUwoSURhdGFPYmplY3QqLCBib29sJiBzdWNjZXNz
KTsKK1N0cmluZyBnZXRUZXh0SFRNTChJRGF0YU9iamVjdCopOwogU3RyaW5nIGdldFRleHRIVE1M
KGNvbnN0IERyYWdEYXRhTWFwKik7Ci1TdHJpbmcgZ2V0Q0ZIVE1MKElEYXRhT2JqZWN0KiwgYm9v
bCYgc3VjY2Vzcyk7CitTdHJpbmcgZ2V0Q0ZIVE1MKElEYXRhT2JqZWN0Kik7CiBTdHJpbmcgZ2V0
Q0ZIVE1MKGNvbnN0IERyYWdEYXRhTWFwKik7CiAKIHZvaWQgZ2V0Q2xpcGJvYXJkRGF0YShJRGF0
YU9iamVjdCosIEZPUk1BVEVUQyogZmV0YywgVmVjdG9yPFN0cmluZz4mIGRhdGFTdHJpbmdzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggODlj
YWNiMzUxYWJlNTliNzdjM2U3NzRhZjZmOWMxZGY0NGRiNjg5ZC4uMDgwMWYyOTAzNjNhYzcwYTYz
MDQ0Zjc3MmY1MjBhMjRiZjE0MWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5jcHAKQEAgLTQzNiwyMiArNDM2LDIxIEBAIHZvaWQgQ2xpcGJvYXJkV2lu
OjpjbGVhckFsbERhdGEoKQogICAgIG1fZGF0YU9iamVjdCA9IG1fd3JpdGFibGVEYXRhT2JqZWN0
OwogfQogCi1TdHJpbmcgQ2xpcGJvYXJkV2luOjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
Ym9vbCYgc3VjY2VzcykgY29uc3QKK1N0cmluZyBDbGlwYm9hcmRXaW46OmdldERhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAogeyAgICAgCi0gICAgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlm
IChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8fCAoIW1fZGF0YU9iamVjdCAmJiBtX2Ry
YWdEYXRhTWFwLmlzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiAiIjsKIAogICAgIENsaXBib2Fy
ZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKICAg
ICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQotICAgICAgICByZXR1cm4g
bV9kYXRhT2JqZWN0ID8gZ2V0UGxhaW5UZXh0KG1fZGF0YU9iamVjdC5nZXQoKSwgc3VjY2Vzcykg
OiBnZXRQbGFpblRleHQoJm1fZHJhZ0RhdGFNYXApOworICAgICAgICByZXR1cm4gbV9kYXRhT2Jq
ZWN0ID8gZ2V0UGxhaW5UZXh0KG1fZGF0YU9iamVjdC5nZXQoKSkgOiBnZXRQbGFpblRleHQoJm1f
ZHJhZ0RhdGFNYXApOwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkK
LSAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldFVSTChtX2RhdGFPYmplY3QuZ2V0KCks
IERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMsIHN1Y2Nlc3MpIDogZ2V0VVJMKCZtX2Ry
YWdEYXRhTWFwLCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKTsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YU9iamVjdCA/IGdldFVSTChtX2RhdGFPYmplY3QuZ2V0KCksIERyYWdEYXRhOjpE
b05vdENvbnZlcnRGaWxlbmFtZXMpIDogZ2V0VVJMKCZtX2RyYWdEYXRhTWFwLCBEcmFnRGF0YTo6
RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKTsKICAgICBlbHNlIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9h
cmREYXRhVHlwZVRleHRIVE1MKSB7Ci0gICAgICAgIFN0cmluZyBkYXRhID0gbV9kYXRhT2JqZWN0
ID8gZ2V0VGV4dEhUTUwobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKSA6IGdldFRleHRIVE1M
KCZtX2RyYWdEYXRhTWFwKTsKLSAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIFN0cmluZyBk
YXRhID0gbV9kYXRhT2JqZWN0ID8gZ2V0VGV4dEhUTUwobV9kYXRhT2JqZWN0LmdldCgpKSA6IGdl
dFRleHRIVE1MKCZtX2RyYWdEYXRhTWFwKTsKKyAgICAgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybiBkYXRhOwotICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8g
Z2V0Q0ZIVE1MKG1fZGF0YU9iamVjdC5nZXQoKSwgc3VjY2VzcykgOiBnZXRDRkhUTUwoJm1fZHJh
Z0RhdGFNYXApOworICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZIVE1MKG1fZGF0
YU9iamVjdC5nZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAgIH0KICAgICAK
ICAgICByZXR1cm4gIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2lu
LmgKaW5kZXggOGMyMmMwYTM1ZjVlODU2MzdlYmEyNmNhMGIzYTgyYzc2MTE5YjExOC4uNTkyNDVj
OTJkYTU5OWQwMzkxNGEwYzllYzc5YzA3MWI5NjYwNjBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIHZvaWQgY2xlYXJBbGxE
YXRhKCk7Ci0gICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNj
ZXNzKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
OwogICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAKICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggOWFiNjJiOTUwZmZiMDVlOTE0Yzdl
ZDczZWI0ZTQ0YzhmNDVhMTdjMS4uNDZhOTA3M2NiZjQ1NTNiOTVmZTRkYTdlNTFjMDY5MTM5MTlj
ZGYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBA
IC0xMDEsOCArMTAxLDcgQEAgdm9pZCBEcmFnRGF0YTo6Z2V0RHJhZ0ZpbGVDb250ZW50RGF0YShp
bnQgc2l6ZSwgdm9pZCogZGF0YUJsb2IpCiAKIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUq
LCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUp
IGNvbnN0CiB7Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIHJldHVybiAobV9wbGF0Zm9ybURyYWdE
YXRhKSA/IGdldFVSTChtX3BsYXRmb3JtRHJhZ0RhdGEsIGZpbGVuYW1lUG9saWN5LCBzdWNjZXNz
LCB0aXRsZSkgOiBnZXRVUkwoJm1fZHJhZ0RhdGFNYXAsIGZpbGVuYW1lUG9saWN5LCB0aXRsZSk7
CisgICAgcmV0dXJuIChtX3BsYXRmb3JtRHJhZ0RhdGEpID8gZ2V0VVJMKG1fcGxhdGZvcm1EcmFn
RGF0YSwgZmlsZW5hbWVQb2xpY3ksIHRpdGxlKSA6IGdldFVSTCgmbV9kcmFnRGF0YU1hcCwgZmls
ZW5hbWVQb2xpY3ksIHRpdGxlKTsKIH0KIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNGaWxlcygp
IGNvbnN0CkBAIC0xNTUsOCArMTU0LDcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRl
eHQoKSBjb25zdAogCiBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QK
IHsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgcmV0dXJuIChtX3BsYXRmb3JtRHJhZ0RhdGEpID8g
Z2V0UGxhaW5UZXh0KG1fcGxhdGZvcm1EcmFnRGF0YSwgc3VjY2VzcykgOiBnZXRQbGFpblRleHQo
Jm1fZHJhZ0RhdGFNYXApOworICAgIHJldHVybiAobV9wbGF0Zm9ybURyYWdEYXRhKSA/IGdldFBs
YWluVGV4dChtX3BsYXRmb3JtRHJhZ0RhdGEpIDogZ2V0UGxhaW5UZXh0KCZtX2RyYWdEYXRhTWFw
KTsKIH0KIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb2xvcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAKaW5kZXggMTYxYmNlOGFhYWQ0Zjc1ZWU1
YzFiYWEwNDBlNDk2MzU3MmI5Zjg3ZS4uOGJiOTcwN2FhYjY4NDJiNzk3NzI3M2RlYTIxYmY0OGJj
NzJkMzJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJk
V3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcApA
QCAtNTgsNyArNTgsNyBAQCB2b2lkIENsaXBib2FyZFd4OjpjbGVhckFsbERhdGEoKQogICAgIFBh
c3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmNsZWFyKCk7CiB9CiAKLVN0cmluZyBDbGlw
Ym9hcmRXeDo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0
IAorU3RyaW5nIENsaXBib2FyZFd4OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Qg
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gIiI7IApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmgKaW5kZXggZjkyNzI2YWU2YTA0ZjM0M2IwYTk5ZTQ5
ZGZjN2RhOWIxNDUwZmQ0Mi4uMGVkN2JhZmJmZWFhODczN2MyZDExNTJiNjFiZTY3NTgyNDc1MGI1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5oCkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNsZWFyRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUpOwogICAgICAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwotICAgICAgICBT
dHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgICAg
ICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwog
ICAgIAogICAgICAgICAvLyBleHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJhZjYy
NzU4MDEwYTY5Zjg0Y2Q1OGFmMGZkM2M3YjVlYWQ0YjU1ODIuLjc3MjY1YmMxMDc2MjJhN2YxZjI1
MDdiNGU2OGRmZTU2ODFlOWZjYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMi0yNyAg
RGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGlwYm9hcmQ6
OmdldERhdGEgc2hvdWxkIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiB1bmRlZmlu
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2V2ZW50cy9kYXRhVHJhbnNmZXItZ2V0RGF0YS1yZXR1cm5zLWVtcHR5LXN0cmluZy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2RhdGFUcmFuc2Zlci1nZXREYXRh
LXJldHVybnMtZW1wdHktc3RyaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
bG9jYWwvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2RyYWctb3Zlci1yZW1vdGUtY29udGVudC1pZnJhbWUtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJlbW90ZS1j
b250ZW50LWlmcmFtZS5odG1sOgorCiAyMDEyLTAyLTIzICBLZW5pY2hpIElzaGliYXNoaSAgPGJh
c2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHRlc3QgZml4IGFmdGVyIHIx
MDg2OTkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kYXRhVHJhbnNmZXIt
Z2V0RGF0YS1yZXR1cm5zLWVtcHR5LXN0cmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9kYXRhVHJhbnNmZXItZ2V0RGF0YS1yZXR1cm5zLWVtcHR5LXN0cmluZy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc5NzAxOTU1N2ExMDI3YTIwNzI5OGU0OTE1NWU2ZDBkN2U4
MWE3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RhdGFUcmFu
c2Zlci1nZXREYXRhLXJldHVybnMtZW1wdHktc3RyaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDYgQEAKK1RvIG1hbnVhbGx5IHRlc3QsIGRyYWcgJ0RyYWcgTWUnIHRvICdEcm9wIEhlcmUnIGFu
ZCBkcm9wLiBUaGUgd29yZCAnU1VDQ0VTUycgc2hvdWxkIGFwcGVhci4KKworRHJhZyBNZQorRHJv
cCBIZXJlCitTVUNDRVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rh
dGFUcmFuc2Zlci1nZXREYXRhLXJldHVybnMtZW1wdHktc3RyaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9kYXRhVHJhbnNmZXItZ2V0RGF0YS1yZXR1cm5zLWVtcHR5LXN0cmluZy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE1M2FjMDAwZGQwNDYyM2FjM2ExOTljZTJiYmMwZGZlNTc2MTk2ZmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kYXRhVHJhbnNmZXIt
Z2V0RGF0YS1yZXR1cm5zLWVtcHR5LXN0cmluZy5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyNkcmFnIHsKKyAgICBib3JkZXI6
IDFweCBzb2xpZCBibGFjazsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiAyMDBweDsK
K30KKyNkcm9wIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICBoZWlnaHQ6IDIw
MHB4OworICAgIHdpZHRoOiAyMDBweDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgordmFyIGZhaWxl
ZDsKK2Z1bmN0aW9uIGxvZyhzdHIpCit7CisgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoc3RyKSk7CisgICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2JyJykpOworfQorZnVuY3Rpb24gZHJhZ3N0YXJ0KGV2ZW50KSB7CisgICAgZmFp
bGVkID0gZmFsc2U7Cit9CitmdW5jdGlvbiBkcmFnZW50ZXIoZXZlbnQpIHsKKyAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4
dCcpICE9ICcnKSB7CisgICAgICAgIGxvZygiZHJhZ2VudGVyOiBldmVudC5kYXRhVHJhbnNmZXIu
Z2V0RGF0YSgndGV4dCcpOiAiICsgZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQnKSk7
CisgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgfQorfQorZnVuY3Rpb24gZHJhZ292ZXIoZXZl
bnQpIHsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgIGlmIChldmVudC5kYXRhVHJh
bnNmZXIuZ2V0RGF0YSgndGV4dCcpICE9ICcnKSB7CisgICAgICAgIGxvZygiZHJhZ292ZXI6IGV2
ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0Jyk6ICIgKyBldmVudC5kYXRhVHJhbnNmZXIu
Z2V0RGF0YSgndGV4dCcpKTsKKyAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICB9Cit9CitmdW5j
dGlvbiBkcm9wKGV2ZW50KSB7CisgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0
ZXh0JykgIT0gJycpIHsKKyAgICAgICAgbG9nKCJkcm9wOiBldmVudC5kYXRhVHJhbnNmZXIuZ2V0
RGF0YSgndGV4dCcpOiAiICsgZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQnKSk7Cisg
ICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgfQorICAgIGxvZyhmYWlsZWQgPyAnRkFJTFVSRScg
OiAnU1VDQ0VTUycpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KK3dpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbigpCit7CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgdmFyIGRyYWdF
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYWcnKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhkcmFnRWxlbWVudC5vZmZzZXRMZWZ0ICsgZHJhZ0VsZW1lbnQub2Zmc2V0
V2lkdGggLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdFbGVtZW50Lm9mZnNl
dFRvcCArIGRyYWdFbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMCk7CisgICAgdmFyIGRy
b3BFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ryb3AnKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhkcm9wRWxlbWVudC5vZmZzZXRMZWZ0ICsgZHJvcEVsZW1lbnQub2Zm
c2V0V2lkdGggLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BFbGVtZW50Lm9m
ZnNldFRvcCArIGRyb3BFbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UbyBtYW51YWxs
eSB0ZXN0LCBkcmFnICdEcmFnIE1lJyB0byAnRHJvcCBIZXJlJyBhbmQgZHJvcC4gVGhlIHdvcmQg
J1NVQ0NFU1MnIHNob3VsZCBhcHBlYXIuCis8ZGl2IGRyYWdnYWJsZT0idHJ1ZSIgaWQ9ImRyYWci
IG9uZHJhZ3N0YXJ0PSJkcmFnc3RhcnQoZXZlbnQpIj5EcmFnIE1lPC9kaXY+Cis8ZGl2IGlkPSJk
cm9wIiBvbmRyYWdlbnRlcj0iZHJhZ2VudGVyKGV2ZW50KSIgb25kcmFnb3Zlcj0iZHJhZ292ZXIo
ZXZlbnQpIiBvbmRyb3A9ImRyb3AoZXZlbnQpIj5Ecm9wIEhlcmU8L2Rpdj4KKzwvZGl2PgorPGRp
diBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvZHJhZy1vdmVyLXJlbW90ZS1jb250
ZW50LWV4cGVjdGVkLnR4dAppbmRleCA2NzQ1NGIyODhlZGQ1YzMyNTNkMTIwMGJjZTk4NzhjMjMz
OTMxZDQ3Li5kODgwMTcyZGU3MjI3YWE4NzM1MWY0YWU5M2E0NGExNjY2YmVlZGM3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2RyYWctb3Zlci1yZW1vdGUtY29udGVu
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9kcmFnLW92
ZXItcmVtb3RlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC03LDUgKzcsNSBAQCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU5MDcgfCByZGFyOi8vcHJvYmxlbS82OTEw
ODMyLgogCiBUbyB0ZXN0LCBkcmFnIEFiZSdzIGltYWdlIGludG8gdGhpcyBsaWdodCBibHVlIGRp
di4KIAotUEFTUzogb25kcmFnb3ZlciBzYXcgYSBVUkwgb2YgJ3VuZGVmaW5lZCcKK1BBU1M6IG9u
ZHJhZ292ZXIgc2F3IGEgVVJMIG9mICcnCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWlmcmFtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2RyYWctb3Zlci1yZW1vdGUtY29u
dGVudC1pZnJhbWUtZXhwZWN0ZWQudHh0CmluZGV4IDFiNmM5ZDQ3NmY4ZWIzZjIzN2U5YTZjMmFi
YTI1MjU4YjJiMGE5NTguLmViMTJlMDQ0N2YyZDg0MjFmYzUyZTJhZWQ2YjM5NmMwNTIzODMyZDIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJl
bW90ZS1jb250ZW50LWlmcmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9kcmFnLW92ZXItcmVtb3RlLWNvbnRlbnQtaWZyYW1lLWV4cGVjdGVkLnR4
dApAQCAtNCw1ICs0LDUgQEAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1OTA3IHwgcmRhcjovL3Byb2JsZW0vNjkxMDgzMi4KIAogVG8gdGVzdCwgZHJhZyBBYmUncyBp
bWFnZSBpbnRvIHRoaXMgbGlnaHQgYmx1ZSBkaXYuCiAKLVBBU1M6IG9uZHJhZ292ZXIgc2F3IGEg
VVJMIG9mICd1bmRlZmluZWQnCitQQVNTOiBvbmRyYWdvdmVyIHNhdyBhIFVSTCBvZiAnJwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2RyYWctb3Zlci1yZW1v
dGUtY29udGVudC1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWlmcmFtZS5odG1sCmluZGV4IDc5NDI4NjYyNzA1Nzlk
NzhlODA2NjhhYzc4NDkzNzBlMDRhYzI5OTAuLjYzOWFiZjNkMTg2YTNmMGU0NDY1NTIxZWMyYmNh
N2ZiZTYxNjk5N2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50LWlmcmFtZS5odG1sCkBA
IC0xNyw4ICsxNyw4IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAKICAgICBkcmFn
VGFyZ2V0Lm9uZHJhZ292ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHVybCA9IGV2ZW50
LmRhdGFUcmFuc2Zlci5nZXREYXRhKCdVUkwnKTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IHVybCA9
PT0gdW5kZWZpbmVkCi0gICAgICAgICAgICA/ICJQQVNTOiBvbmRyYWdvdmVyIHNhdyBhIFVSTCBv
ZiAndW5kZWZpbmVkJyIKKyAgICAgICAgdmFyIHJlc3VsdCA9IHVybCA9PT0gJycKKyAgICAgICAg
ICAgID8gIlBBU1M6IG9uZHJhZ292ZXIgc2F3IGEgVVJMIG9mICcnIgogICAgICAgICAgICAgOiAi
RkFJTDogb25kcmFnb3ZlciBzYXcgYSBVUkwgb2YgJyIgKyB1cmwgKyAiJyI7CiAgICAgICAgIGxv
ZyhyZXN1bHQpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwo=
</data>
<flag name="review"
          id="131746"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>