<?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>55575</bug_id>
          
          <creation_ts>2011-03-02 07:15:59 -0800</creation_ts>
          <short_desc>Web Inspector: remove InjectedScriptHost -&gt; DOMAgent dependency.</short_desc>
          <delta_ts>2011-03-02 09:40:14 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>360776</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-02 07:15:59 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360777</commentid>
    <comment_count>1</comment_count>
      <attachid>84416</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-02 07:17:39 -0800</bug_when>
    <thetext>Created attachment 84416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360780</commentid>
    <comment_count>2</comment_count>
      <attachid>84416</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-02 07:23:09 -0800</bug_when>
    <thetext>Comment on attachment 84416
Patch

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

&gt; Source/WebCore/inspector/InspectorRuntimeAgent.cpp:57
&gt; +    InjectedScript injectedScript = m_injectedScriptHost-&gt;injectedScriptForMainFrame();

Injected script where the objectId was created should be used instead. r- for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360783</commentid>
    <comment_count>3</comment_count>
      <attachid>84416</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-02 07:28:17 -0800</bug_when>
    <thetext>Comment on attachment 84416
Patch

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.h:62
&gt; +class ScriptValue;

Remove this?

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:426
&gt; +        function resolvedNode(objectPayload)

resolvedNode -&gt; didResolveNode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360841</commentid>
    <comment_count>4</comment_count>
      <attachid>84425</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-02 09:22:14 -0800</bug_when>
    <thetext>Created attachment 84425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360852</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-02 09:40:14 -0800</bug_when>
    <thetext>Committed r80141: &lt;http://trac.webkit.org/changeset/80141&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84416</attachid>
            <date>2011-03-02 07:17:39 -0800</date>
            <delta_ts>2011-03-02 09:22:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55575-20110302181735.patch</filename>
            <type>text/plain</type>
            <size>36633</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAxMTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMGE2MWM1MzEzMzQ2NjY4
OGI0OTRiN2FhMWRiMGNhYjJmNGE5YWE2Li4xYmUzMzczYzViMWI0YjhlMzdmYWJmNDU3MWU4MWIy
ZGUzNzQxMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDMtMDIgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIEluamVjdGVk
U2NyaXB0SG9zdCAtPiBET01BZ2VudCBkZXBlbmRlbmN5LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU1NzUKKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE5vZGVDYWxsYmFjayk6CisgICAgICAgICog
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVN
ZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdDo6bm9kZUFzU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjphZGRJbnNwZWN0ZWROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6Y2xlYXJJbnNwZWN0ZWROb2Rlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmNvcHlUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkTm9kZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6YWRkSW5zcGVjdGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1
YXRlT24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NyZWF0ZVRv
b2x0aXBGb3JOb2RlLnNldFRvb2x0aXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9jcmVhdGVUb29sdGlwRm9yTm9kZS5yZXNvbHZlZE5vZGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9j
cmVhdGVUb29sdGlwRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9w
ZXJ0aWVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvcGVydGllc1Np
ZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUubm9kZVJlc29sdmVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZS5ub2RlUHJvdG90
eXBlc1JlYWR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUu
cHJvdG90eXBlLnVwZGF0ZS5maWxsU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
cGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5yZXNvbHZlTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LnByb3RvdHlwZS5wdXNoTm9kZVRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5wcm90b3R5cGUuZXZhbHVhdGUpOgorCiAyMDExLTAzLTAyICBPbGVnIFJvbWFz
aGluICA8cm9tYXhhQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNj
cmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGE3MDQ3ZjAzOWViY2NlY2U0MzM0NWM3MGZlYTVh
YzI5NTAxMDY4MjAuLmJjMWQ4NzcxMGEzMDE4NTE2MzNiZGZlZmFhNGM3YThkZjVhZjg2OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKQEAgLTEzNSwxOCArMTM1LDE1IEBAIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmN1cnJlbnRDYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjKQogI2VuZGlmCiB9
CiAKLUpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVGb3JJZChFeGVjU3RhdGUqIGV4
ZWMpCitKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBOb2RlKiBub2RlID0gaW1wbCgpLT5ub2RlRm9y
SWQoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgTm9kZSogbm9kZSA9IGlt
cGwoKS0+aW5zcGVjdGVkTm9kZShleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaWYgKCFp
bXBsKCktPmluc3BlY3RvckFnZW50KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICByZXR1cm4gdG9K
UyhleGVjLCBub2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGJh
ZDU0MmQ0ZDIzMTE4NTVhM2U1OGQ2NTU5OGY4YTY3NDJjOGZlMjUuLjdhMzNlZDBjYzE2MTY4NGY1
NTlkMDc0ZTllMTYyOWE5NGExYmMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cApAQCAtMTUxLDIxICsxNTEsMTggQEAgdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2NhcmRJ
bmplY3RlZFNjcmlwdChTY3JpcHRTdGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUKICAgICBnbG9i
YWwtPkRlbGV0ZUhpZGRlblZhbHVlKGtleSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZvcklkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdGVkTm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3Qubm9kZUZvcklkKCkiKTsKKyAgICBJTkNfU1RBVFMo
IkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWROb2RlKCkiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBJbmplY3Rl
ZFNjcmlwdEhvc3QqIGhvc3QgPSBWOEluamVjdGVkU2NyaXB0SG9zdDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgCi0gICAgTm9kZSogbm9kZSA9IGhvc3QtPm5vZGVGb3JJZChhcmdzWzBd
LT5Ub0ludDMyKCktPlZhbHVlKCkpOworICAgIE5vZGUqIG5vZGUgPSBob3N0LT5pbnNwZWN0ZWRO
b2RlKGFyZ3NbMF0tPlRvSW50MzIoKS0+VmFsdWUoKSk7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgaWYgKCFob3N0LT5pbnNwZWN0b3JBZ2Vu
dCgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCiAgICAgcmV0dXJuIHRvVjgo
bm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3Bw
CmluZGV4IDhkNTZhNWE0MWJlNDhmN2UxMGFmNjQ5YjM4YTVhYzNmOGY4NzRhNTMuLjYwMDQ5Yzlh
Mjc4YThhMzNiYzNmNjI5YzUyNTE5OGE0ZWY0MDhjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ29uc29s
ZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmpl
Y3RlZFNjcmlwdEhvCiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGpzb25BcmdzID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
YXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwRm9y
Q29uc29sZShtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksICJjb25zb2xlIik7CiAgICAgICAgICAg
ICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggYjU1MTM5NTI1N2EzYTJmZTc4
OGIwODA5YzQ5MzNjMzI1Zjg5NDRjZS4uOTE3MmJhM2E5MDkzMTY5MWU0MWQ0M2E1OTAyMTMxMGUy
MmJiYjBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3Bw
CkBAIC01Niw2ICs1NiwxNCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdQogICAgIG1ha2VDYWxs
KGZ1bmN0aW9uLCByZXN1bHQpOwogfQogCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9u
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0ZU9uIik7
CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQtPnRvSlNPTlN0cmluZygpKTsK
KyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKKyAgICBtYWtlQ2FsbChm
dW5jdGlvbiwgcmVzdWx0KTsKK30KKwogdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNh
bGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKICAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1
YXRlT25DYWxsRnJhbWUiKTsKQEAgLTExNSwyMSArMTIzLDYgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6cmVzb2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCkKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQot
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0
LCAiZ2V0Tm9kZVByb3BlcnRpZXMiKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChub2Rl
SWQpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHByb3BlcnRpZXNBcnJheS0+dG9KU09O
U3RyaW5nKCkpOwotICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOwotfQotCi12b2lkIElu
amVjdGVkU2NyaXB0OjpnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbiht
X2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0Tm9kZVByb3RvdHlwZXMiKTsKLSAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChub2RlSWQpOwotICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQp
OwotfQotCiB2b2lkIEluamVjdGVkU2NyaXB0OjpzZXRQcm9wZXJ0eVZhbHVlKFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQog
ewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0
LCAic2V0UHJvcGVydHlWYWx1ZSIpOwpAQCAtMTU3LDExICsxNTAsMTIgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGcmFtZXMoKQogfQogI2VuZGlmCiAK
LVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcEZvckNvbnNv
bGUoU2NyaXB0VmFsdWUgdmFsdWUpCitQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5qZWN0
ZWRTY3JpcHQ6OndyYXBPYmplY3QoU2NyaXB0VmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3Jv
dXBOYW1lKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgd3JhcEZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJ3cmFwRm9yQ29uc29s
ZSIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24obV9pbmplY3RlZFNjcmlw
dE9iamVjdCwgIndyYXBPYmplY3QiKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
dmFsdWUpOworICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChncm91cE5hbWUpOwogICAg
IHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSk7
CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBTY3JpcHRWYWx1ZSByID0gd3Jh
cEZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKQEAgLTE3MywxMSArMTY3LDE2IEBAIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcEZvckNvbnNvbGUoU2Ny
aXB0VmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHIudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVk
U2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOwogfQogCitQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKE5vZGUqIG5vZGUsIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lKQoreworICAgIHJldHVybiB3cmFwT2JqZWN0KG5vZGVBc1Nj
cmlwdFZhbHVlKG5vZGUpLCBncm91cE5hbWUpOworfQorCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpp
bnNwZWN0Tm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImlu
c3BlY3ROb2RlIik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSW5qZWN0ZWRTY3JpcHRI
b3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRl
KCksIG5vZGUpKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChub2RlQXNTY3JpcHRWYWx1
ZShub2RlKSk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFrZUNh
bGwoZnVuY3Rpb24sICZyZXN1bHQpOwogfQpAQCAtMjEyLDYgKzIxMSwxMSBAQCB2b2lkIEluamVj
dGVkU2NyaXB0OjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdQogICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsK
IH0KIAorU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUq
IG5vZGUpCit7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFs
dWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpLCBub2RlKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggYmQ1YTVhNjhkNDYzZTM0
NzRkMTc1M2JiZGY4YmM4ZTg0NTg1NWNkOS4uZGVjMzhhNzk1MmQyYmIwODQzNmIwNDdmOTRhYTg4
Njk0ZjEyZTJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
QEAgLTUyLDE0ICs1MiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNOb1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5oYXNOb1ZhbHVlKCk7IH0KIAogICAgIHZv
aWQgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlT24oUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIGdldENvbXBsZXRpb25zKGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRDb21wbGV0aW9uc09uQ2Fs
bEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29s
IGFiYnJldmlhdGUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgTm9kZSog
bm9kZUZvck9iamVjdElkKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCk7CiAg
ICAgdm9pZCByZXNvbHZlTm9kZShsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KTsKLSAgICB2b2lkIGdldE5vZGVQcm9wZXJ0aWVzKGxvbmcgbm9kZUlkLCBQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBwcm9wZXJ0aWVzQXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIHNldFByb3BlcnR5VmFsdWUo
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gb2JqZWN0SWQpOwogICAgIApAQCAtNjcsNyArNjYsOCBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gY2FsbEZyYW1lcygpOwogI2VuZGlmCiAKLSAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gd3JhcEZvckNvbnNvbGUoU2NyaXB0VmFsdWUpOworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB3cmFwT2JqZWN0KFNjcmlwdFZhbHVlLCBjb25z
dCBTdHJpbmcmIGdyb3VwTmFtZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdy
YXBOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSk7CiAgICAgdm9pZCBpbnNwZWN0
Tm9kZShOb2RlKik7CiAgICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGNvbnN0IFN0
cmluZyYpOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQpAQCAtNzgsNiArNzgsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKTsKICAgICB2b2lk
IG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCk7CisgICAgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoTm9kZSopOwogCiAgICAg
U2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCBjM2EwYTFmNmRjMjA3
ZjdlYWIxZDc5YzAzMWE2NmY1ZmU1ZjI5ZmNmLi4wZDAzZjRjYTI5ZTQ1YWVhZDgyOWIyNTQ3YWI5
YmUwOWI4OWUyZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcApAQCAtNDIsMTAgKzQyLDEwIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
b25zb2xlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKIAogI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQpAQCAtOTQsMjUgKzk0LDI4IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIEluamVjdGVkU2Ny
aXB0SG9zdDo6Y29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBJbmplY3RlZFNjcmlw
dEhvc3Q6OmFkZEluc3BlY3RlZE5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBQYXN0ZWJvYXJkOjpn
ZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4dCh0ZXh0KTsKKyAgICBtX2luc3BlY3Rl
ZE5vZGVzLnByZXBlbmQobm9kZSk7CisgICAgd2hpbGUgKG1faW5zcGVjdGVkTm9kZXMuc2l6ZSgp
ID4gNSkKKyAgICAgICAgbV9pbnNwZWN0ZWROb2Rlcy5yZW1vdmVMYXN0KCk7CiB9CiAKLU5vZGUq
IEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZvcklkKGxvbmcgbm9kZUlkKQordm9pZCBJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmNsZWFySW5zcGVjdGVkTm9kZXMoKQogewotICAgIGlmIChJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICByZXR1cm4g
ZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQpOwotICAgIHJldHVybiAwOworICAgIG1faW5zcGVj
dGVkTm9kZXMuY2xlYXIoKTsKIH0KIAotbG9uZyBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3Rl
ZE5vZGUodW5zaWduZWQgbG9uZyBudW0pCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3BlY3RvckRPTUFnZW50KCk7Ci0gICAgaWYgKCFkb21BZ2VudCkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRl
eHQodGV4dCk7Cit9CiAKLSAgICByZXR1cm4gZG9tQWdlbnQtPmluc3BlY3RlZE5vZGUobnVtKTsK
K05vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkTm9kZSh1bnNpZ25lZCBsb25nIG51
bSkKK3sKKyAgICBpZiAobnVtIDwgbV9pbnNwZWN0ZWROb2Rlcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBtX2luc3BlY3RlZE5vZGVzW251bV0uZ2V0KCk7CisgICAgcmV0dXJuIDA7CiB9CiAKICNp
ZiBFTkFCTEUoREFUQUJBU0UpCkBAIC0xNzMsMTMgKzE3Niw2IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpyZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwg
Y29uc3QKICAgICB9CiB9CiAKLUluc3BlY3RvckRPTUFnZW50KiBJbmplY3RlZFNjcmlwdEhvc3Q6
Omluc3BlY3RvckRPTUFnZW50KCkKLXsKLSAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2luc3BlY3RvckFnZW50LT5kb21BZ2VudCgpOwot
fQotCiBJbnNwZWN0b3JGcm9udGVuZCogSW5qZWN0ZWRTY3JpcHRIb3N0Ojpmcm9udGVuZCgpCiB7
CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IDc2OTI5MzkxMjQ4NzQ3ZTU3Yzc4YjliNzFlZGI0
NzY4YmU0MDY2YTAuLjliYTY5M2YyYTEwMGRjMGM5ZjhmZjc2NzcwNzE3ZDBjZWZhMzU3ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTM3
LDEyICszNywxMiBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwotY2xhc3MgSW5z
cGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKIGNsYXNzIE5vZGU7CkBAIC02OSw5ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3RJZCwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpOwogICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2Fn
ZXMoKTsKIAorICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShOb2RlKik7CisgICAgdm9pZCBjbGVh
ckluc3BlY3RlZE5vZGVzKCk7CisKICAgICB2b2lkIGNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCk7Ci0gICAgTm9kZSogbm9kZUZvcklkKGxvbmcgbm9kZUlkKTsKLSAgICBsb25nIGluc3BlY3Rl
ZE5vZGUodW5zaWduZWQgbG9uZyBudW0pOworICAgIE5vZGUqIGluc3BlY3RlZE5vZGUodW5zaWdu
ZWQgbG9uZyBudW0pOwogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIGxvbmcgZGF0YWJhc2VJ
ZEltcGwoRGF0YWJhc2UqKTsKQEAgLTk3LDcgKzk5LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIEluamVjdGVkU2NyaXB0SG9zdChJbnNwZWN0b3JBZ2VudCopOwotICAgIEluc3BlY3RvckRP
TUFnZW50KiBpbnNwZWN0b3JET01BZ2VudCgpOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCgpOwogICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwogICAgIFNjcmlwdE9i
amVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlLCBsb25nIGlkKTsKQEAgLTEwOCw2ICsxMDksNyBAQCBwcml2YXRlOgog
ICAgIGxvbmcgbV9sYXN0V29ya2VySWQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIEluamVj
dGVkU2NyaXB0PiBJZFRvSW5qZWN0ZWRTY3JpcHRNYXA7CiAgICAgSWRUb0luamVjdGVkU2NyaXB0
TWFwIG1faWRUb0luamVjdGVkU2NyaXB0OworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2lu
c3BlY3RlZE5vZGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAppbmRleCA1NjE5ZjhlMjNj
M2IwYzc4YTRlOGFiMDlmNGYzZjcxOTljYjc0YjhlLi4wZDVjNTAwMDY5OWE3MWY2ODgwYjczYTQz
ZDg1MDFmYTg3MmUxMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbApAQCAtMzUsOSArMzUsOCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAg
IHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKIAogICAgICAgICB2b2lkIGNvcHlUZXh0KGlu
IERPTVN0cmluZyB0ZXh0KTsKLSAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IG5vZGVGb3JJZChp
biBsb25nIG5vZGVJZCk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgaW5zcGVjdChpbiBET01PYmpl
Y3Qgb2JqZWN0SWQsIGluIERPTU9iamVjdCBoaW50cyk7Ci0gICAgICAgIGxvbmcgaW5zcGVjdGVk
Tm9kZShpbiB1bnNpZ25lZCBsb25nIG51bSk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBp
bnNwZWN0ZWROb2RlKGluIHVuc2lnbmVkIGxvbmcgbnVtKTsKICAgICAgICAgW0N1c3RvbV0gRE9N
T2JqZWN0IGludGVybmFsQ29uc3RydWN0b3JOYW1lKGluIERPTU9iamVjdCBvYmplY3QpOwogCiAg
ICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBjdXJyZW50Q2FsbEZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggZmY2ZTA3
NjUwZWJlMzNlNWM3NWY2MGZkNmJlNDZiM2Q2NWFjY2MwNy4uZDkxZDk1MTMxM2JkYTk1NzNjZjY4
OWRiY2RlOTM2YWMyMDljMTQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtNTAsMTAgKzUwLDEwIEBAIHZhciBJbmplY3RlZFNj
cmlwdCA9IGZ1bmN0aW9uKCkKIH0KIAogSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewotICAg
IHdyYXBGb3JDb25zb2xlOiBmdW5jdGlvbihvYmplY3QsIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRv
dykKKyAgICB3cmFwT2JqZWN0OiBmdW5jdGlvbihvYmplY3QsIGdyb3VwTmFtZSwgY2FuQWNjZXNz
SW5zcGVjdGVkV2luZG93KQogICAgIHsKICAgICAgICAgaWYgKGNhbkFjY2Vzc0luc3BlY3RlZFdp
bmRvdykKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl93cmFwT2JqZWN0KG9iamVjdCwgImNvbnNv
bGUiKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl93cmFwT2JqZWN0KG9iamVjdCwgZ3JvdXBO
YW1lKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IHt9OwogICAgICAgICByZXN1bHQudHlwZSA9IHR5
cGVvZiBvYmplY3Q7CiAgICAgICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9IHRoaXMuX3RvU3RyaW5n
KG9iamVjdCk7CkBAIC0yODgsNiArMjg4LDIwIEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChpbnNwZWN0ZWRXaW5kb3cu
ZXZhbCwgaW5zcGVjdGVkV2luZG93LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgZmFsc2UsIGlu
amVjdENvbW1hbmRMaW5lQVBJKTsKICAgICB9LAogCisgICAgZXZhbHVhdGVPbjogZnVuY3Rpb24o
b2JqZWN0SWQsIGV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2YXIgcGFyc2VkT2JqZWN0SWQg
PSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKKyAgICAgICAgdmFyIG9iamVjdCA9IHRo
aXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKKyAgICAgICAgaWYgKCFvYmplY3QpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnNw
ZWN0ZWRXaW5kb3cuY29uc29sZS5fb2JqZWN0VG9FdmFsdWF0ZU9uID0gb2JqZWN0OworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChpbnNwZWN0ZWRXaW5kb3cuZXZhbCwg
aW5zcGVjdGVkV2luZG93LCAiKGZ1bmN0aW9uKCkgeyIgKyBleHByZXNzaW9uICsgIn0pLmNhbGwo
d2luZG93LmNvbnNvbGUuX29iamVjdFRvRXZhbHVhdGVPbikiLCBwYXJzZWRPYmplY3RJZC5vYmpl
Y3RHcm91cCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAg
IGRlbGV0ZSBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5fb2JqZWN0VG9FdmFsdWF0ZU9uOworICAg
ICAgICB9CisgICAgfSwKKwogICAgIF9ldmFsdWF0ZUFuZFdyYXA6IGZ1bmN0aW9uKGV2YWxGdW5j
dGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUs
IGluamVjdENvbW1hbmRMaW5lQVBJKQogICAgIHsKICAgICAgICAgdHJ5IHsKQEAgLTM1NiwxMyAr
MzcwLDYgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gY2Fs
bEZyYW1lOwogICAgIH0sCiAKLSAgICBfbm9kZUZvcklkOiBmdW5jdGlvbihub2RlSWQpCi0gICAg
ewotICAgICAgICBpZiAoIW5vZGVJZCkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Lm5vZGVGb3JJZChub2RlSWQpOwotICAgIH0sCi0K
ICAgICBfb2JqZWN0Rm9ySWQ6IGZ1bmN0aW9uKG9iamVjdElkKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0W29iamVjdElkLmlkXTsKQEAgLTM3Nyw0MSArMzg0
LDkgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0sCiAKLSAgICByZXNvbHZlTm9kZTogZnVuY3Rpb24obm9kZUlkKQotICAgIHsKLSAg
ICAgICAgdmFyIG5vZGUgPSB0aGlzLl9ub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAgaWYgKCFu
b2RlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAvLyBGSVhNRTogcmVjZWl2
ZSB0aGUgb2JqZWN0IGdyb3VwIGZyb20gY2xpZW50LgotICAgICAgICByZXR1cm4gdGhpcy5fd3Jh
cE9iamVjdChub2RlLCAicHJvdG90eXBlIik7Ci0gICAgfSwKLQotICAgIGdldE5vZGVQcm9wZXJ0
aWVzOiBmdW5jdGlvbihub2RlSWQsIHByb3BlcnRpZXMpCi0gICAgewotICAgICAgICB2YXIgbm9k
ZSA9IHRoaXMuX25vZGVGb3JJZChub2RlSWQpOwotICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHByb3BlcnRpZXMgPSBldmFsKCIoIiArIHByb3Bl
cnRpZXMgKyAiKSIpOwotICAgICAgICB2YXIgcmVzdWx0ID0ge307Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHJlc3VsdFtw
cm9wZXJ0aWVzW2ldXSA9IG5vZGVbcHJvcGVydGllc1tpXV07Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfSwKLQotICAgIGdldE5vZGVQcm90b3R5cGVzOiBmdW5jdGlvbihub2RlSWQpCisg
ICAgcmVzb2x2ZU5vZGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICB0aGlzLnJlbGVh
c2VXcmFwcGVyT2JqZWN0R3JvdXAoInByb3RvdHlwZXMiKTsKLSAgICAgICAgdmFyIG5vZGUgPSB0
aGlzLl9ub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgdmFyIHBy
b3RvdHlwZSA9IG5vZGU7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRo
aXMuX3dyYXBPYmplY3QocHJvdG90eXBlLCAicHJvdG90eXBlcyIpKTsKLSAgICAgICAgICAgIHBy
b3RvdHlwZSA9IHByb3RvdHlwZS5fX3Byb3RvX187Ci0gICAgICAgIH0gd2hpbGUgKHByb3RvdHlw
ZSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBPYmpl
Y3Qobm9kZSk7CiAgICAgfSwKIAogICAgIF9pc0RlZmluZWQ6IGZ1bmN0aW9uKG9iamVjdCkKQEAg
LTczOCw4ICs3MTMsNyBAQCBDb21tYW5kTGluZUFQSUltcGwucHJvdG90eXBlID0gewogCiAgICAg
X2luc3BlY3RlZE5vZGU6IGZ1bmN0aW9uKG51bSkKICAgICB7Ci0gICAgICAgIHZhciBub2RlSWQg
PSBJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkTm9kZShudW0pOwotICAgICAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChub2RlSWQpOworICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHRIb3N0Lmluc3BlY3RlZE5vZGUobnVtKTsKICAgICB9LAogCiAgICAgX25vcm1hbGl6
ZUV2ZW50VHlwZXM6IGZ1bmN0aW9uKHR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbAppbmRleCA5MmMxNTZmMmFmODY3Y2JiYTQ4MzY5ZTk4YjZjZWMyODNiOTM1MjU5Li43
MTUwMDljNjgzNWI5YmQ0YWNhNjE1NWQwNzAzOTU2ZDZmZTVkMTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtNzQsNiArNzQsNyBAQCBtb2R1bGUgY29yZSB7CiAK
ICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gUnVudGltZSB7CiAgICAgICAg
IHZvaWQgZXZhbHVhdGUoaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIFN0cmluZyBvYmplY3RHcm91
cCwgaW4gYm9vbGVhbiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIG91dCBWYWx1ZSByZXN1bHQpOwor
ICAgICAgICB2b2lkIGV2YWx1YXRlT24oaW4gT2JqZWN0IG9iamVjdElkLCBpbiBTdHJpbmcgZXhw
cmVzc2lvbiwgb3V0IFZhbHVlIHJlc3VsdCk7CiAgICAgICAgIHZvaWQgZ2V0Q29tcGxldGlvbnMo
aW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBv
dXQgVmFsdWUgcmVzdWx0KTsKICAgICAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKGluIE9iamVjdCBv
YmplY3RJZCwgaW4gYm9vbGVhbiBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgaW4gYm9vbGVhbiBhYmJy
ZXZpYXRlLCBvdXQgVmFsdWUgcmVzdWx0KTsKICAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVZhbHVl
KGluIE9iamVjdCBvYmplY3RJZCwgaW4gU3RyaW5nIHByb3BlcnR5TmFtZSwgaW4gU3RyaW5nIGV4
cHJlc3Npb24sIG91dCBWYWx1ZSByZXN1bHQpOwpAQCAtMTU5LDkgKzE2MCw3IEBAIG1vZHVsZSBj
b3JlIHsKICAgICAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmluZyBxdWVyeSwgaW4gYm9v
bGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwog
ICAgICAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChpbiBTdHJpbmcgcGF0aCwgb3V0
IGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCByZXNvbHZlTm9kZShpbiBsb25nIG5vZGVJZCwg
b3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMoaW4gbG9u
ZyBub2RlSWQsIGluIEFycmF5IHByb3BlcnRpZXNBcnJheSwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0g
ICAgICAgIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSBy
ZXN1bHQpOworICAgICAgICB2b2lkIHJlc29sdmVOb2RlKGluIGxvbmcgbm9kZUlkLCBpbiBTdHJp
bmcgb2JqZWN0R3JvdXAsIG91dCBWYWx1ZSByZXN1bHQpOwogICAgICAgICB2b2lkIHB1c2hOb2Rl
VG9Gcm9udGVuZChpbiBPYmplY3Qgb2JqZWN0SWQsIG91dCBsb25nIG5vZGVJZCk7CiAKICAgICAg
ICAgW2V2ZW50XSB2b2lkIHNldERvY3VtZW50KG91dCBWYWx1ZSByb290KTsgLy8gRklYTUU6IHNo
b3VsZCBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgZnJvbnQtZW5kIGFzIGdldERvY3VtZW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNTE3
NTUxYjM0Njc1ZGI2ZTQyMTYyY2Q3NzJlODFiZDljNGNkNGZiNy4uMzg2OTQwOWM1NDAwMTUzNjA1
MjI1OGVhMWVhMTdiZjYxNTYzMDU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0zOTcsMjAgKzM5NywxMyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobG9uZyBub2RlSWQpCiAgICAgbV9m
cm9udGVuZC0+c2V0Q2hpbGROb2Rlcyhub2RlSWQsIGNoaWxkcmVuLnJlbGVhc2UoKSk7CiB9CiAK
LWxvbmcgSW5zcGVjdG9yRE9NQWdlbnQ6Omluc3BlY3RlZE5vZGUodW5zaWduZWQgbG9uZyBudW0p
Ci17Ci0gICAgaWYgKG51bSA8IG1faW5zcGVjdGVkTm9kZXMuc2l6ZSgpKQotICAgICAgICByZXR1
cm4gbV9pbnNwZWN0ZWROb2Rlc1tudW1dOwotICAgIHJldHVybiAwOwotfQotCiB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQogewogICAgIG1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5jbGVhcigpOwogICAgIG1faWRUb05vZGUuY2xlYXIoKTsKICAgICByZWxlYXNlRGFuZ2xp
bmdOb2RlcygpOwogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKLSAgICBtX2luc3Bl
Y3RlZE5vZGVzLmNsZWFyKCk7CisgICAgbV9pbmplY3RlZFNjcmlwdEhvc3QtPmNsZWFySW5zcGVj
dGVkTm9kZXMoKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChsb25n
IGlkKQpAQCAtNzA0LDkgKzY5NywxMCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVu
dExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgbG9uZwogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBu
b2RlSWQpCiB7Ci0gICAgbV9pbnNwZWN0ZWROb2Rlcy5wcmVwZW5kKG5vZGVJZCk7Ci0gICAgd2hp
bGUgKG1faW5zcGVjdGVkTm9kZXMuc2l6ZSgpID4gNSkKLSAgICAgICAgbV9pbnNwZWN0ZWROb2Rl
cy5yZW1vdmVMYXN0KCk7CisgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOworICAg
IGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5h
ZGRJbnNwZWN0ZWROb2RlKG5vZGUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJm
b3JtU2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJp
bW1lZFF1ZXJ5LCBib29sIHJ1blN5bmNocm9ub3VzbHkpCkBAIC04MDUsMjUgKzc5OSwxMiBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZWFyY2hDYW5jZWxlZChFcnJvclN0cmluZyopCiAgICAg
bV9zZWFyY2hSZXN1bHRzLmNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJl
c29sdmVOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVj
dGVkU2NyaXB0Rm9yTm9kZUlkKG5vZGVJZCk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpCi0gICAgICAgIGluamVjdGVkU2NyaXB0LnJlc29sdmVOb2RlKG5vZGVJZCwgcmVz
dWx0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvcGVy
dGllc0FycmF5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3IsIGxvbmcgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
CiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZv
ck5vZGVJZChub2RlSWQpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQot
ICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXROb2RlUHJvcGVydGllcyhub2RlSWQsIHByb3BlcnRp
ZXNBcnJheSwgcmVzdWx0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVBy
b3RvdHlwZXMoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0
ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Tm9kZVByb3RvdHlwZXMobm9kZUlk
LCByZXN1bHQpOworICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKKyAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTm9kZShlcnJvciwg
bm9kZSk7CisgICAgaWYgKGVycm9yLT5pc0VtcHR5KCkpCisgICAgICAgICpyZXN1bHQgPSBpbmpl
Y3RlZFNjcmlwdC53cmFwTm9kZShub2RlLCBvYmplY3RHcm91cCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgbG9uZyogbm9kZUlkKQpAQCAtMTIxOCwyNSArMTE5
OSwyNCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdAogICAgICAgICAqbm9kZUlkID0gcHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChub2RlKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKGxvbmcgbm9kZUlkKQorSW5qZWN0ZWRTY3Jp
cHQgSW5zcGVjdG9yRE9NQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yTm9kZShFcnJvclN0cmluZyog
ZXJyb3IsIE5vZGUqIG5vZGUpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gMDsKLSAgICBpZiAobm9k
ZUlkKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAg
aWYgKG5vZGUpIHsKLSAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPm93bmVy
RG9jdW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudCkKLSAgICAgICAgICAgICAgICBm
cmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAg
IGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAg
KmVycm9yID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZC4iOworICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQoKTsKKyAgICB9CiAKLSAgICBpZiAoZnJhbWUpCi0gICAgICAgIHJldHVy
biBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0
U3RhdGUoZnJhbWUpKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5vd25lckRvY3Vt
ZW50KCk7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAKLSAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQoKTsKLX0KKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3Jp
cHRTdGF0ZShmcmFtZSkpOworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsK
KyAgICAgICAgKmVycm9yID0gIk5vIEphdmFTY3JpcHQgd29ybGQgZm91bmQgZm9yIG5vZGUgd2l0
aCBnaXZlbiBpZC4iOworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKKyAgICB9CiAK
KyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBk
ZjgzNTliNzNlZTMxYjY5OWJkN2NmZGQ0OTdmODUxNjA0N2E5ZjI1Li42ODVhMTk0YjNkMjIxNjA2
OTBkZDIzNDJjNjVmM2M4ZTJkMzI0MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBOYW1lTm9kZU1hcDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRl
VGFzazsKK2NsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsK
IApAQCAtMTE2LDkgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUo
RXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCk7CiAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1blN5
bmNocm9ub3VzbHkpOwogICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoRXJyb3JTdHJpbmcqKTsKLSAg
ICB2b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXROb2RlUHJvcGVydGllcyhFcnJvclN0
cmluZyosIGxvbmcgbm9kZUlkLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBwcm9wZXJ0aWVz
QXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXROb2Rl
UHJvdG90eXBlcyhFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KiByZXN1bHQpOworICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5v
ZGVJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KTsKICAgICB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyosIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgbG9uZyogbm9kZUlkKTsKIAogICAgIC8v
IE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KQEAgLTEz
OCw3ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgbG9uZyBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5v
ZGUqKTsKICAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChsb25nIG5vZGVJZCk7CiAg
ICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGxvbmcqIG5vZGVJZCk7Ci0gICAgbG9uZyBpbnNwZWN0ZWROb2RlKHVuc2lnbmVk
IGxvbmcgbnVtKTsKICAgICB2b2lkIGNvcHlOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQp
OwogICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqKTsKIApAQCAtMTgyLDcgKzE4
MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobG9uZyBub2RlSWQpOworICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yTm9kZShFcnJvclN0cmluZyosIE5vZGUqKTsK
IAogICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBJ
bmplY3RlZFNjcmlwdEhvc3QqIG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpAQCAtMTk5LDcgKzE5Nyw2
IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8TWF0Y2hKb2IqPiBtX3BlbmRpbmdNYXRjaEpvYnM7CiAg
ICAgVGltZXI8SW5zcGVjdG9yRE9NQWdlbnQ+IG1fbWF0Y2hKb2JzVGltZXI7CiAgICAgSGFzaFNl
dDxSZWZQdHI8Tm9kZT4gPiBtX3NlYXJjaFJlc3VsdHM7Ci0gICAgVmVjdG9yPGxvbmc+IG1faW5z
cGVjdGVkTm9kZXM7CiAgICAgT3duUHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+IG1f
cmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDg1NzFmYzVmZmQ2ODdmMDVl
OTlkMjM2NTMyMmUxN2NkOTk0MzNkNjYuLmQwOTk5N2YyMmMyOWEzZDIzZWY0NzRlMmI4MjU1NDU1
NWEwNjViN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwCkBAIC01Miw2ICs1MiwxMyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bgogICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91
cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXN1bHQpOwogfQogCit2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6ZXZhbHVhdGVPbihFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3JNYWluRnJhbWUoKTsKKyAg
ICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgaW5qZWN0ZWRTY3Jp
cHQuZXZhbHVhdGVPbihvYmplY3RJZCwgZXhwcmVzc2lvbiwgcmVzdWx0KTsKK30KKwogdm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbXBsZXRpb25zKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogcmVzdWx0KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gbV9pbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yTWFpbkZyYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgK
aW5kZXggYmI3N2YwM2VkMDIxOTVjMTk4YzAyNjhmYzhiOTMxMGY5YjM2NGE0ZC4uNzk0NTBkNGUx
MjMzZDU5ZjEyOWQ0M2YyZjg4YjQzM2QxMzFlZDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNjAsNiArNjAsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KICAgICB2b2lkIGV2YWx1YXRlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlT24oRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIGdldENvbXBsZXRpb25zKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIHJlbGVh
c2VPYmplY3QoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0
SWQpOwogICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYm9vbCBh
YmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCmluZGV4IGYwMWUxODMyMmY2Y2NlZDNlMGZlYzdmYmE1MTAxYzQ5N2QzMzhlYjAuLjdiNWZm
MmZjZjJkZDBlZGEyNmY4MGI0MGVjOTU1NjA2NDBjNTgxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMK
QEAgLTQwMywxNyArNDAzLDM1IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFub2RlLm5vZGVOYW1lIHx8IG5vZGUubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKSAhPT0gImltZyIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
ZnVuY3Rpb24gc2V0VG9vbHRpcChwcm9wZXJ0aWVzKQorICAgICAgICBmdW5jdGlvbiBzZXRUb29s
dGlwKHJlc3VsdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAg
ICAgICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LnR5cGUgIT09ICJzdHJpbmciKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMub2Zmc2V0SGVp
Z2h0ID09PSBwcm9wZXJ0aWVzLm5hdHVyYWxIZWlnaHQgJiYgcHJvcGVydGllcy5vZmZzZXRXaWR0
aCA9PT0gcHJvcGVydGllcy5uYXR1cmFsV2lkdGgpCi0gICAgICAgICAgICAgICAgdGhpcy50b29s
dGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCDDlyAlZCBwaXhlbHMiLCBwcm9wZXJ0aWVz
Lm9mZnNldFdpZHRoLCBwcm9wZXJ0aWVzLm9mZnNldEhlaWdodCk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIl
ZCDDlyAlZCBwaXhlbHMgKE5hdHVyYWw6ICVkIMOXICVkIHBpeGVscykiLCBwcm9wZXJ0aWVzLm9m
ZnNldFdpZHRoLCBwcm9wZXJ0aWVzLm9mZnNldEhlaWdodCwgcHJvcGVydGllcy5uYXR1cmFsV2lk
dGgsIHByb3BlcnRpZXMubmF0dXJhbEhlaWdodCk7CisgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gSlNPTi5wYXJzZShyZXN1bHQuZGVzY3JpcHRpb24p
OworICAgICAgICAgICAgICAgIHZhciBvZmZzZXRXaWR0aCA9IHByb3BlcnRpZXNbMF07CisgICAg
ICAgICAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IHByb3BlcnRpZXNbMV07CisgICAgICAgICAg
ICAgICAgdmFyIG5hdHVyYWxXaWR0aCA9IHByb3BlcnRpZXNbMl07CisgICAgICAgICAgICAgICAg
dmFyIG5hdHVyYWxIZWlnaHQgPSBwcm9wZXJ0aWVzWzNdOworICAgICAgICAgICAgICAgIGlmIChv
ZmZzZXRIZWlnaHQgPT09IG5hdHVyYWxIZWlnaHQgJiYgb2Zmc2V0V2lkdGggPT09IG5hdHVyYWxX
aWR0aCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCIlZCBceGQ3ICVkIHBpeGVscyIsIG9mZnNldFdpZHRoLCBvZmZzZXRIZWlnaHQpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBceGQ3ICVkIHBpeGVscyAoTmF0dXJhbDogJWQgXHhk
NyAlZCBwaXhlbHMpIiwgb2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCwgbmF0dXJhbFdpZHRoLCBu
YXR1cmFsSGVpZ2h0KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gcmVzb2x2ZWROb2RlKG9iamVjdFBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghb2JqZWN0UGF5bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIHZhciBvYmplY3QgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2Fk
KG9iamVjdFBheWxvYWQpOworICAgICAgICAgICAgb2JqZWN0LmV2YWx1YXRlKCJyZXR1cm4gJ1sn
ICsgdGhpcy5vZmZzZXRXaWR0aCArICcsJyArIHRoaXMub2Zmc2V0SGVpZ2h0ICsgJywnICsgdGhp
cy5uYXR1cmFsV2lkdGggKyAnLCcgKyB0aGlzLm5hdHVyYWxIZWlnaHQgKyAnXSciLCBzZXRUb29s
dGlwLmJpbmQodGhpcykpOwogICAgICAgICB9Ci0gICAgICAgIERPTUFnZW50LmdldE5vZGVQcm9w
ZXJ0aWVzKG5vZGUuaWQsIFsibmF0dXJhbEhlaWdodCIsICJuYXR1cmFsV2lkdGgiLCAib2Zmc2V0
SGVpZ2h0IiwgIm9mZnNldFdpZHRoIl0sIHNldFRvb2x0aXAuYmluZCh0aGlzKSk7CisgICAgICAg
IERPTUFnZW50LnJlc29sdmVOb2RlKG5vZGUuaWQsICIiLCByZXNvbHZlZE5vZGUuYmluZCh0aGlz
KSk7CiAgICAgfSwKIAogICAgIHVwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBh
bmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRl
YmFyUGFuZS5qcwppbmRleCA0Y2M0YjY5YmJkNjkyYWI0OWU3OGE4ZmY1MTJkMDUzYzhhYmE0OTI0
Li4zN2IxZGYwMGYzYTJlMWJjYmVkNjQwNmZmNGM2MDg0ZTc4MDRjMTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRl
YmFyUGFuZS5qcwpAQCAtNDIsMTUgKzQyLDQwIEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lk
ZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socHJvdG90eXBlcykKKyAgICAgICAgUnVudGltZUFn
ZW50LnJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoMCwgImRvbS1zZWxlY3Rpb24iKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5yZXNvbHZlTm9kZShub2RlLCBub2RlUmVzb2x2
ZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgZnVuY3Rpb24gbm9kZVJlc29sdmVkKG9iamVjdFBh
eWxvYWQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghb2JqZWN0UGF5bG9hZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChvYmplY3RQYXlsb2FkKTsKKyAgICAgICAgICAgIG9i
amVjdC5ldmFsdWF0ZSgidmFyIHByb3RvID0gdGhpczsgcmVzdWx0ID0ge307IHZhciBjb3VudGVy
ID0gMTsgd2hpbGUgKHByb3RvKSB7IHJlc3VsdFtjb3VudGVyKytdID0gcHJvdG87IHByb3RvID0g
cHJvdG8uX19wcm90b19fIH07IHJldHVybiByZXN1bHQ7Iiwgbm9kZVByb3RvdHlwZXNSZWFkeS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG5vZGVQcm90b3R5cGVz
UmVhZHkob2JqZWN0UGF5bG9hZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFvYmplY3RQ
YXlsb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHZhciBvYmplY3Qg
PSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKG9iamVjdFBheWxvYWQpOwor
ICAgICAgICAgICAgb2JqZWN0LmdldE93blByb3BlcnRpZXMoZmFsc2UsIGZpbGxTZWN0aW9uLmJp
bmQodGhpcykpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZmlsbFNlY3Rpb24ocHJv
dG90eXBlcykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVzKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgdmFyIGJvZHkgPSB0aGlzLmJvZHlFbGVt
ZW50OwogICAgICAgICAgICAgYm9keS5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICAgICAgdGhp
cy5zZWN0aW9ucyA9IFtdOwogCiAgICAgICAgICAgICAvLyBHZXQgYXJyYXkgb2YgcHJvdG90eXBl
IHVzZXItZnJpZW5kbHkgbmFtZXMuCiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBy
b3RvdHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgcHJvdG90eXBlID0g
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwcm90b3R5cGVzW2ldKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIXBhcnNlSW50KHByb3RvdHlwZXNbaV0ubmFtZSkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgdmFyIHByb3RvdHlwZSA9
IHByb3RvdHlwZXNbaV0udmFsdWU7CiAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gcHJvdG90
eXBlLmRlc2NyaXB0aW9uOwogICAgICAgICAgICAgICAgIGlmICh0aXRsZS5tYXRjaCgvUHJvdG90
eXBlJC8pKQogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2UoL1Byb3Rv
dHlwZSQvLCAiIik7CkBAIC01OSw3ICs4NCw2IEBAIFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lk
ZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQo
c2VjdGlvbi5lbGVtZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBET01B
Z2VudC5nZXROb2RlUHJvdG90eXBlcyhub2RlLmlkLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVtb3RlT2JqZWN0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1v
dGVPYmplY3QuanMKaW5kZXggOGU3N2MyNjFjOTdjODAyNDM1NWNiMDZhNGUwNGU1ZTUxZmYwMzRi
My4uODJlZWY5ZDQ0NjQyMjNhMmRmYjY0NTA3NWQzYmRmMjllZWRlYzdlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanMKQEAgLTUy
LDcgKzUyLDcgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5yZXNvbHZlTm9kZSA9IGZ1bmN0
aW9uKG5vZGUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgY2FsbGJhY2sob2JqZWN0ID8gV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChvYmplY3QpIDogbnVsbCk7CiAgICAg
fQotICAgIERPTUFnZW50LnJlc29sdmVOb2RlKG5vZGUuaWQsIG15Y2FsbGJhY2spOworICAgIERP
TUFnZW50LnJlc29sdmVOb2RlKG5vZGUuaWQsICJkb20tc2VsZWN0aW9uIiwgbXljYWxsYmFjayk7
CiB9CiAKIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQgPSBmdW5jdGlvbihw
YXlsb2FkKQpAQCAtMTM2LDYgKzEzNiwxMSBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIERPTUFnZW50LnB1c2hOb2RlVG9Gcm9udGVuZCh0aGlz
Ll9vYmplY3RJZCwgY2FsbGJhY2spOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjYWxsYmFj
aygwKTsKKyAgICB9LAorCisgICAgZXZhbHVhdGU6IGZ1bmN0aW9uKGV4cHJlc3Npb24sIGNhbGxi
YWNrKQorICAgIHsKKyAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlT24odGhpcy5fb2JqZWN0
SWQsIGV4cHJlc3Npb24sIGNhbGxiYWNrKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84425</attachid>
            <date>2011-03-02 09:22:14 -0800</date>
            <delta_ts>2011-03-02 09:24:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55575-20110302202210.patch</filename>
            <type>text/plain</type>
            <size>36646</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAxMTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMGE2MWM1MzEzMzQ2NjY4
OGI0OTRiN2FhMWRiMGNhYjJmNGE5YWE2Li4xYmUzMzczYzViMWI0YjhlMzdmYWJmNDU3MWU4MWIy
ZGUzNzQxMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDMtMDIgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIEluamVjdGVk
U2NyaXB0SG9zdCAtPiBET01BZ2VudCBkZXBlbmRlbmN5LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU1NzUKKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE5vZGVDYWxsYmFjayk6CisgICAgICAgICog
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVN
ZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdDo6bm9kZUFzU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjphZGRJbnNwZWN0ZWROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6Y2xlYXJJbnNwZWN0ZWROb2Rlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmNvcHlUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkTm9kZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6YWRkSW5zcGVjdGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1
YXRlT24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NyZWF0ZVRv
b2x0aXBGb3JOb2RlLnNldFRvb2x0aXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9jcmVhdGVUb29sdGlwRm9yTm9kZS5yZXNvbHZlZE5vZGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9j
cmVhdGVUb29sdGlwRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9w
ZXJ0aWVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvcGVydGllc1Np
ZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUubm9kZVJlc29sdmVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZS5ub2RlUHJvdG90
eXBlc1JlYWR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUu
cHJvdG90eXBlLnVwZGF0ZS5maWxsU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
cGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5yZXNvbHZlTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LnByb3RvdHlwZS5wdXNoTm9kZVRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5wcm90b3R5cGUuZXZhbHVhdGUpOgorCiAyMDExLTAzLTAyICBPbGVnIFJvbWFz
aGluICA8cm9tYXhhQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNj
cmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGE3MDQ3ZjAzOWViY2NlY2U0MzM0NWM3MGZlYTVh
YzI5NTAxMDY4MjAuLmJjMWQ4NzcxMGEzMDE4NTE2MzNiZGZlZmFhNGM3YThkZjVhZjg2OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKQEAgLTEzNSwxOCArMTM1LDE1IEBAIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmN1cnJlbnRDYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjKQogI2VuZGlmCiB9
CiAKLUpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVGb3JJZChFeGVjU3RhdGUqIGV4
ZWMpCitKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBOb2RlKiBub2RlID0gaW1wbCgpLT5ub2RlRm9y
SWQoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgTm9kZSogbm9kZSA9IGlt
cGwoKS0+aW5zcGVjdGVkTm9kZShleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaWYgKCFp
bXBsKCktPmluc3BlY3RvckFnZW50KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICByZXR1cm4gdG9K
UyhleGVjLCBub2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGJh
ZDU0MmQ0ZDIzMTE4NTVhM2U1OGQ2NTU5OGY4YTY3NDJjOGZlMjUuLjdhMzNlZDBjYzE2MTY4NGY1
NTlkMDc0ZTllMTYyOWE5NGExYmMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cApAQCAtMTUxLDIxICsxNTEsMTggQEAgdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2NhcmRJ
bmplY3RlZFNjcmlwdChTY3JpcHRTdGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUKICAgICBnbG9i
YWwtPkRlbGV0ZUhpZGRlblZhbHVlKGtleSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZvcklkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdGVkTm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5D
X1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3Qubm9kZUZvcklkKCkiKTsKKyAgICBJTkNfU1RBVFMo
IkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWROb2RlKCkiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBJbmplY3Rl
ZFNjcmlwdEhvc3QqIGhvc3QgPSBWOEluamVjdGVkU2NyaXB0SG9zdDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgCi0gICAgTm9kZSogbm9kZSA9IGhvc3QtPm5vZGVGb3JJZChhcmdzWzBd
LT5Ub0ludDMyKCktPlZhbHVlKCkpOworICAgIE5vZGUqIG5vZGUgPSBob3N0LT5pbnNwZWN0ZWRO
b2RlKGFyZ3NbMF0tPlRvSW50MzIoKS0+VmFsdWUoKSk7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgaWYgKCFob3N0LT5pbnNwZWN0b3JBZ2Vu
dCgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCiAgICAgcmV0dXJuIHRvVjgo
bm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3Bw
CmluZGV4IDhkNTZhNWE0MWJlNDhmN2UxMGFmNjQ5YjM4YTVhYzNmOGY4NzRhNTMuLjYwMDQ5Yzlh
Mjc4YThhMzNiYzNmNjI5YzUyNTE5OGE0ZWY0MDhjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ29uc29s
ZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmpl
Y3RlZFNjcmlwdEhvCiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGpzb25BcmdzID0gSW5zcGVjdG9y
QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
YXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAgICAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwRm9y
Q29uc29sZShtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksICJjb25zb2xlIik7CiAgICAgICAgICAg
ICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggYjU1MTM5NTI1N2EzYTJmZTc4
OGIwODA5YzQ5MzNjMzI1Zjg5NDRjZS4uOTE3MmJhM2E5MDkzMTY5MWU0MWQ0M2E1OTAyMTMxMGUy
MmJiYjBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3Bw
CkBAIC01Niw2ICs1NiwxNCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdQogICAgIG1ha2VDYWxs
KGZ1bmN0aW9uLCByZXN1bHQpOwogfQogCit2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9u
KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0ZU9uIik7
CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQtPnRvSlNPTlN0cmluZygpKTsK
KyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKKyAgICBtYWtlQ2FsbChm
dW5jdGlvbiwgcmVzdWx0KTsKK30KKwogdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNh
bGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKICAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImV2YWx1
YXRlT25DYWxsRnJhbWUiKTsKQEAgLTExNSwyMSArMTIzLDYgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6cmVzb2x2ZU5vZGUobG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3Vs
dCkKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0Tm9kZVByb3BlcnRpZXMobG9uZyBub2RlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IHByb3BlcnRpZXNBcnJheSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQot
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0
LCAiZ2V0Tm9kZVByb3BlcnRpZXMiKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChub2Rl
SWQpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHByb3BlcnRpZXNBcnJheS0+dG9KU09O
U3RyaW5nKCkpOwotICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQpOwotfQotCi12b2lkIElu
amVjdGVkU2NyaXB0OjpnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KQotewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbiht
X2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0Tm9kZVByb3RvdHlwZXMiKTsKLSAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChub2RlSWQpOwotICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCByZXN1bHQp
OwotfQotCiB2b2lkIEluamVjdGVkU2NyaXB0OjpzZXRQcm9wZXJ0eVZhbHVlKFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KQog
ewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0
LCAic2V0UHJvcGVydHlWYWx1ZSIpOwpAQCAtMTU3LDExICsxNTAsMTIgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGcmFtZXMoKQogfQogI2VuZGlmCiAK
LVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcEZvckNvbnNv
bGUoU2NyaXB0VmFsdWUgdmFsdWUpCitQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5qZWN0
ZWRTY3JpcHQ6OndyYXBPYmplY3QoU2NyaXB0VmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3Jv
dXBOYW1lKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgd3JhcEZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJ3cmFwRm9yQ29uc29s
ZSIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24obV9pbmplY3RlZFNjcmlw
dE9iamVjdCwgIndyYXBPYmplY3QiKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
dmFsdWUpOworICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChncm91cE5hbWUpOwogICAg
IHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSk7
CiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBTY3JpcHRWYWx1ZSByID0gd3Jh
cEZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKQEAgLTE3MywxMSArMTY3LDE2IEBAIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcEZvckNvbnNvbGUoU2Ny
aXB0VmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHIudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVk
U2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOwogfQogCitQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBOb2RlKE5vZGUqIG5vZGUsIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lKQoreworICAgIHJldHVybiB3cmFwT2JqZWN0KG5vZGVBc1Nj
cmlwdFZhbHVlKG5vZGUpLCBncm91cE5hbWUpOworfQorCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpp
bnNwZWN0Tm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgImlu
c3BlY3ROb2RlIik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSW5qZWN0ZWRTY3JpcHRI
b3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRl
KCksIG5vZGUpKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChub2RlQXNTY3JpcHRWYWx1
ZShub2RlKSk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFrZUNh
bGwoZnVuY3Rpb24sICZyZXN1bHQpOwogfQpAQCAtMjEyLDYgKzIxMSwxMSBAQCB2b2lkIEluamVj
dGVkU2NyaXB0OjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdQogICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsK
IH0KIAorU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUq
IG5vZGUpCit7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFs
dWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpLCBub2RlKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggYmQ1YTVhNjhkNDYzZTM0
NzRkMTc1M2JiZGY4YmM4ZTg0NTg1NWNkOS4uZGVjMzhhNzk1MmQyYmIwODQzNmIwNDdmOTRhYTg4
Njk0ZjEyZTJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
QEAgLTUyLDE0ICs1MiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNOb1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5oYXNOb1ZhbHVlKCk7IH0KIAogICAgIHZv
aWQgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVj
dEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlT24oUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIGdldENvbXBsZXRpb25zKGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRDb21wbGV0aW9uc09uQ2Fs
bEZyYW1lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYWxsRnJhbWVJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29s
IGFiYnJldmlhdGUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgTm9kZSog
bm9kZUZvck9iamVjdElkKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCk7CiAg
ICAgdm9pZCByZXNvbHZlTm9kZShsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KTsKLSAgICB2b2lkIGdldE5vZGVQcm9wZXJ0aWVzKGxvbmcgbm9kZUlkLCBQYXNzUmVm
UHRyPEluc3BlY3RvckFycmF5PiBwcm9wZXJ0aWVzQXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXROb2RlUHJvdG90eXBlcyhsb25nIG5vZGVJZCwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIHNldFByb3BlcnR5VmFsdWUo
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
KiByZXN1bHQpOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gb2JqZWN0SWQpOwogICAgIApAQCAtNjcsNyArNjYsOCBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gY2FsbEZyYW1lcygpOwogI2VuZGlmCiAKLSAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gd3JhcEZvckNvbnNvbGUoU2NyaXB0VmFsdWUpOworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB3cmFwT2JqZWN0KFNjcmlwdFZhbHVlLCBjb25z
dCBTdHJpbmcmIGdyb3VwTmFtZSk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdy
YXBOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSk7CiAgICAgdm9pZCBpbnNwZWN0
Tm9kZShOb2RlKik7CiAgICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGNvbnN0IFN0
cmluZyYpOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKTsgfQpAQCAtNzgsNiArNzgsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKTsKICAgICB2b2lk
IG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJl
c3VsdCk7CisgICAgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoTm9kZSopOwogCiAgICAg
U2NyaXB0T2JqZWN0IG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCBjM2EwYTFmNmRjMjA3
ZjdlYWIxZDc5YzAzMWE2NmY1ZmU1ZjI5ZmNmLi4wZDAzZjRjYTI5ZTQ1YWVhZDgyOWIyNTQ3YWI5
YmUwOWI4OWUyZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcApAQCAtNDIsMTAgKzQyLDEwIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
b25zb2xlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKIAogI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQpAQCAtOTQsMjUgKzk0LDI4IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIEluamVjdGVkU2Ny
aXB0SG9zdDo6Y29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBJbmplY3RlZFNjcmlw
dEhvc3Q6OmFkZEluc3BlY3RlZE5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBQYXN0ZWJvYXJkOjpn
ZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4dCh0ZXh0KTsKKyAgICBtX2luc3BlY3Rl
ZE5vZGVzLnByZXBlbmQobm9kZSk7CisgICAgd2hpbGUgKG1faW5zcGVjdGVkTm9kZXMuc2l6ZSgp
ID4gNSkKKyAgICAgICAgbV9pbnNwZWN0ZWROb2Rlcy5yZW1vdmVMYXN0KCk7CiB9CiAKLU5vZGUq
IEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZvcklkKGxvbmcgbm9kZUlkKQordm9pZCBJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmNsZWFySW5zcGVjdGVkTm9kZXMoKQogewotICAgIGlmIChJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICByZXR1cm4g
ZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQpOwotICAgIHJldHVybiAwOworICAgIG1faW5zcGVj
dGVkTm9kZXMuY2xlYXIoKTsKIH0KIAotbG9uZyBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3Rl
ZE5vZGUodW5zaWduZWQgbG9uZyBudW0pCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y29weVRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3BlY3RvckRPTUFnZW50KCk7Ci0gICAgaWYgKCFkb21BZ2VudCkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRl
eHQodGV4dCk7Cit9CiAKLSAgICByZXR1cm4gZG9tQWdlbnQtPmluc3BlY3RlZE5vZGUobnVtKTsK
K05vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkTm9kZSh1bnNpZ25lZCBsb25nIG51
bSkKK3sKKyAgICBpZiAobnVtIDwgbV9pbnNwZWN0ZWROb2Rlcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBtX2luc3BlY3RlZE5vZGVzW251bV0uZ2V0KCk7CisgICAgcmV0dXJuIDA7CiB9CiAKICNp
ZiBFTkFCTEUoREFUQUJBU0UpCkBAIC0xNzMsMTMgKzE3Niw2IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpyZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwg
Y29uc3QKICAgICB9CiB9CiAKLUluc3BlY3RvckRPTUFnZW50KiBJbmplY3RlZFNjcmlwdEhvc3Q6
Omluc3BlY3RvckRPTUFnZW50KCkKLXsKLSAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2luc3BlY3RvckFnZW50LT5kb21BZ2VudCgpOwot
fQotCiBJbnNwZWN0b3JGcm9udGVuZCogSW5qZWN0ZWRTY3JpcHRIb3N0Ojpmcm9udGVuZCgpCiB7
CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IDc2OTI5MzkxMjQ4NzQ3ZTU3Yzc4YjliNzFlZGI0
NzY4YmU0MDY2YTAuLjliYTY5M2YyYTEwMGRjMGM5ZjhmZjc2NzcwNzE3ZDBjZWZhMzU3ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTM3
LDEyICszNywxMiBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwotY2xhc3MgSW5z
cGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKIGNsYXNzIE5vZGU7CkBAIC02OSw5ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3RJZCwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpOwogICAgIHZvaWQgY2xlYXJDb25zb2xlTWVzc2Fn
ZXMoKTsKIAorICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShOb2RlKik7CisgICAgdm9pZCBjbGVh
ckluc3BlY3RlZE5vZGVzKCk7CisKICAgICB2b2lkIGNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCk7Ci0gICAgTm9kZSogbm9kZUZvcklkKGxvbmcgbm9kZUlkKTsKLSAgICBsb25nIGluc3BlY3Rl
ZE5vZGUodW5zaWduZWQgbG9uZyBudW0pOworICAgIE5vZGUqIGluc3BlY3RlZE5vZGUodW5zaWdu
ZWQgbG9uZyBudW0pOwogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIGxvbmcgZGF0YWJhc2VJ
ZEltcGwoRGF0YWJhc2UqKTsKQEAgLTk3LDcgKzk5LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIEluamVjdGVkU2NyaXB0SG9zdChJbnNwZWN0b3JBZ2VudCopOwotICAgIEluc3BlY3RvckRP
TUFnZW50KiBpbnNwZWN0b3JET01BZ2VudCgpOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCgpOwogICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwogICAgIFNjcmlwdE9i
amVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlLCBsb25nIGlkKTsKQEAgLTEwOCw2ICsxMDksNyBAQCBwcml2YXRlOgog
ICAgIGxvbmcgbV9sYXN0V29ya2VySWQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIEluamVj
dGVkU2NyaXB0PiBJZFRvSW5qZWN0ZWRTY3JpcHRNYXA7CiAgICAgSWRUb0luamVjdGVkU2NyaXB0
TWFwIG1faWRUb0luamVjdGVkU2NyaXB0OworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2lu
c3BlY3RlZE5vZGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAppbmRleCA1NjE5ZjhlMjNj
M2IwYzc4YTRlOGFiMDlmNGYzZjcxOTljYjc0YjhlLi4wZDVjNTAwMDY5OWE3MWY2ODgwYjczYTQz
ZDg1MDFmYTg3MmUxMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbApAQCAtMzUsOSArMzUsOCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAg
IHZvaWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKIAogICAgICAgICB2b2lkIGNvcHlUZXh0KGlu
IERPTVN0cmluZyB0ZXh0KTsKLSAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IG5vZGVGb3JJZChp
biBsb25nIG5vZGVJZCk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgaW5zcGVjdChpbiBET01PYmpl
Y3Qgb2JqZWN0SWQsIGluIERPTU9iamVjdCBoaW50cyk7Ci0gICAgICAgIGxvbmcgaW5zcGVjdGVk
Tm9kZShpbiB1bnNpZ25lZCBsb25nIG51bSk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBp
bnNwZWN0ZWROb2RlKGluIHVuc2lnbmVkIGxvbmcgbnVtKTsKICAgICAgICAgW0N1c3RvbV0gRE9N
T2JqZWN0IGludGVybmFsQ29uc3RydWN0b3JOYW1lKGluIERPTU9iamVjdCBvYmplY3QpOwogCiAg
ICAgICAgIFtDdXN0b21dIERPTU9iamVjdCBjdXJyZW50Q2FsbEZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggZmY2ZTA3
NjUwZWJlMzNlNWM3NWY2MGZkNmJlNDZiM2Q2NWFjY2MwNy4uZDkxZDk1MTMxM2JkYTk1NzNjZjY4
OWRiY2RlOTM2YWMyMDljMTQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtNTAsMTAgKzUwLDEwIEBAIHZhciBJbmplY3RlZFNj
cmlwdCA9IGZ1bmN0aW9uKCkKIH0KIAogSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewotICAg
IHdyYXBGb3JDb25zb2xlOiBmdW5jdGlvbihvYmplY3QsIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRv
dykKKyAgICB3cmFwT2JqZWN0OiBmdW5jdGlvbihvYmplY3QsIGdyb3VwTmFtZSwgY2FuQWNjZXNz
SW5zcGVjdGVkV2luZG93KQogICAgIHsKICAgICAgICAgaWYgKGNhbkFjY2Vzc0luc3BlY3RlZFdp
bmRvdykKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl93cmFwT2JqZWN0KG9iamVjdCwgImNvbnNv
bGUiKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl93cmFwT2JqZWN0KG9iamVjdCwgZ3JvdXBO
YW1lKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IHt9OwogICAgICAgICByZXN1bHQudHlwZSA9IHR5
cGVvZiBvYmplY3Q7CiAgICAgICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9IHRoaXMuX3RvU3RyaW5n
KG9iamVjdCk7CkBAIC0yODgsNiArMjg4LDIwIEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChpbnNwZWN0ZWRXaW5kb3cu
ZXZhbCwgaW5zcGVjdGVkV2luZG93LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgZmFsc2UsIGlu
amVjdENvbW1hbmRMaW5lQVBJKTsKICAgICB9LAogCisgICAgZXZhbHVhdGVPbjogZnVuY3Rpb24o
b2JqZWN0SWQsIGV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2YXIgcGFyc2VkT2JqZWN0SWQg
PSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKKyAgICAgICAgdmFyIG9iamVjdCA9IHRo
aXMuX29iamVjdEZvcklkKHBhcnNlZE9iamVjdElkKTsKKyAgICAgICAgaWYgKCFvYmplY3QpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnNw
ZWN0ZWRXaW5kb3cuY29uc29sZS5fb2JqZWN0VG9FdmFsdWF0ZU9uID0gb2JqZWN0OworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlQW5kV3JhcChpbnNwZWN0ZWRXaW5kb3cuZXZhbCwg
aW5zcGVjdGVkV2luZG93LCAiKGZ1bmN0aW9uKCkgeyIgKyBleHByZXNzaW9uICsgIn0pLmNhbGwo
d2luZG93LmNvbnNvbGUuX29iamVjdFRvRXZhbHVhdGVPbikiLCBwYXJzZWRPYmplY3RJZC5vYmpl
Y3RHcm91cCwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAg
IGRlbGV0ZSBpbnNwZWN0ZWRXaW5kb3cuY29uc29sZS5fb2JqZWN0VG9FdmFsdWF0ZU9uOworICAg
ICAgICB9CisgICAgfSwKKwogICAgIF9ldmFsdWF0ZUFuZFdyYXA6IGZ1bmN0aW9uKGV2YWxGdW5j
dGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaXNFdmFsT25DYWxsRnJhbWUs
IGluamVjdENvbW1hbmRMaW5lQVBJKQogICAgIHsKICAgICAgICAgdHJ5IHsKQEAgLTM1NiwxMyAr
MzcwLDYgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gY2Fs
bEZyYW1lOwogICAgIH0sCiAKLSAgICBfbm9kZUZvcklkOiBmdW5jdGlvbihub2RlSWQpCi0gICAg
ewotICAgICAgICBpZiAoIW5vZGVJZCkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Lm5vZGVGb3JJZChub2RlSWQpOwotICAgIH0sCi0K
ICAgICBfb2JqZWN0Rm9ySWQ6IGZ1bmN0aW9uKG9iamVjdElkKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2lkVG9XcmFwcGVkT2JqZWN0W29iamVjdElkLmlkXTsKQEAgLTM3Nyw0MSArMzg0
LDkgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gb2JqZWN0
OwogICAgIH0sCiAKLSAgICByZXNvbHZlTm9kZTogZnVuY3Rpb24obm9kZUlkKQotICAgIHsKLSAg
ICAgICAgdmFyIG5vZGUgPSB0aGlzLl9ub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAgaWYgKCFu
b2RlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAvLyBGSVhNRTogcmVjZWl2
ZSB0aGUgb2JqZWN0IGdyb3VwIGZyb20gY2xpZW50LgotICAgICAgICByZXR1cm4gdGhpcy5fd3Jh
cE9iamVjdChub2RlLCAicHJvdG90eXBlIik7Ci0gICAgfSwKLQotICAgIGdldE5vZGVQcm9wZXJ0
aWVzOiBmdW5jdGlvbihub2RlSWQsIHByb3BlcnRpZXMpCi0gICAgewotICAgICAgICB2YXIgbm9k
ZSA9IHRoaXMuX25vZGVGb3JJZChub2RlSWQpOwotICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHByb3BlcnRpZXMgPSBldmFsKCIoIiArIHByb3Bl
cnRpZXMgKyAiKSIpOwotICAgICAgICB2YXIgcmVzdWx0ID0ge307Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHJlc3VsdFtw
cm9wZXJ0aWVzW2ldXSA9IG5vZGVbcHJvcGVydGllc1tpXV07Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfSwKLQotICAgIGdldE5vZGVQcm90b3R5cGVzOiBmdW5jdGlvbihub2RlSWQpCisg
ICAgcmVzb2x2ZU5vZGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICB0aGlzLnJlbGVh
c2VXcmFwcGVyT2JqZWN0R3JvdXAoInByb3RvdHlwZXMiKTsKLSAgICAgICAgdmFyIG5vZGUgPSB0
aGlzLl9ub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgdmFyIHBy
b3RvdHlwZSA9IG5vZGU7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRo
aXMuX3dyYXBPYmplY3QocHJvdG90eXBlLCAicHJvdG90eXBlcyIpKTsKLSAgICAgICAgICAgIHBy
b3RvdHlwZSA9IHByb3RvdHlwZS5fX3Byb3RvX187Ci0gICAgICAgIH0gd2hpbGUgKHByb3RvdHlw
ZSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dyYXBPYmpl
Y3Qobm9kZSk7CiAgICAgfSwKIAogICAgIF9pc0RlZmluZWQ6IGZ1bmN0aW9uKG9iamVjdCkKQEAg
LTczOCw4ICs3MTMsNyBAQCBDb21tYW5kTGluZUFQSUltcGwucHJvdG90eXBlID0gewogCiAgICAg
X2luc3BlY3RlZE5vZGU6IGZ1bmN0aW9uKG51bSkKICAgICB7Ci0gICAgICAgIHZhciBub2RlSWQg
PSBJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkTm9kZShudW0pOwotICAgICAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChub2RlSWQpOworICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHRIb3N0Lmluc3BlY3RlZE5vZGUobnVtKTsKICAgICB9LAogCiAgICAgX25vcm1hbGl6
ZUV2ZW50VHlwZXM6IGZ1bmN0aW9uKHR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbAppbmRleCA5MmMxNTZmMmFmODY3Y2JiYTQ4MzY5ZTk4YjZjZWMyODNiOTM1MjU5Li43
MTUwMDljNjgzNWI5YmQ0YWNhNjE1NWQwNzAzOTU2ZDZmZTVkMTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtNzQsNiArNzQsNyBAQCBtb2R1bGUgY29yZSB7CiAK
ICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gUnVudGltZSB7CiAgICAgICAg
IHZvaWQgZXZhbHVhdGUoaW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIFN0cmluZyBvYmplY3RHcm91
cCwgaW4gYm9vbGVhbiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIG91dCBWYWx1ZSByZXN1bHQpOwor
ICAgICAgICB2b2lkIGV2YWx1YXRlT24oaW4gT2JqZWN0IG9iamVjdElkLCBpbiBTdHJpbmcgZXhw
cmVzc2lvbiwgb3V0IFZhbHVlIHJlc3VsdCk7CiAgICAgICAgIHZvaWQgZ2V0Q29tcGxldGlvbnMo
aW4gU3RyaW5nIGV4cHJlc3Npb24sIGluIGJvb2xlYW4gaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBv
dXQgVmFsdWUgcmVzdWx0KTsKICAgICAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKGluIE9iamVjdCBv
YmplY3RJZCwgaW4gYm9vbGVhbiBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgaW4gYm9vbGVhbiBhYmJy
ZXZpYXRlLCBvdXQgVmFsdWUgcmVzdWx0KTsKICAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eVZhbHVl
KGluIE9iamVjdCBvYmplY3RJZCwgaW4gU3RyaW5nIHByb3BlcnR5TmFtZSwgaW4gU3RyaW5nIGV4
cHJlc3Npb24sIG91dCBWYWx1ZSByZXN1bHQpOwpAQCAtMTU5LDkgKzE2MCw3IEBAIG1vZHVsZSBj
b3JlIHsKICAgICAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKGluIFN0cmluZyBxdWVyeSwgaW4gYm9v
bGVhbiBydW5TeW5jaHJvbm91c2x5KTsKICAgICAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZCgpOwog
ICAgICAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChpbiBTdHJpbmcgcGF0aCwgb3V0
IGxvbmcgbm9kZUlkKTsKLSAgICAgICAgdm9pZCByZXNvbHZlTm9kZShpbiBsb25nIG5vZGVJZCwg
b3V0IFZhbHVlIHJlc3VsdCk7Ci0gICAgICAgIHZvaWQgZ2V0Tm9kZVByb3BlcnRpZXMoaW4gbG9u
ZyBub2RlSWQsIGluIEFycmF5IHByb3BlcnRpZXNBcnJheSwgb3V0IFZhbHVlIHJlc3VsdCk7Ci0g
ICAgICAgIHZvaWQgZ2V0Tm9kZVByb3RvdHlwZXMoaW4gbG9uZyBub2RlSWQsIG91dCBWYWx1ZSBy
ZXN1bHQpOworICAgICAgICB2b2lkIHJlc29sdmVOb2RlKGluIGxvbmcgbm9kZUlkLCBpbiBTdHJp
bmcgb2JqZWN0R3JvdXAsIG91dCBWYWx1ZSByZXN1bHQpOwogICAgICAgICB2b2lkIHB1c2hOb2Rl
VG9Gcm9udGVuZChpbiBPYmplY3Qgb2JqZWN0SWQsIG91dCBsb25nIG5vZGVJZCk7CiAKICAgICAg
ICAgW2V2ZW50XSB2b2lkIHNldERvY3VtZW50KG91dCBWYWx1ZSByb290KTsgLy8gRklYTUU6IHNo
b3VsZCBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgZnJvbnQtZW5kIGFzIGdldERvY3VtZW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNTE3
NTUxYjM0Njc1ZGI2ZTQyMTYyY2Q3NzJlODFiZDljNGNkNGZiNy4uMzg2OTQwOWM1NDAwMTUzNjA1
MjI1OGVhMWVhMTdiZjYxNTYzMDU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0zOTcsMjAgKzM5NywxMyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobG9uZyBub2RlSWQpCiAgICAgbV9m
cm9udGVuZC0+c2V0Q2hpbGROb2Rlcyhub2RlSWQsIGNoaWxkcmVuLnJlbGVhc2UoKSk7CiB9CiAK
LWxvbmcgSW5zcGVjdG9yRE9NQWdlbnQ6Omluc3BlY3RlZE5vZGUodW5zaWduZWQgbG9uZyBudW0p
Ci17Ci0gICAgaWYgKG51bSA8IG1faW5zcGVjdGVkTm9kZXMuc2l6ZSgpKQotICAgICAgICByZXR1
cm4gbV9pbnNwZWN0ZWROb2Rlc1tudW1dOwotICAgIHJldHVybiAwOwotfQotCiB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQogewogICAgIG1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5jbGVhcigpOwogICAgIG1faWRUb05vZGUuY2xlYXIoKTsKICAgICByZWxlYXNlRGFuZ2xp
bmdOb2RlcygpOwogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKLSAgICBtX2luc3Bl
Y3RlZE5vZGVzLmNsZWFyKCk7CisgICAgbV9pbmplY3RlZFNjcmlwdEhvc3QtPmNsZWFySW5zcGVj
dGVkTm9kZXMoKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChsb25n
IGlkKQpAQCAtNzA0LDkgKzY5NywxMCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVu
dExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgbG9uZwogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBu
b2RlSWQpCiB7Ci0gICAgbV9pbnNwZWN0ZWROb2Rlcy5wcmVwZW5kKG5vZGVJZCk7Ci0gICAgd2hp
bGUgKG1faW5zcGVjdGVkTm9kZXMuc2l6ZSgpID4gNSkKLSAgICAgICAgbV9pbnNwZWN0ZWROb2Rl
cy5yZW1vdmVMYXN0KCk7CisgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOworICAg
IGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5h
ZGRJbnNwZWN0ZWROb2RlKG5vZGUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJm
b3JtU2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJp
bW1lZFF1ZXJ5LCBib29sIHJ1blN5bmNocm9ub3VzbHkpCkBAIC04MDUsMjUgKzc5OSwxMiBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZWFyY2hDYW5jZWxlZChFcnJvclN0cmluZyopCiAgICAg
bV9zZWFyY2hSZXN1bHRzLmNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJl
c29sdmVOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4qIHJlc3VsdCkKLXsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVj
dGVkU2NyaXB0Rm9yTm9kZUlkKG5vZGVJZCk7Ci0gICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpCi0gICAgICAgIGluamVjdGVkU2NyaXB0LnJlc29sdmVOb2RlKG5vZGVJZCwgcmVz
dWx0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvcGVy
dGllc0FycmF5LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3IsIGxvbmcgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
CiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZv
ck5vZGVJZChub2RlSWQpOwotICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQot
ICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXROb2RlUHJvcGVydGllcyhub2RlSWQsIHByb3BlcnRp
ZXNBcnJheSwgcmVzdWx0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0Tm9kZVBy
b3RvdHlwZXMoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KQotewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0
ZWRTY3JpcHRGb3JOb2RlSWQobm9kZUlkKTsKLSAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Tm9kZVByb3RvdHlwZXMobm9kZUlk
LCByZXN1bHQpOworICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKKyAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTm9kZShlcnJvciwg
bm9kZSk7CisgICAgaWYgKGVycm9yLT5pc0VtcHR5KCkpCisgICAgICAgICpyZXN1bHQgPSBpbmpl
Y3RlZFNjcmlwdC53cmFwTm9kZShub2RlLCBvYmplY3RHcm91cCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgbG9uZyogbm9kZUlkKQpAQCAtMTIxOCwyNSArMTE5
OSwyNCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdAogICAgICAgICAqbm9kZUlkID0gcHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChub2RlKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yTm9kZUlkKGxvbmcgbm9kZUlkKQorSW5qZWN0ZWRTY3Jp
cHQgSW5zcGVjdG9yRE9NQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yTm9kZShFcnJvclN0cmluZyog
ZXJyb3IsIE5vZGUqIG5vZGUpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gMDsKLSAgICBpZiAobm9k
ZUlkKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKLSAgICAgICAg
aWYgKG5vZGUpIHsKLSAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPm93bmVy
RG9jdW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudCkKLSAgICAgICAgICAgICAgICBm
cmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAg
IGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAg
KmVycm9yID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZC4iOworICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQoKTsKKyAgICB9CiAKLSAgICBpZiAoZnJhbWUpCi0gICAgICAgIHJldHVy
biBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0
U3RhdGUoZnJhbWUpKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5vd25lckRvY3Vt
ZW50KCk7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAKLSAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQoKTsKLX0KKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3Jp
cHRTdGF0ZShmcmFtZSkpOworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsK
KyAgICAgICAgKmVycm9yID0gIk5vIEphdmFTY3JpcHQgd29ybGQgZm91bmQgZm9yIG5vZGUgd2l0
aCBnaXZlbiBpZC4iOworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKKyAgICB9CiAK
KyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBk
ZjgzNTliNzNlZTMxYjY5OWJkN2NmZGQ0OTdmODUxNjA0N2E5ZjI1Li42ODVhMTk0YjNkMjIxNjA2
OTBkZDIzNDJjNjVmM2M4ZTJkMzI0MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBOYW1lTm9kZU1hcDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRl
VGFzazsKK2NsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsK
IApAQCAtMTE2LDkgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUo
RXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCk7CiAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1blN5
bmNocm9ub3VzbHkpOwogICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoRXJyb3JTdHJpbmcqKTsKLSAg
ICB2b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXROb2RlUHJvcGVydGllcyhFcnJvclN0
cmluZyosIGxvbmcgbm9kZUlkLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBwcm9wZXJ0aWVz
QXJyYXksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXROb2Rl
UHJvdG90eXBlcyhFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KiByZXN1bHQpOworICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5v
ZGVJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KTsKICAgICB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyosIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgbG9uZyogbm9kZUlkKTsKIAogICAgIC8v
IE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KQEAgLTEz
OCw3ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgbG9uZyBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5v
ZGUqKTsKICAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChsb25nIG5vZGVJZCk7CiAg
ICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGxvbmcqIG5vZGVJZCk7Ci0gICAgbG9uZyBpbnNwZWN0ZWROb2RlKHVuc2lnbmVk
IGxvbmcgbnVtKTsKICAgICB2b2lkIGNvcHlOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQp
OwogICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqKTsKIApAQCAtMTgyLDcgKzE4
MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JOb2RlSWQobG9uZyBub2RlSWQpOworICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yTm9kZShFcnJvclN0cmluZyosIE5vZGUqKTsK
IAogICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBJ
bmplY3RlZFNjcmlwdEhvc3QqIG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpAQCAtMTk5LDcgKzE5Nyw2
IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8TWF0Y2hKb2IqPiBtX3BlbmRpbmdNYXRjaEpvYnM7CiAg
ICAgVGltZXI8SW5zcGVjdG9yRE9NQWdlbnQ+IG1fbWF0Y2hKb2JzVGltZXI7CiAgICAgSGFzaFNl
dDxSZWZQdHI8Tm9kZT4gPiBtX3NlYXJjaFJlc3VsdHM7Ci0gICAgVmVjdG9yPGxvbmc+IG1faW5z
cGVjdGVkTm9kZXM7CiAgICAgT3duUHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+IG1f
cmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDg1NzFmYzVmZmQ2ODdmMDVl
OTlkMjM2NTMyMmUxN2NkOTk0MzNkNjYuLmIyMTcyYzRmYWFjNzNhNjk0OGEzOThiZmE3NDZkNTRk
YjdkNWE1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwCkBAIC01Miw2ICs1MiwxMyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bgogICAgICAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91
cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCByZXN1bHQpOwogfQogCit2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6ZXZhbHVhdGVPbihFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJ
ZC5nZXQoKSk7CisgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAg
IGluamVjdGVkU2NyaXB0LmV2YWx1YXRlT24ob2JqZWN0SWQsIGV4cHJlc3Npb24sIHJlc3VsdCk7
Cit9CisKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRDb21wbGV0aW9ucyhFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKICAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZv
ck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oCmluZGV4IGJiNzdmMDNlZDAyMTk1YzE5OGMwMjY4ZmM4YjkzMTBmOWIzNjRh
NGQuLjc5NDUwZDRlMTIzM2Q1OWYxMjlkNDNmMmY4OGI0MzNkMTMxZWQ0MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTYwLDYg
KzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCiAgICAgdm9p
ZCBldmFsdWF0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CisgICAgdm9pZCBldmFsdWF0ZU9uKEVycm9yU3RyaW5n
KiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRD
b21wbGV0aW9ucyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgYm9vbCBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAg
ICAgdm9pZCByZWxlYXNlT2JqZWN0KEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IG9iamVjdElkKTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQsIGJvb2wgaWdub3JlSGFzT3duUHJv
cGVydHksIGJvb2wgYWJicmV2aWF0ZSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcwppbmRleCBmMDFlMTgzMjJmNmNjZWQzZTBmZWM3ZmJhNTEwMWM0OTdk
MzM4ZWIwLi43YjVmZjJmY2YyZGQwZWRhMjZmODBiNDBlYzk1NTYwNjQwYzU4MWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxp
bmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzCkBAIC00MDMsMTcgKzQwMywzNSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghbm9kZS5ub2RlTmFtZSB8fCBu
b2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJpbWciKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGZ1bmN0aW9uIHNldFRvb2x0aXAocHJvcGVydGllcykKKyAgICAgICAgZnVu
Y3Rpb24gc2V0VG9vbHRpcChyZXN1bHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghcHJv
cGVydGllcykKKyAgICAgICAgICAgIGlmICghcmVzdWx0IHx8IHJlc3VsdC50eXBlICE9PSAic3Ry
aW5nIikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0
aWVzLm9mZnNldEhlaWdodCA9PT0gcHJvcGVydGllcy5uYXR1cmFsSGVpZ2h0ICYmIHByb3BlcnRp
ZXMub2Zmc2V0V2lkdGggPT09IHByb3BlcnRpZXMubmF0dXJhbFdpZHRoKQotICAgICAgICAgICAg
ICAgIHRoaXMudG9vbHRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgw5cgJWQgcGl4ZWxz
IiwgcHJvcGVydGllcy5vZmZzZXRXaWR0aCwgcHJvcGVydGllcy5vZmZzZXRIZWlnaHQpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiJWQgw5cgJWQgcGl4ZWxzIChOYXR1cmFsOiAlZCDDlyAlZCBwaXhlbHMpIiwg
cHJvcGVydGllcy5vZmZzZXRXaWR0aCwgcHJvcGVydGllcy5vZmZzZXRIZWlnaHQsIHByb3BlcnRp
ZXMubmF0dXJhbFdpZHRoLCBwcm9wZXJ0aWVzLm5hdHVyYWxIZWlnaHQpOworICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IEpTT04ucGFyc2UocmVzdWx0
LmRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0V2lkdGggPSBwcm9wZXJ0
aWVzWzBdOworICAgICAgICAgICAgICAgIHZhciBvZmZzZXRIZWlnaHQgPSBwcm9wZXJ0aWVzWzFd
OworICAgICAgICAgICAgICAgIHZhciBuYXR1cmFsV2lkdGggPSBwcm9wZXJ0aWVzWzJdOworICAg
ICAgICAgICAgICAgIHZhciBuYXR1cmFsSGVpZ2h0ID0gcHJvcGVydGllc1szXTsKKyAgICAgICAg
ICAgICAgICBpZiAob2Zmc2V0SGVpZ2h0ID09PSBuYXR1cmFsSGVpZ2h0ICYmIG9mZnNldFdpZHRo
ID09PSBuYXR1cmFsV2lkdGgpCisgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiJWQgXHhkNyAlZCBwaXhlbHMiLCBvZmZzZXRXaWR0aCwgb2Zm
c2V0SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRo
aXMudG9vbHRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgXHhkNyAlZCBwaXhlbHMgKE5h
dHVyYWw6ICVkIFx4ZDcgJWQgcGl4ZWxzKSIsIG9mZnNldFdpZHRoLCBvZmZzZXRIZWlnaHQsIG5h
dHVyYWxXaWR0aCwgbmF0dXJhbEhlaWdodCk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHJlc29sdmVkTm9kZShvYmplY3RQYXlsb2FkKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIW9iamVjdFBheWxvYWQpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZChvYmplY3RQYXlsb2FkKTsKKyAgICAgICAgICAgIG9iamVjdC5ldmFsdWF0
ZSgicmV0dXJuICdbJyArIHRoaXMub2Zmc2V0V2lkdGggKyAnLCcgKyB0aGlzLm9mZnNldEhlaWdo
dCArICcsJyArIHRoaXMubmF0dXJhbFdpZHRoICsgJywnICsgdGhpcy5uYXR1cmFsSGVpZ2h0ICsg
J10nIiwgc2V0VG9vbHRpcC5iaW5kKHRoaXMpKTsKICAgICAgICAgfQotICAgICAgICBET01BZ2Vu
dC5nZXROb2RlUHJvcGVydGllcyhub2RlLmlkLCBbIm5hdHVyYWxIZWlnaHQiLCAibmF0dXJhbFdp
ZHRoIiwgIm9mZnNldEhlaWdodCIsICJvZmZzZXRXaWR0aCJdLCBzZXRUb29sdGlwLmJpbmQodGhp
cykpOworICAgICAgICBET01BZ2VudC5yZXNvbHZlTm9kZShub2RlLmlkLCAiIiwgcmVzb2x2ZWRO
b2RlLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICB1cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVy
dGllc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9wZXJ0aWVzU2lkZWJhclBhbmUuanMKaW5kZXggNGNjNGI2OWJiZDY5MmFiNDllNzhhOGZmNTEy
ZDA1M2M4YWJhNDkyNC4uMzdiMWRmMDBmM2EyZTFiY2JlZDY0MDZmZjRjNjA4NGU3ODA0YzE3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVz
U2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9wZXJ0aWVzU2lkZWJhclBhbmUuanMKQEAgLTQyLDE1ICs0Miw0MCBAQCBXZWJJbnNwZWN0b3Iu
UHJvcGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHByb3RvdHlwZXMpCisgICAg
ICAgIFJ1bnRpbWVBZ2VudC5yZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKDAsICJkb20tc2VsZWN0
aW9uIik7CisgICAgICAgIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUobm9k
ZSwgbm9kZVJlc29sdmVkLmJpbmQodGhpcykpOworCisgICAgICAgIGZ1bmN0aW9uIG5vZGVSZXNv
bHZlZChvYmplY3RQYXlsb2FkKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW9iamVjdFBh
eWxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdmFyIG9iamVjdCA9
IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQob2JqZWN0UGF5bG9hZCk7Cisg
ICAgICAgICAgICBvYmplY3QuZXZhbHVhdGUoInZhciBwcm90byA9IHRoaXM7IHJlc3VsdCA9IHt9
OyB2YXIgY291bnRlciA9IDE7IHdoaWxlIChwcm90bykgeyByZXN1bHRbY291bnRlcisrXSA9IHBy
b3RvOyBwcm90byA9IHByb3RvLl9fcHJvdG9fXyB9OyByZXR1cm4gcmVzdWx0OyIsIG5vZGVQcm90
b3R5cGVzUmVhZHkuYmluZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBu
b2RlUHJvdG90eXBlc1JlYWR5KG9iamVjdFBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghb2JqZWN0UGF5bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB2YXIgb2JqZWN0ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChvYmpl
Y3RQYXlsb2FkKTsKKyAgICAgICAgICAgIG9iamVjdC5nZXRPd25Qcm9wZXJ0aWVzKGZhbHNlLCBm
aWxsU2VjdGlvbi5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGZp
bGxTZWN0aW9uKHByb3RvdHlwZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcHJvdG90
eXBlcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIHZhciBib2R5ID0g
dGhpcy5ib2R5RWxlbWVudDsKICAgICAgICAgICAgIGJvZHkucmVtb3ZlQ2hpbGRyZW4oKTsKICAg
ICAgICAgICAgIHRoaXMuc2VjdGlvbnMgPSBbXTsKIAogICAgICAgICAgICAgLy8gR2V0IGFycmF5
IG9mIHByb3RvdHlwZSB1c2VyLWZyaWVuZGx5IG5hbWVzLgogICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBwcm90b3R5cGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFy
IHByb3RvdHlwZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocHJvdG90
eXBlc1tpXSk7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUludChwcm90b3R5cGVzW2ldLm5h
bWUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHZh
ciBwcm90b3R5cGUgPSBwcm90b3R5cGVzW2ldLnZhbHVlOwogICAgICAgICAgICAgICAgIHZhciB0
aXRsZSA9IHByb3RvdHlwZS5kZXNjcmlwdGlvbjsKICAgICAgICAgICAgICAgICBpZiAodGl0bGUu
bWF0Y2goL1Byb3RvdHlwZSQvKSkKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5y
ZXBsYWNlKC9Qcm90b3R5cGUkLywgIiIpOwpAQCAtNTksNyArODQsNiBAQCBXZWJJbnNwZWN0b3Iu
UHJvcGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBib2R5
LmFwcGVuZENoaWxkKHNlY3Rpb24uZWxlbWVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgRE9NQWdlbnQuZ2V0Tm9kZVByb3RvdHlwZXMobm9kZS5pZCwgY2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzCmluZGV4IDhlNzdjMjYxYzk3YzgwMjQzNTVjYjA2YTRl
MDRlNWU1MWZmMDM0YjMuLjgyZWVmOWQ0NDY0MjIzYTJkZmI2NDUwNzVkM2JkZjI5ZWVkZWM3ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2Jq
ZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2Jq
ZWN0LmpzCkBAIC01Miw3ICs1Miw3IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2
ZU5vZGUgPSBmdW5jdGlvbihub2RlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGNhbGxiYWNr
KG9iamVjdCA/IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQob2JqZWN0KSA6
IG51bGwpOwogICAgIH0KLSAgICBET01BZ2VudC5yZXNvbHZlTm9kZShub2RlLmlkLCBteWNhbGxi
YWNrKTsKKyAgICBET01BZ2VudC5yZXNvbHZlTm9kZShub2RlLmlkLCAiZG9tLXNlbGVjdGlvbiIs
IG15Y2FsbGJhY2spOwogfQogCiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2Fk
ID0gZnVuY3Rpb24ocGF5bG9hZCkKQEAgLTEzNiw2ICsxMzYsMTEgQEAgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBET01BZ2VudC5wdXNoTm9kZVRv
RnJvbnRlbmQodGhpcy5fb2JqZWN0SWQsIGNhbGxiYWNrKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY2FsbGJhY2soMCk7CisgICAgfSwKKworICAgIGV2YWx1YXRlOiBmdW5jdGlvbihleHBy
ZXNzaW9uLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZU9u
KHRoaXMuX29iamVjdElkLCBleHByZXNzaW9uLCBjYWxsYmFjayk7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="76401"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>