<?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>129054</bug_id>
          
          <creation_ts>2014-02-19 12:21:09 -0800</creation_ts>
          <short_desc>FTL should be able to convey branch weights to LLVM</short_desc>
          <delta_ts>2014-02-19 14:45:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          <blocked>112840</blocked>
    
    <blocked>129055</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982497</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 12:21:09 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982513</commentid>
    <comment_count>1</comment_count>
      <attachid>224665</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 13:05:43 -0800</bug_when>
    <thetext>Created attachment 224665
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982514</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 13:07:28 -0800</bug_when>
    <thetext>Attachment 224665 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1368:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:76:  The parameter name &quot;module&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:85:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:87:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:188:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:212:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:250:  The parameter name &quot;scale&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982515</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 13:09:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 224665 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1368:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]

You expected wrong.

&gt; ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:76:  The parameter name &quot;module&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:85:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:87:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:188:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:212:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:250:  The parameter name &quot;scale&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

Fixed.

&gt; Total errors found: 7 in 11 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982518</commentid>
    <comment_count>4</comment_count>
      <attachid>224667</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 13:23:13 -0800</bug_when>
    <thetext>Created attachment 224667
the patch

Made the termnology better (usually/rarely instead of always/never).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982519</commentid>
    <comment_count>5</comment_count>
      <attachid>224667</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-02-19 13:24:06 -0800</bug_when>
    <thetext>Comment on attachment 224667
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982520</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 13:25:28 -0800</bug_when>
    <thetext>Attachment 224667 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1368:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982545</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-19 14:25:25 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/164389</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982553</commentid>
    <comment_count>8</comment_count>
      <attachid>224667</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-19 14:45:33 -0800</bug_when>
    <thetext>Comment on attachment 224667
the patch

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

&gt; Source/JavaScriptCore/ftl/FTLWeight.h:55
&gt; +        // LLVM accepts branch 32-bit unsigned branch weights but in dumps it might

&quot;branch 32-bit unsigned branch&quot;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224665</attachid>
            <date>2014-02-19 13:05:43 -0800</date>
            <delta_ts>2014-02-19 13:23:13 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>70390</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MzgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBA
QAorMjAxNC0wMi0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBjb252ZXkgYnJhbmNoIHdlaWdodHMgdG8gTExWTQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlz
IGludHJvZHVjZXMgYSByZWFsbHkgbmljZSB3YXkgdG8gY29udmV5IGJyYW5jaCB3ZWlnaHRzIHRv
IExMVk0uIFRoZSBiYXNpYyBjbGFzcworICAgICAgICBpcyBXZWlnaHQsIHdoaWNoIGp1c3Qgd3Jh
cHMgYSBmbG9hdDsgTmFOIGlzIHVzZWQgd2hlbiB5b3UgYXJlIG5vdCBzdXJlLiBZb3UgY2FuCisg
ICAgICAgIHBhc3MgdGhpcyBhbG9uZ3NpZGUgYSBMQmFzaWNCbG9jayB0byBicmFuY2hpbmcgaW5z
dHJ1Y3Rpb25zIGxpa2UgY29uZGJyIGFuZCBzd2l0Y2guCisgICAgICAgIEJ1dCBmb3Igc2ltcGxp
Y2l0eSwgeW91IGNhbiBqdXN0IHBhc3MgYSBXZWlnaHRlZFRhcmdldCwgd2hpY2ggaXMgYSB0dXBs
ZSBvZiB0aGUKKyAgICAgICAgdHdvLiBBbmQgZm9yIGV2ZW4gZ3JlYXRlciBzaW1wbGljaXR5LCB5
b3UgY2FuIGNyZWF0ZWQgV2VpZ2h0ZWRUYXJnZXRzIGZyb20KKyAgICAgICAgTEJhc2ljQmxvY2tz
IGJ5IGRvaW5nOgorICAgICAgICAKKyAgICAgICAgICAgIGFsd2F5cyhiKSAgID0+IFdlaWdodGVk
VGFyZ2V0KGIsIFdlaWdodCgxKSkKKyAgICAgICAgICAgIG5ldmVyKGIpICAgID0+IFdlaWdodGVk
VGFyZ2V0KGIsIFdlaWdodCgwKSkKKyAgICAgICAgICAgIHVuc3VyZShiKSAgID0+IFdlaWdodGVk
VGFyZ2V0KGIsIFdlaWdodCgpKSBvciBXZWlnaHRlZFRhcmdldChiLCBXZWlnaHQoTmFOKSkKKyAg
ICAgICAgCisgICAgICAgIFRoaXMgYWxsb3dzIGZvciBjb25zdHJ1Y3RzIGxpa2U6CisgICAgICAg
IAorICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSksIGFsd2F5cyhpc0NlbGxD
YXNlKSwgbmV2ZXIoc2xvd0Nhc2UpKTsKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgaW50ZW5k
ZWQgdG8gYmUgcGVyZi1uZXV0cmFsIGZvciBub3csIGV2ZW4gdGhvdWdoIGl0IGRvZXMgZ2l2ZSBM
TFZNIHNvbWUKKyAgICAgICAgaW5mb3JtYXRpb24gdGhhdCBMTFZNIHdvdWxkIGhhdmUgcHJldmlv
dXNseSBoYWQgdG8gaW5mZXIgdXNpbmcgc29tZSBzdGF0aWMKKyAgICAgICAgaGV1cmlzdGljcy4K
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZnRsL0ZUTEFiYnJldmlhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6RlRMOjptZE5v
ZGUpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1ZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkNvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9u
VmFsdWVzLmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bG93ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZVN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2spOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZUFyaXRoTWluT3JNYXgpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUHV0
QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJyYXlQ
dXNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFycmF5UG9w
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5ld0FycmF5V2l0
aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVG9TdHJp
bmcpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVG9QcmltaXRp
dmUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU3RyaW5nQ2hh
ckF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVN0cmluZ0No
YXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTXVs
dGlHZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVOb3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU3dp
dGNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGFyZUVxT2JqZWN0
T3JPdGhlclRvT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6bm9u
U3BlY3VsYXRpdmVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
YWxsb2NhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YWxsb2Nh
dGVCYXNpY1N0b3JhZ2VBbmRHZXRFbmQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpib29saWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6ZXF1YWxO
dWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb250
aWd1b3VzUHV0QnlWYWxPdXRPZkJvdW5kcyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06OmJ1aWxkU3dpdGNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
ZG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNlbnNp
YmxlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxv
d0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDUy
VG9KU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRl
T2JqZWN0T3JPdGhlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1
bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6ZW1pdFN0b3JlQmFycmllcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmNhbGxDaGVjayk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFwcGVu
ZE9TUkV4aXQpOgorICAgICAgICAqIGZ0bC9GVExPdXRwdXQuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphcHBl
bmRUbyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpuZXdCbG9jayk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzZW5zaWJsZURvdWJsZVRvSW50KToKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmxvYWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmUpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YmFzZUluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmJyYW5jaCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjcmFzaE5vblRlcm1p
bmFsKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3dpdGNoSW5zdHJ1Y3Rp
b24pOgorICAgICAgICAqIGZ0bC9GVExTd2l0Y2hDYXNlLmg6CisgICAgICAgIChKU0M6OkZUTDo6
U3dpdGNoQ2FzZTo6U3dpdGNoQ2FzZSk6CisgICAgICAgIChKU0M6OkZUTDo6U3dpdGNoQ2FzZTo6
d2VpZ2h0KToKKyAgICAgICAgKiBmdGwvRlRMV2VpZ2h0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpGVEw6OldlaWdodDo6V2VpZ2h0KToKKyAgICAgICAgKEpTQzo6RlRMOjpXZWlnaHQ6OmlzU2V0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpXZWlnaHQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6
OkZUTDo6V2VpZ2h0Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkZUTDo6V2VpZ2h0OjpzY2FsZVRv
VG90YWwpOgorICAgICAgICAqIGZ0bC9GVExXZWlnaHRlZFRhcmdldC5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpXZWlnaHRlZFRhcmdldDo6V2VpZ2h0ZWRUYXJnZXQpOgorICAgICAgICAo
SlNDOjpGVEw6OldlaWdodGVkVGFyZ2V0Ojp0YXJnZXQpOgorICAgICAgICAoSlNDOjpGVEw6Oldl
aWdodGVkVGFyZ2V0Ojp3ZWlnaHQpOgorICAgICAgICAoSlNDOjpGVEw6OmFsd2F5cyk6CisgICAg
ICAgIChKU0M6OkZUTDo6bmV2ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OnVuc3VyZSk6CisKIDIw
MTQtMDItMTkgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAg
ICAgW1dpbl1bTExJTlRdIEluY29ycmVjdCBzdGFjayBhbGlnbm1lbnQuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY0Mzc2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDggQEAKIAkJMEYwMzMyQzAxOEFERkFFMTAwNUY5NzlBIC8qIEV4
aXRpbmdKSVRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMDMzMkJGMThBREZBRTEwMDVGOTc5QSAvKiBFeGl0aW5nSklUVHlwZS5jcHAgKi87
IH07CiAJCTBGMDMzMkMzMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzMzJDMTE4QjAx
NzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwICovOyB9OwogCQkwRjAzMzJDNDE4QjAx
NzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlk
VmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMDMzMkM2MThCNTNGQTkwMDVGOTc5QSAvKiBGVExXZWlnaHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDMzMkM1MThCNTNGQTkwMDVGOTc5
QSAvKiBGVExXZWlnaHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjAzMzJDODE4QjU0NkVDMDA1Rjk3OUEgLyogRlRMV2VpZ2h0ZWRUYXJnZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDMzMkM3
MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWlnaHRlZFRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1
QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIgLyogREZH
QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21w
aWxhdGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgz
OUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5jcHAgKi87IH07CkBAIC0xNTMyLDYgKzE1MzQsOCBAQAogCQkwRjAzMzJCRjE4
QURGQUUxMDA1Rjk3OUEgLyogRXhpdGluZ0pJVFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0pJVFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjAzMzJDMTE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0QnlJZFZhcmlhbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEg
LyogR2V0QnlJZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0
QnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwMzMyQzUxOEI1
M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBGVExXZWlnaHQuaDsgcGF0aCA9IGZ0bC9GVExXZWlnaHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdodGVkVGFy
Z2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFdlaWdodGVkVGFyZ2V0
Lmg7IHBhdGggPSBmdGwvRlRMV2VpZ2h0ZWRUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYwNUMzQjIxNjgzQ0Y4RjAwQkFGNDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhH
ZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oOyBwYXRoID0gZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwNzc2QkQxNEZGMDAyODAwMTAy
MzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpJVENvbXBpbGF0aW9uRWZmb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGggPSBsbGlu
dC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTU1LDgg
KzMxNTksNiBAQAogCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMgLyogZnRsICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkyQUM5MjJCOTE4QTE2MTgyMDAz
Q0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcCAqLywKLQkJCQkyQUM5MjJCQTE4QTE2
MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggKi8sCiAJCQkJMEZEQjJDQzcx
NzNEQTUxRTAwN0IzQzFCIC8qIEZUTEFiYnJldmlhdGVkVHlwZXMuaCAqLywKIAkJCQkwRkVBMDlG
RDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oICovLAogCQkJCTBGRUEwQTE3
MTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwICovLApAQCAtMzE3MSw2ICsz
MTczLDggQEAKIAkJCQkwRkVBMEEyMTE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVz
LmggKi8sCiAJCQkJMEZFQTBBMDAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuY3BwICov
LAogCQkJCTBGRUEwQTAxMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggKi8sCisJCQkJ
MkFDOTIyQjkxOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAgKi8s
CisJCQkJMkFDOTIyQkExOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5o
ICovLAogCQkJCTBGMjM1QkJEMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuY3Bw
ICovLAogCQkJCTBGMjM1QkJFMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCAq
LywKIAkJCQkwRjIzNUJCRjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3Bl
cmFuZC5jcHAgKi8sCkBAIC0zMjM4LDYgKzMyNDIsOCBAQAogCQkJCTBGREIyQ0M4MTczREE1MUUw
MDdCM0MxQiAvKiBGVExWYWx1ZUZyb21CbG9jay5oICovLAogCQkJCTBGNUE2MjgxMTg4Qzk4RDQw
MDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmNwcCAqLywKIAkJCQkwRjVBNjI4MjE4OEM5OEQ0MDA3
MkM5REYgLyogRlRMVmFsdWVSYW5nZS5oICovLAorCQkJCTBGMDMzMkM1MThCNTNGQTkwMDVGOTc5
QSAvKiBGVExXZWlnaHQuaCAqLywKKwkJCQkwRjAzMzJDNzE4QjU0NkVDMDA1Rjk3OUEgLyogRlRM
V2VpZ2h0ZWRUYXJnZXQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gZnRsOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTUwMzksNiArNTA0NSw3IEBACiAJCQkJQTdEODlEMDAxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY5RkI0RjUxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDMzMkM4MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWln
aHRlZFRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0NzgxNURDRTM0QjAwNkE1OTdD
IC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5
N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTU1NDAsNiArNTU0Nyw3IEBACiAJCQkJQTdBOEFGNDIxN0FEQjVG
MzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA4NjE4
OUIxQjdFMDA2MzMyMzEgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjAzMzJDNjE4QjUzRkE5MDA1Rjk3OUEgLyogRlRMV2VpZ2h0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0E4QUY0MDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVk
QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBV
bmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2NkVDNzE4MzU2
NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCShyZXZpc2lvbiAx
NjQzNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2lmIEVOQUJMRShGVExfSklUKQogCiAj
aW5jbHVkZSAiRlRMQWJicmV2aWF0ZWRUeXBlcy5oIgotI2luY2x1ZGUgIkZUTFN3aXRjaENhc2Uu
aCIKICNpbmNsdWRlICJGVExWYWx1ZUZyb21CbG9jay5oIgogI2luY2x1ZGUgIkxMVk1BUEkuaCIK
ICNpbmNsdWRlIDxjc3RyaW5nPgpAQCAtMTIwLDYgKzExOSw4IEBAIHN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgbWRLaW5kSUQoTENvbnRleHQKIHN0YXRpYyBpbmxpbmUgTFZhbHVlIG1kU3RyaW5nKExD
b250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoKSB7IHJl
dHVybiBsbHZtLT5NRFN0cmluZ0luQ29udGV4dChjb250ZXh0LCBzdHJpbmcsIGxlbmd0aCk7IH0K
IHN0YXRpYyBpbmxpbmUgTFZhbHVlIG1kU3RyaW5nKExDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNo
YXIqIHN0cmluZykgeyByZXR1cm4gbWRTdHJpbmcoY29udGV4dCwgc3RyaW5nLCBzdGQ6OnN0cmxl
bihzdHJpbmcpKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNvbnRl
eHQsIExWYWx1ZSogYXJncywgdW5zaWduZWQgbnVtQXJncykgeyByZXR1cm4gbGx2bS0+TUROb2Rl
SW5Db250ZXh0KGNvbnRleHQsIGFyZ3MsIG51bUFyZ3MpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBW
ZWN0b3JUeXBlPgorc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNvbnRleHQs
IGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyByZXR1cm4gbWROb2RlKGNvbnRleHQsIGNvbnN0
X2Nhc3Q8TFZhbHVlKj4odmVjdG9yLmJlZ2luKCkpLCB2ZWN0b3Iuc2l6ZSgpKTsgfQogc3RhdGlj
IGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIG1kTm9kZShj
b250ZXh0LCAwLCAwKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNv
bnRleHQsIExWYWx1ZSBhcmcxKSB7IHJldHVybiBtZE5vZGUoY29udGV4dCwgJmFyZzEsIDEpOyB9
CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBtZE5vZGUoTENvbnRleHQgY29udGV4dCwgTFZhbHVlIGFy
ZzEsIExWYWx1ZSBhcmcyKQpAQCAtMTI3LDYgKzEyOCwxMSBAQCBzdGF0aWMgaW5saW5lIExWYWx1
ZSBtZE5vZGUoTENvbnRleHQgY29uCiAgICAgTFZhbHVlIGFyZ3NbXSA9IHsgYXJnMSwgYXJnMiB9
OwogICAgIHJldHVybiBtZE5vZGUoY29udGV4dCwgYXJncywgMik7CiB9CitzdGF0aWMgaW5saW5l
IExWYWx1ZSBtZE5vZGUoTENvbnRleHQgY29udGV4dCwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcy
LCBMVmFsdWUgYXJnMykKK3sKKyAgICBMVmFsdWUgYXJnc1tdID0geyBhcmcxLCBhcmcyLCBhcmcz
IH07CisgICAgcmV0dXJuIG1kTm9kZShjb250ZXh0LCBhcmdzLCAzKTsKK30KIAogc3RhdGljIGlu
bGluZSB2b2lkIHNldE1ldGFkYXRhKExWYWx1ZSBpbnN0cnVjdGlvbiwgdW5zaWduZWQga2luZCwg
TFZhbHVlIG1ldGFkYXRhKSB7IGxsdm0tPlNldE1ldGFkYXRhKGluc3RydWN0aW9uLCBraW5kLCBt
ZXRhZGF0YSk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25W
YWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
bW9uVmFsdWVzLmNwcAkocmV2aXNpb24gMTY0Mzc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw4IEBA
IENvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnQKICAgICAsIGludFB0clB0
cihjb25zdEludChpbnRQdHIsIHNpemVvZih2b2lkKiksIFNpZ25FeHRlbmQpKQogICAgICwgZG91
YmxlWmVybyhjb25zdFJlYWwoZG91YmxlVHlwZSwgMCkpCiAgICAgLCByYW5nZUtpbmQobWRLaW5k
SUQoY29udGV4dCwgInJhbmdlIikpCisgICAgLCBwcm9mS2luZChtZEtpbmRJRChjb250ZXh0LCAi
cHJvZiIpKQorICAgICwgYnJhbmNoV2VpZ2h0cyhtZFN0cmluZyhjb250ZXh0LCAiYnJhbmNoX3dl
aWdodHMiKSkKICAgICAsIG5vbk5lZ2F0aXZlSW50MzIoY29uc3RJbnQoaW50MzIsIDAsIFNpZ25F
eHRlbmQpLCBjb25zdEludChpbnQzMiwgMWxsIDw8IDMxLCBTaWduRXh0ZW5kKSkKICAgICAsIG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV9tb2R1bGUoMCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAkocmV2aXNpb24gMTY0Mzc2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzYsOSArNzYsMTEgQEAgcHVibGljOgogICAgIGNvbnN0IExWYWx1ZSBkb3VibGVaZXJvOwog
ICAgIAogICAgIGNvbnN0IHVuc2lnbmVkIHJhbmdlS2luZDsKKyAgICBjb25zdCB1bnNpZ25lZCBw
cm9mS2luZDsKKyAgICBjb25zdCBMVmFsdWUgYnJhbmNoV2VpZ2h0czsKICAgICAKICAgICBjb25z
dCBWYWx1ZVJhbmdlIG5vbk5lZ2F0aXZlSW50MzI7Ci0gICAgCisKICAgICBMQ29udGV4dCBjb25z
dCBtX2NvbnRleHQ7CiAgICAgTE1vZHVsZSBtX21vZHVsZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY0
Mzc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJGVExMb3dlcmVkTm9k
ZVZhbHVlLmgiCiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgi
CisjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpA
QCAtMTM3LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
Y29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVCbG9jaykp
OwogICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBtX291dC5iZWxvdyhtX2NhbGxG
cmFtZSwgbV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0ZSh2bSgpLmFkZHJlc3NPZkZUTFN0YWNr
TGltaXQoKSkpKSwKLSAgICAgICAgICAgIHN0YWNrT3ZlcmZsb3csIGxvd0Jsb2NrKG1fZ3JhcGgu
YmxvY2soMCkpKTsKKyAgICAgICAgICAgIG5ldmVyKHN0YWNrT3ZlcmZsb3cpLCBhbHdheXMobG93
QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKHN0YWNrT3ZlcmZsb3csIG1faGFuZGxlRXhjZXB0aW9ucyk7CiAgICAgICAgIHZtQ2FsbCht
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IpLCBtX2NhbGxG
cmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBOb0V4Y2VwdGlvbnMpOwpAQCAt
NjI2LDcgKzYyNyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrPiByZXN1bHRzOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKHZhbHVlLnZhbHVlKCkpLCBub3RJ
bnRDYXNlLCBpbnRDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAg
ICAgICAgICAgICAgIGlzTm90SW50MzIodmFsdWUudmFsdWUoKSksIHVuc3VyZShub3RJbnRDYXNl
KSwgdW5zdXJlKGludENhc2UpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGludENhc2UsIG5vdEludENhc2Up
OwogICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcih1bmJveEludDMy
KHZhbHVlLnZhbHVlKCkpKSk7CkBAIC02NDEsNyArNjQzLDkgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEludENhc2UsIGRv
dWJsZUNhc2UpOwotICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsT3JNaXNj
KHZhbHVlLnZhbHVlKCkpLCBub3ROdW1iZXJDYXNlLCBkb3VibGVDYXNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICAgICAgaXNDZWxsT3JN
aXNjKHZhbHVlLnZhbHVlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKG5vdE51
bWJlckNhc2UpLCB1bnN1cmUoZG91YmxlQ2FzZSkpOwogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgbm90TnVtYmVyQ2Fz
ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihkb3Vi
bGVUb0ludDMyKHVuYm94RG91YmxlKHZhbHVlLnZhbHVlKCkpKSkpOwpAQCAtNzExLDcgKzcxNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiU3RvcmUgYmFycmllciBjb250aW51YXRpb24iKSk7CiAKICAgICAgICAg
TFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuaXNaZXJvNjQoYmFzZSksIGNvbnRpbnVhdGlvbiwgaXNOb3ROdWxsKTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KGJhc2UpLCB1bnN1cmUoY29udGlu
dWF0aW9uKSwgdW5zdXJlKGlzTm90TnVsbCkpOwogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm90TnVsbCwgY29udGludWF0aW9uKTsKICAgICAgICAgZW1p
dFN0b3JlQmFycmllcihiYXNlKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CkBAIC05MDksMTEgKzkxMywxMSBAQCBwcml2YXRlOgogICAgICAgICBMQmFz
aWNCbG9jayBzbG93Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiVG9UaGlzIHNsb3cgY2Fz
ZSIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJUb1RoaXMgY29udGludWF0aW9uIikpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQu
YnJhbmNoKGlzQ2VsbCh2YWx1ZSksIGlzQ2VsbENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSksIGFsd2F5cyhpc0NlbGxDYXNlKSwgbmV2ZXIoc2xvd0Nh
c2UpKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oaXNDZWxsQ2FzZSwgc2xvd0Nhc2UpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZhbHVlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzVHlw
ZSh2YWx1ZSwgRmluYWxPYmplY3RUeXBlKSwgY29udGludWF0aW9uLCBzbG93Q2FzZSk7CisgICAg
ICAgIG1fb3V0LmJyYW5jaChpc1R5cGUodmFsdWUsIEZpbmFsT2JqZWN0VHlwZSksIGFsd2F5cyhj
b250aW51YXRpb24pLCBuZXZlcihzbG93Q2FzZSkpOwogICAgICAgICAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIEpfSklUT3BlcmF0aW9u
X0VKIGZ1bmN0aW9uOwpAQCAtMTA3Nyw3ICsxMDgxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhN
dWwgc2xvdyBjYXNlIikpOwogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNdWwgY29udGludWF0aW9uIikpOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RaZXJv
MzIocmVzdWx0KSwgY29udGludWF0aW9uLCBzbG93Q2FzZSk7CisgICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIocmVzdWx0KSwg
YWx3YXlzKGNvbnRpbnVhdGlvbiksIG5ldmVyKHNsb3dDYXNlKSk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhz
bG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgICAgICBMVmFsdWUgY29uZCA9IG1f
b3V0LmJpdE9yKG1fb3V0Lmxlc3NUaGFuKGxlZnQsIG1fb3V0LmludDMyWmVybyksIG1fb3V0Lmxl
c3NUaGFuKHJpZ2h0LCBtX291dC5pbnQzMlplcm8pKTsKQEAgLTExMDMsNyArMTEwOCw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIkFyaXRoTXVsIHNsb3cgY2FzZSIpKTsKICAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTXVsIGNv
bnRpbnVhdGlvbiIpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQubm90WmVybzY0KHJlc3VsdCksIGNvbnRpbnVhdGlvbiwgc2xvd0Nhc2UpOwor
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQu
bm90WmVybzY0KHJlc3VsdCksIGFsd2F5cyhjb250aW51YXRpb24pLCBuZXZlcihzbG93Q2FzZSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAg
ICAgTFZhbHVlIGNvbmQgPSBtX291dC5iaXRPcihtX291dC5sZXNzVGhhbihsZWZ0LCBtX291dC5p
bnQ2NFplcm8pLCBtX291dC5sZXNzVGhhbihyaWdodCwgbV9vdXQuaW50NjRaZXJvKSk7CkBAIC0x
MTQzLDcgKzExNDksOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBMVmFs
dWUgYWRqdXN0ZWREZW5vbWluYXRvciA9IG1fb3V0LmFkZChkZW5vbWluYXRvciwgbV9vdXQuaW50
MzJPbmUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuYWJv
dmUoYWRqdXN0ZWREZW5vbWluYXRvciwgbV9vdXQuaW50MzJPbmUpLCBjb250aW51YXRpb24sIHVu
c2FmZURlbm9taW5hdG9yKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAg
ICAgICBtX291dC5hYm92ZShhZGp1c3RlZERlbm9taW5hdG9yLCBtX291dC5pbnQzMk9uZSksCisg
ICAgICAgICAgICAgICAgYWx3YXlzKGNvbnRpbnVhdGlvbiksIG5ldmVyKHVuc2FmZURlbm9taW5h
dG9yKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8odW5zYWZlRGVub21pbmF0b3IsIGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAKQEAgLTExNjMsMTQgKzExNzEsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBub3REaXZCeVplcm8gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoRGl2
IG5vdCBkaXZpZGUgYnkgemVybyIpKTsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBuZWcy
VG9UaGUzMUJ5TmVnMSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhEaXYgLTJeMzEvLTEi
KSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0
LmlzWmVybzMyKGRlbm9taW5hdG9yKSwgZGl2QnlaZXJvLCBub3REaXZCeVplcm8pOworICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuaXNaZXJv
MzIoZGVub21pbmF0b3IpLCBuZXZlcihkaXZCeVplcm8pLCBhbHdheXMobm90RGl2QnlaZXJvKSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZGl2Qnla
ZXJvLCBub3REaXZCeVplcm8pOwogICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0
LmFuY2hvcihtX291dC5pbnQzMlplcm8pKTsKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGRv
bmUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dERpdkJ5WmVybywgbmVnMlRvVGhlMzFCeU5lZzEpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5lcXVhbChudW1lcmF0b3IsIG5lZzJUb1RoZTMxKSwgbmVnMlRvVGhlMzFCeU5l
ZzEsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAg
ICAgICAgICAgICAgICBtX291dC5lcXVhbChudW1lcmF0b3IsIG5lZzJUb1RoZTMxKSwKKyAgICAg
ICAgICAgICAgICAgICAgbmV2ZXIobmVnMlRvVGhlMzFCeU5lZzEpLCBhbHdheXMoY29udGludWF0
aW9uKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
bmVnMlRvVGhlMzFCeU5lZzEsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKG5lZzJUb1RoZTMxKSk7CkBAIC0xMTgzLDcgKzExOTQsOSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHplcm9OdW1lcmF0b3IgPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoRGl2IHplcm8gbnVtZXJhdG9yIikpOwogICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIG51bWVyYXRvckNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiQXJpdGhEaXYgbnVtZXJhdG9yIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIobnVt
ZXJhdG9yKSwgemVyb051bWVyYXRvciwgbnVtZXJhdG9yQ29udGludWF0aW9uKTsKKyAgICAgICAg
ICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmlzWmVybzMy
KG51bWVyYXRvciksCisgICAgICAgICAgICAgICAgICAgIG5ldmVyKHplcm9OdW1lcmF0b3IpLCBh
bHdheXMobnVtZXJhdG9yQ29udGludWF0aW9uKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgaW5uZXJMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHplcm9O
dW1lcmF0b3IsIG51bWVyYXRvckNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgCkBAIC0x
MjM5LDcgKzEyNTIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBMVmFs
dWUgYWRqdXN0ZWREZW5vbWluYXRvciA9IG1fb3V0LmFkZChkZW5vbWluYXRvciwgbV9vdXQuaW50
MzJPbmUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuYWJv
dmUoYWRqdXN0ZWREZW5vbWluYXRvciwgbV9vdXQuaW50MzJPbmUpLCBjb250aW51YXRpb24sIHVu
c2FmZURlbm9taW5hdG9yKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAg
ICAgICBtX291dC5hYm92ZShhZGp1c3RlZERlbm9taW5hdG9yLCBtX291dC5pbnQzMk9uZSksCisg
ICAgICAgICAgICAgICAgYWx3YXlzKGNvbnRpbnVhdGlvbiksIG5ldmVyKHVuc2FmZURlbm9taW5h
dG9yKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8odW5zYWZlRGVub21pbmF0b3IsIGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAKQEAgLTEyNjEsMTQgKzEyNzYsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBub3RNb2RCeVplcm8gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTW9k
IG5vdCBtb2R1bG8gYnkgemVybyIpKTsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBuZWcy
VG9UaGUzMUJ5TmVnMSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNb2QgLTJeMzEvLTEi
KSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0
LmlzWmVybzMyKGRlbm9taW5hdG9yKSwgbW9kQnlaZXJvLCBub3RNb2RCeVplcm8pOworICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuaXNaZXJv
MzIoZGVub21pbmF0b3IpLCBuZXZlcihtb2RCeVplcm8pLCBhbHdheXMobm90TW9kQnlaZXJvKSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obW9kQnla
ZXJvLCBub3RNb2RCeVplcm8pOwogICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0
LmFuY2hvcihtX291dC5pbnQzMlplcm8pKTsKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGRv
bmUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dE1vZEJ5WmVybywgbmVnMlRvVGhlMzFCeU5lZzEpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5lcXVhbChudW1lcmF0b3IsIG5lZzJUb1RoZTMxKSwgbmVnMlRvVGhlMzFCeU5l
ZzEsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAg
ICAgICAgICAgICAgICBtX291dC5lcXVhbChudW1lcmF0b3IsIG5lZzJUb1RoZTMxKSwKKyAgICAg
ICAgICAgICAgICAgICAgbmV2ZXIobmVnMlRvVGhlMzFCeU5lZzEpLCBhbHdheXMoY29udGludWF0
aW9uKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
bmVnMlRvVGhlMzFCeU5lZzEsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmludDMyWmVybykpOwpAQCAtMTI4NSw3ICsxMzAz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmxlc3NUaGFuKG51bWVyYXRvciwgbV9v
dXQuaW50MzJaZXJvKSwKLSAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmVOdW1lcmF0b3IsIG51
bWVyYXRvckNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIHVuc3VyZShuZWdhdGl2
ZU51bWVyYXRvciksIHVuc3VyZShudW1lcmF0b3JDb250aW51YXRpb24pKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8obmVnYXRpdmVOdW1lcmF0b3IsIG51bWVyYXRvckNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICAgICAgCkBAIC0xMzQ3LDcgKzEzNjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIG1fbm9kZS0+b3AoKSA9PSBBcml0aE1pbgogICAgICAgICAgICAgICAgICAgICA/IG1fb3V0
LmRvdWJsZUxlc3NUaGFuKGxlZnQsIHJpZ2h0KQogICAgICAgICAgICAgICAgICAgICA6IG1fb3V0
LmRvdWJsZUdyZWF0ZXJUaGFuKGxlZnQsIHJpZ2h0KSwKLSAgICAgICAgICAgICAgICBjb250aW51
YXRpb24sIG5vdExlc3NUaGFuKTsKKyAgICAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9u
KSwgdW5zdXJlKG5vdExlc3NUaGFuKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90TGVzc1RoYW4sIGNvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuc2VsZWN0
KApAQCAtMTUzNSw3ICsxNTUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5leHRTdHJ1Y3R1cmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkNoZWNrU3RydWN0dXJlIG5l
eHRTdHJ1Y3R1cmUiKSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAg
ICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVNl
dCgpW2ldKSksCi0gICAgICAgICAgICAgICAgY29udGludWF0aW9uLCBuZXh0U3RydWN0dXJlKTsK
KyAgICAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5leHRTdHJ1Y3R1
cmUpKTsKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5leHRTdHJ1Y3R1cmUpOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMTU4NSw3ICsxNjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVy
ZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmUoKSkpLAotICAgICAgICAgICAgdW5leHBl
Y3RlZFN0cnVjdHVyZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIG5ldmVyKHVuZXhwZWN0
ZWRTdHJ1Y3R1cmUpLCBhbHdheXMoY29udGludWF0aW9uKSk7CiAgICAgICAgIAogICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHVuZXhwZWN0ZWRTdHJ1Y3R1cmUs
IGNvbnRpbnVhdGlvbik7CiAgICAgICAgIApAQCAtMTY2OSw3ICsxNjg3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gRlRMX05FV19CTE9DSyhtX291
dCwgKCJHZXRCeUlkIHVudHlwZWQgbm90IGNlbGwgY2FzZSIpKTsKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiR2V0QnlJZCB1bnR5
cGVkIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKGlzQ2VsbCh2YWx1ZSksIGNlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CisgICAgICAgICAgICBt
X291dC5icmFuY2goaXNDZWxsKHZhbHVlKSwgdW5zdXJlKGNlbGxDYXNlKSwgdW5zdXJlKG5vdENl
bGxDYXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8oY2VsbENhc2UsIG5vdENlbGxDYXNlKTsKICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGNlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoZ2V0QnlJZCh2YWx1ZSkpOwpA
QCAtMTc0MSw3ICsxNzU5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0
cihjZWxsLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKGZhc3RSZXN1bHQudmFsdWUoKSksIGNvbnRp
bnVhdGlvbiwgc2xvd1BhdGgpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAg
ICAgICAgIG1fb3V0Lm5vdE51bGwoZmFzdFJlc3VsdC52YWx1ZSgpKSwgYWx3YXlzKGNvbnRpbnVh
dGlvbiksIG5ldmVyKHNsb3dQYXRoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7
CiAgICAgICAgICAgICAKQEAgLTE3ODEsNyArMTgwMCw5IEBAIHByaXZhdGU6CiAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiY29udGludWF0
aW9uIGJyYW5jaCIpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBiYXNlQWRkcmVzcyA9IG1f
b3V0LmFkZFB0cihiYXNlUHRyLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpOwot
ICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwoYmFzZUFkZHJlc3MgLCBtX291dC5j
b25zdEludFB0cihXYXN0ZWZ1bFR5cGVkQXJyYXkpKSwgc2ltcGxlQ2FzZSwgd2FzdGVmdWxDYXNl
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoYmFz
ZUFkZHJlc3MgLCBtX291dC5jb25zdEludFB0cihXYXN0ZWZ1bFR5cGVkQXJyYXkpKSwKKyAgICAg
ICAgICAgIHVuc3VyZShzaW1wbGVDYXNlKSwgdW5zdXJlKHdhc3RlZnVsQ2FzZSkpOwogCiAgICAg
ICAgIC8vIGJlZ2luIHNpbXBsZSBjYXNlICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFz
dE5leHQgPSBtX291dC5hcHBlbmRUbyhzaW1wbGVDYXNlLCB3YXN0ZWZ1bENhc2UpOwpAQCAtMTg3
NSwxMyArMTg5NiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAg
ICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgaW5k
ZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3B1
YmxpY0xlbmd0aCkpLAotICAgICAgICAgICAgICAgIHNsb3dDYXNlLCBmYXN0Q2FzZSk7CisgICAg
ICAgICAgICAgICAgbmV2ZXIoc2xvd0Nhc2UpLCBhbHdheXMoZmFzdENhc2UpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhm
YXN0Q2FzZSwgc2xvd0Nhc2UpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0Lmxv
YWQ2NChiYXNlSW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fbm9kZS0+Y2hpbGQyKCkpKSk7
Ci0gICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQoZmFzdFJlc3VsdC52YWx1
ZSgpKSwgc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBtX291dC5icmFuY2go
CisgICAgICAgICAgICAgICAgbV9vdXQuaXNaZXJvNjQoZmFzdFJlc3VsdC52YWx1ZSgpKSwgbmV2
ZXIoc2xvd0Nhc2UpLCBhbHdheXMoY29udGludWF0aW9uKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKQEAgLTE5MjIsMTMg
KzE5NDQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAg
ICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBt
X291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNM
ZW5ndGgpKSwKLSAgICAgICAgICAgICAgICBzbG93Q2FzZSwgaW5Cb3VuZHMpOworICAgICAgICAg
ICAgICAgIG5ldmVyKHNsb3dDYXNlKSwgYWx3YXlzKGluQm91bmRzKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5Cb3Vu
ZHMsIGJveFBhdGgpOwogICAgICAgICAgICAgTFZhbHVlIGRvdWJsZVZhbHVlID0gbV9vdXQubG9h
ZERvdWJsZSgKICAgICAgICAgICAgICAgICBiYXNlSW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgs
IG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAg
ICAgICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKGRvdWJsZVZhbHVlLCBkb3Vi
bGVWYWx1ZSksIHNsb3dDYXNlLCBib3hQYXRoKTsKKyAgICAgICAgICAgICAgICBtX291dC5kb3Vi
bGVOb3RFcXVhbE9yVW5vcmRlcmVkKGRvdWJsZVZhbHVlLCBkb3VibGVWYWx1ZSksCisgICAgICAg
ICAgICAgICAgbmV2ZXIoc2xvd0Nhc2UpLCBhbHdheXMoYm94UGF0aCkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhib3hQYXRoLCBzbG93Q2FzZSk7CiAgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGJveERvdWJsZShk
b3VibGVWYWx1ZSkpOwpAQCAtMjE4MSw3ICsyMjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRWYWx1ZXMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5pbnQz
Mlplcm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lmxlc3NUaGFuKGludFZhbHVlLCBtX291
dC5pbnQzMlplcm8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51YXRp
b24sIGF0TGVhc3RaZXJvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShhdExlYXN0WmVybykpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3RO
ZXh0ID0gbV9vdXQuYXBwZW5kVG8oYXRMZWFzdFplcm8sIGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCkBAIC0yMjExLDEzICsyMjM0LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWVzLmFwcGVuZChtX291dC5hbmNob3Io
bV9vdXQuaW50MzJaZXJvKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVMZXNzVGhh
bk9yVW5vcmRlcmVkKGRvdWJsZVZhbHVlLCBtX291dC5kb3VibGVaZXJvKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWF0aW9uLCBhdExlYXN0WmVybyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoYXRM
ZWFzdFplcm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGF0TGVh
c3RaZXJvLCB3aXRoaW5SYW5nZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFs
dWVzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQzMigyNTUpKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5kb3VibGVHcmVhdGVyVGhhbihkb3VibGVWYWx1ZSwgbV9vdXQuY29u
c3REb3VibGUoMjU1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVh
dGlvbiwgd2l0aGluUmFuZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN1
cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHdpdGhpblJhbmdlKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
d2l0aGluUmFuZ2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50VmFsdWVzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuZnBUb0ludDMyKGRvdWJsZVZhbHVl
KSkpOwpAQCAtMjI3NCw3ICsyMjk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmFib3ZlT3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51YXRpb24sIGlzSW5Cb3VuZHMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc0luQm91bmRzKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZhbHVlVG9TdG9yZSwgcG9pbnRlciwgcmVmVHlwZSk7
CkBAIC0yMzI5LDcgKzIzNTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAogICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKICAgICAgICAgICAgICAgICAg
ICAgcHJldkxlbmd0aCwgbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3Zl
Y3Rvckxlbmd0aCkpLAotICAgICAgICAgICAgICAgIHNsb3dQYXRoLCBmYXN0UGF0aCk7CisgICAg
ICAgICAgICAgICAgbmV2ZXIoc2xvd1BhdGgpLCBhbHdheXMoZmFzdFBhdGgpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhm
YXN0UGF0aCwgc2xvd1BhdGgpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUoCkBAIC0yMzgyLDcg
KzI0MDUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBWZWN0b3I8VmFs
dWVGcm9tQmxvY2ssIDM+IHJlc3VsdHM7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkp
KSk7Ci0gICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIocHJldkxlbmd0aCks
IGNvbnRpbnVhdGlvbiwgZmFzdENhc2UpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAg
ICAgICAgICAgICAgIG1fb3V0LmlzWmVybzMyKHByZXZMZW5ndGgpLCBuZXZlcihjb250aW51YXRp
b24pLCBhbHdheXMoZmFzdENhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYXN0Q2FzZSwgc2xvd0Nhc2UpOwogICAg
ICAgICAgICAgTFZhbHVlIG5ld0xlbmd0aCA9IG1fb3V0LnN1YihwcmV2TGVuZ3RoLCBtX291dC5p
bnQzMk9uZSk7CkBAIC0yMzkzLDEyICsyNDE3LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWQ2NChwb2ludGVyKTsKICAgICAgICAgICAgICAg
ICBtX291dC5zdG9yZTY0KG1fb3V0LmludDY0WmVybywgcG9pbnRlcik7CiAgICAgICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHJlc3VsdCkpOwotICAgICAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5ub3RaZXJvNjQocmVzdWx0KSwgY29udGludWF0aW9uLCBzbG93
Q2FzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAg
ICBtX291dC5ub3RaZXJvNjQocmVzdWx0KSwgYWx3YXlzKGNvbnRpbnVhdGlvbiksIG5ldmVyKHNs
b3dDYXNlKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSBtX291dC5sb2FkRG91YmxlKHBvaW50ZXIpOwogICAgICAgICAgICAgICAgIG1fb3V0
LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUU5hTikpLCBw
b2ludGVyKTsKICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYm94
RG91YmxlKHJlc3VsdCkpKTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZG91
YmxlRXF1YWwocmVzdWx0LCByZXN1bHQpLCBjb250aW51YXRpb24sIHNsb3dDYXNlKTsKKyAgICAg
ICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJs
ZUVxdWFsKHJlc3VsdCwgcmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgYWx3YXlzKGNvbnRp
bnVhdGlvbiksIG5ldmVyKHNsb3dDYXNlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwpAQCAt
MjU4OCw3ICsyNjE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKAogICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbChwdWJsaWNMZW5n
dGgsIG1fb3V0LmNvbnN0SW50MzIoTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkpLAotICAgICAgICAg
ICAgICAgIGxhcmdlQ2FzZSwgZmFzdENhc2UpOworICAgICAgICAgICAgICAgIG5ldmVyKGxhcmdl
Q2FzZSksIGFsd2F5cyhmYXN0Q2FzZSkpOwogCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGZhc3RDYXNlLCBsYXJnZUNhc2UpOwogICAgICAgICAgICAg
CkBAIC0yNjE3LDcgKzI2NDQsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG9yaWdpbmFsSW5kZXggPSBtX291dC5hbmNob3IodmVj
dG9yTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbFBvaW50
ZXIgPSBtX291dC5hbmNob3IoYnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQubm90WmVybzMyKHZlY3Rvckxlbmd0aCksIGluaXRMb29wLCBpbml0RG9uZSk7Cisg
ICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBtX291dC5u
b3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25l
KSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5pdExh
c3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW5pdExvb3AsIGluaXREb25lKTsKICAgICAgICAgICAg
ICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgp
OwpAQCAtMjYzMCw3ICsyNjU4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMVmFsdWUg
bmV4dEluZGV4ID0gbV9vdXQuc3ViKGluZGV4LCBtX291dC5pbnQzMk9uZSk7CiAgICAgICAgICAg
ICAgICAgYWRkSW5jb21pbmcoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKICAgICAg
ICAgICAgICAgICBhZGRJbmNvbWluZyhwb2ludGVyLCBtX291dC5hbmNob3IobV9vdXQuYWRkKHBv
aW50ZXIsIG1fb3V0LmludFB0ckVpZ2h0KSkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5j
aChtX291dC5ub3RaZXJvMzIobmV4dEluZGV4KSwgaW5pdExvb3AsIGluaXREb25lKTsKKyAgICAg
ICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFpl
cm8zMihuZXh0SW5kZXgpLCB1bnN1cmUoaW5pdExvb3ApLCB1bnN1cmUoaW5pdERvbmUpKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhpbml0RG9uZSwg
aW5pdExhc3ROZXh0KTsKICAgICAgICAgICAgIH0KQEAgLTI3OTIsNyArMjgyMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzaW1wbGVSZXN1bHQgPSBtX291dC5hbmNo
b3IoY2VsbCk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgbV9v
dXQuZXF1YWwoc3RydWN0dXJlLCBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpLAotICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiwgbm90U3RyaW5nKTsKKyAg
ICAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdFN0cmluZykpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKG5vdFN0cmluZywgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvclN0cnVjdHVyZShtX25vZGUtPmNoaWxkMSgpLCBzdHJ1Y3R1cmUpOwpAQCAt
MjgyNCw3ICsyODUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpc0NlbGxQcmVkaWNh
dGUgPSBtX291dC5ib29sZWFuVHJ1ZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBpc0NlbGxQcmVkaWNhdGUgPSB0aGlzLT5pc0NlbGwodmFsdWUpOwotICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKGlzQ2VsbFByZWRpY2F0ZSwgaXNDZWxsLCBub3RTdHJpbmcpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzQ2VsbFByZWRpY2F0ZSwgdW5zdXJlKGlzQ2VsbCksIHVuc3VyZShu
b3RTdHJpbmcpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGwsIG5vdFN0cmluZyk7CiAgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBzaW1wbGVSZXN1bHQgPSBtX291dC5hbmNob3IodmFsdWUpOwpAQCAtMjgzNSw3
ICsyODY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQ
dHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgIGlzU3RyaW5nUHJlZGljYXRlID0gbV9vdXQuYm9vbGVhbkZhbHNlOwotICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nUHJlZGljYXRlLCBjb250aW51YXRpb24sIG5v
dFN0cmluZyk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNTdHJpbmdQcmVkaWNhdGUsIHVu
c3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90U3RyaW5nKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZywgY29udGludWF0aW9uKTsKICAgICAg
ICAgICAgIExWYWx1ZSBvcGVyYXRpb247CkBAIC0yODY4LDExICsyODk3LDExIEBAIHByaXZhdGU6
CiAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMz4gcmVzdWx0czsKICAgICAgICAgCiAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcih2YWx1ZSkpOwotICAgICAgICBtX291
dC5icmFuY2goaXNDZWxsKHZhbHVlKSwgaXNDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSksIHVuc3VyZShpc0NlbGxDYXNlKSwgdW5zdXJl
KGNvbnRpbnVhdGlvbikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBpc09iamVjdENhc2UpOwogICAgICAgICByZXN1
bHRzLmFwcGVuZChtX291dC5hbmNob3IodmFsdWUpKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlz
T2JqZWN0KHZhbHVlKSwgaXNPYmplY3RDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBtX291
dC5icmFuY2goaXNPYmplY3QodmFsdWUpLCB1bnN1cmUoaXNPYmplY3RDYXNlKSwgdW5zdXJlKGNv
bnRpbnVhdGlvbikpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNPYmplY3RD
YXNlLCBjb250aW51YXRpb24pOwogICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Io
dm1DYWxsKApAQCAtMjk2Myw3ICsyOTkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuYnJh
bmNoKAogICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKAogICAgICAgICAgICAgICAgIGlu
ZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShiYXNlLCBtX2hlYXBzLkpTU3RyaW5nX2xlbmd0
aCkpLAotICAgICAgICAgICAgc2xvd1BhdGgsIGZhc3RQYXRoKTsKKyAgICAgICAgICAgIG5ldmVy
KHNsb3dQYXRoKSwgYWx3YXlzKGZhc3RQYXRoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYXN0UGF0aCwgc2xvd1BhdGgpOwog
ICAgICAgICAgICAgCkBAIC0yOTc4LDcgKzMwMDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
bV9vdXQudGVzdElzWmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihzdHJpbmdJ
bXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKICAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpLAotICAgICAgICAgICAg
aXMxNkJpdCwgaXM4Qml0KTsKKyAgICAgICAgICAgIHVuc3VyZShpczE2Qml0KSwgdW5zdXJlKGlz
OEJpdCkpOwogICAgICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzOEJpdCwgaXMx
NkJpdCk7CiAgICAgICAgICAgICAKQEAgLTI5OTgsNyArMzAyNyw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgc3RvcmFnZSwgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwK
ICAgICAgICAgICAgICAgICBtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSkubV92YWx1
ZSkpLAogICAgICAgICAgICAgbV9vdXQuaW50MzIpKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0LmFib3ZlT3JFcXVhbChjaGFyMTZCaXQudmFsdWUoKSwgbV9vdXQuY29uc3RJbnQzMigweDEw
MCkpLCBiaWdDaGFyYWN0ZXIsIGJpdHNDb250aW51YXRpb24pOworICAgICAgICBtX291dC5icmFu
Y2goCisgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoY2hhcjE2Qml0LnZhbHVlKCksIG1f
b3V0LmNvbnN0SW50MzIoMHgxMDApKSwKKyAgICAgICAgICAgIG5ldmVyKGJpZ0NoYXJhY3Rlciks
IGFsd2F5cyhiaXRzQ29udGludWF0aW9uKSk7CiAgICAgICAgICAgICAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oYmlnQ2hhcmFjdGVyLCBiaXRzQ29udGludWF0aW9uKTsKICAgICAgICAgICAgIApA
QCAtMzAzMSw3ICszMDYyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBuZWdhdGl2ZUluZGV4ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJHZXRCeVZhbCBTdHJpbmcg
bmVnYXRpdmUgaW5kZXgiKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKSkpKTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9v
dXQubGVzc1RoYW4oaW5kZXgsIG1fb3V0LmludDMyWmVybyksIG5lZ2F0aXZlSW5kZXgsIGNvbnRp
bnVhdGlvbik7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAg
ICAgICBtX291dC5sZXNzVGhhbihpbmRleCwgbV9vdXQuaW50MzJaZXJvKSwKKyAgICAgICAgICAg
ICAgICAgICAgbmV2ZXIobmVnYXRpdmVJbmRleCksIGFsd2F5cyhjb250aW51YXRpb24pKTsKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obmVnYXRp
dmVJbmRleCwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIH0KQEAgLTMwNjcsNyArMzEwMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC50ZXN0SXNaZXJvMzIoCiAgICAgICAgICAg
ICAgICAgbV9vdXQubG9hZDMyKHN0cmluZ0ltcGwsIG1faGVhcHMuU3RyaW5nSW1wbF9oYXNoQW5k
RmxhZ3MpLAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6Zmxh
Z0lzOEJpdCgpKSksCi0gICAgICAgICAgICBpczE2Qml0LCBpczhCaXQpOworICAgICAgICAgICAg
dW5zdXJlKGlzMTZCaXQpLCB1bnN1cmUoaXM4Qml0KSk7CiAgICAgICAgICAgICAKICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpczhCaXQsIGlzMTZCaXQpOwog
ICAgICAgICAgICAgCkBAIC0zMTIyLDEwICszMTU1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIFZl
Y3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0
YS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEdldEJ5SWRWYXJpYW50IHZh
cmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
dmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGotLTspCi0gICAgICAgICAgICAgICAgY2Fz
ZXMuYXBwZW5kKFN3aXRjaENhc2Uod2Vha1BvaW50ZXIodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKVtq
XSksIGJsb2Nrc1tpXSkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdmFyaWFudC5z
dHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGotLTspIHsKKyAgICAgICAgICAgICAgICBjYXNlcy5hcHBl
bmQoU3dpdGNoQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIodmFyaWFudC5z
dHJ1Y3R1cmVTZXQoKVtqXSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgbV9vdXQuc3dpdGNoSW5zdHJ1Y3Rpb24obV9vdXQubG9hZFB0
cihiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLCBjYXNlcywgZXhpdCk7CisgICAgICAg
IG1fb3V0LnN3aXRjaEluc3RydWN0aW9uKAorICAgICAgICAgICAgbV9vdXQubG9hZFB0cihiYXNl
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLCBjYXNlcywgZXhpdCwgV2VpZ2h0KDApKTsKICAg
ICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7
CiAgICAgICAgIApAQCAtMzIwNiw3ICszMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0YXRlLCBtX291dC5j
b25zdEludDgoSXNJbnZhbGlkYXRlZCkpLAotICAgICAgICAgICAgY29udGludWF0aW9uLCBpc05v
dEludmFsaWRhdGVkKTsKKyAgICAgICAgICAgIGFsd2F5cyhjb250aW51YXRpb24pLCBuZXZlcihp
c05vdEludmFsaWRhdGVkKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm90SW52YWxpZGF0ZWQsIGlzQ2xlYXIpOwogCkBAIC0zMjE1
LDcgKzMyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaXNDbGVhclZhbHVlID0gbV9vdXQu
ZXF1YWwoc3RhdGUsIG1fb3V0LmNvbnN0SW50OChDbGVhcldhdGNocG9pbnQpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgaXNDbGVhclZhbHVlID0gbV9vdXQuYm9vbGVhbkZhbHNlOwotICAg
ICAgICBtX291dC5icmFuY2goaXNDbGVhclZhbHVlLCBpc0NsZWFyLCBpc1dhdGNoZWQpOworICAg
ICAgICBtX291dC5icmFuY2goaXNDbGVhclZhbHVlLCB1bnN1cmUoaXNDbGVhciksIHVuc3VyZShp
c1dhdGNoZWQpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2xlYXIsIGlz
V2F0Y2hlZCk7CiAgICAgICAgIApAQCAtMzIyNywxMyArMzI2MywxMyBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgbV9vdXQuZXF1YWwodmFs
dWUsIG1fb3V0LmxvYWQ2NChtX291dC5hYnNvbHV0ZShzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFs
dWUoKSkpKSwKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbiwgaW52YWxpZGF0ZSk7CisgICAgICAg
ICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGludmFsaWRhdGUpKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFsaWRhdGUsIGludmFsaWRhdGVGYXN0KTsKICAg
ICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm84
KG1fb3V0LmxvYWQ4KG1fb3V0LmFic29sdXRlKHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgp
KSkpLAotICAgICAgICAgICAgaW52YWxpZGF0ZVNsb3csIGludmFsaWRhdGVGYXN0KTsKKyAgICAg
ICAgICAgIG5ldmVyKGludmFsaWRhdGVTbG93KSwgYWx3YXlzKGludmFsaWRhdGVGYXN0KSk7CiAg
ICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhpbnZhbGlkYXRlRmFzdCwgaW52YWxpZGF0
ZVNsb3cpOwogICAgICAgICAKQEAgLTM0NTYsMTQgKzM0OTIsMjAgQEAgcHJpdmF0ZToKICAgICAK
ICAgICB2b2lkIGNvbXBpbGVCcmFuY2goKQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IERGRyBz
aG91bGQgYmUgYWJsZSB0byB0ZWxsIHVzIGJyYW5jaCB3ZWlnaHRzIGhlcmUuCisgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkwNTUKKyAgICAgICAg
CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIGJvb2xpZnkobV9ub2RlLT5jaGls
ZDEoKSksCi0gICAgICAgICAgICBsb3dCbG9jayhtX25vZGUtPnRha2VuQmxvY2soKSksCi0gICAg
ICAgICAgICBsb3dCbG9jayhtX25vZGUtPm5vdFRha2VuQmxvY2soKSkpOworICAgICAgICAgICAg
dW5zdXJlKGxvd0Jsb2NrKG1fbm9kZS0+dGFrZW5CbG9jaygpKSksCisgICAgICAgICAgICB1bnN1
cmUobG93QmxvY2sobV9ub2RlLT5ub3RUYWtlbkJsb2NrKCkpKSk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgY29tcGlsZVN3aXRjaCgpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogREZHIHNob3Vs
ZCBiZSBhYmxlIHRvIHRlbGwgdXMgYnJhbmNoIHdlaWdodHMgaGVyZS4KKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTA1NQorICAgICAgICAKICAg
ICAgICAgU3dpdGNoRGF0YSogZGF0YSA9IG1fbm9kZS0+c3dpdGNoRGF0YSgpOwogICAgICAgICBz
d2l0Y2ggKGRhdGEtPmtpbmQpIHsKICAgICAgICAgY2FzZSBTd2l0Y2hJbW06IHsKQEAgLTM0ODUs
NyArMzUyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNEb3Vi
bGUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hJbW0gaXMgZG91YmxlIikp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSBib3hlZFZhbHVlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2goaXNOb3RJbnQzMihib3hlZFZhbHVlKSwgaXNOb3RJbnQsIGlzSW50KTsKKyAgICAgICAgICAg
ICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihib3hlZFZhbHVlKSwgdW5zdXJlKGlzTm90SW50
KSwgdW5zdXJlKGlzSW50KSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJh
c2ljQmxvY2sgaW5uZXJMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW50LCBpc05vdEludCk7
CiAgICAgICAgICAgICAgICAgCkBAIC0zNDk0LDcgKzM1MzYsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzTm90SW50LCBpc0Rv
dWJsZSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAg
ICBpc0NlbGxPck1pc2MoYm94ZWRWYWx1ZSksIGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSwg
aXNEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBpc0NlbGxPck1pc2MoYm94ZWRWYWx1ZSks
CisgICAgICAgICAgICAgICAgICAgIGFsd2F5cyhsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaCkp
LCBuZXZlcihpc0RvdWJsZSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGlzRG91YmxlLCBpbm5lckxhc3ROZXh0KTsKICAgICAgICAgICAgICAgICBM
VmFsdWUgZG91YmxlVmFsdWUgPSB1bmJveERvdWJsZShib3hlZFZhbHVlKTsKQEAgLTM1MDIsNyAr
MzU0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaW50VmFsdWVzLmFwcGVuZChtX291
dC5hbmNob3IoaW50SW5Eb3VibGUpKTsKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCiAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKG1fb3V0LmludFRvRG91YmxlKGlu
dEluRG91YmxlKSwgZG91YmxlVmFsdWUpLAotICAgICAgICAgICAgICAgICAgICBzd2l0Y2hPbklu
dHMsIGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSk7CisgICAgICAgICAgICAgICAgICAgIHVu
c3VyZShzd2l0Y2hPbkludHMpLCB1bnN1cmUobG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gpKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CkBAIC0zNTMyLDExICszNTc1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgaXNTdHJpbmdDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTd2l0Y2gvU3dpdGNo
Q2hhciBpcyBzdHJpbmciKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBpc05vdENlbGwodW5ib3hlZFZhbHVlKSwg
bG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gpLCBpc0NlbGxDYXNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgaXNOb3RDZWxsKHVuYm94ZWRWYWx1ZSksCisgICAgICAgICAgICAgICAgICAgIHVuc3Vy
ZShsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaCkpLCB1bnN1cmUoaXNDZWxsQ2FzZSkpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgaXNTdHJpbmdDYXNlKTsKICAgICAgICAgICAgICAgICBM
VmFsdWUgY2VsbFZhbHVlID0gdW5ib3hlZFZhbHVlOwotICAgICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChpc05vdFN0cmluZyhjZWxsVmFsdWUpLCBsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaCks
IGlzU3RyaW5nQ2FzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAg
ICAgICAgICAgICBpc05vdFN0cmluZyhjZWxsVmFsdWUpLAorICAgICAgICAgICAgICAgICAgICB1
bnN1cmUobG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gpKSwgdW5zdXJlKGlzU3RyaW5nQ2FzZSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzU3Ry
aW5nQ2FzZSwgbGFzdE5leHQpOwogICAgICAgICAgICAgICAgIHN0cmluZ1ZhbHVlID0gY2VsbFZh
bHVlOwpAQCAtMzU1OSwxMyArMzYwNSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1f
b3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2
ZShzdHJpbmdWYWx1ZSwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpLAogICAgICAgICAgICAgICAg
ICAgICBtX291dC5pbnQzMk9uZSksCi0gICAgICAgICAgICAgICAgbG93QmxvY2soZGF0YS0+ZmFs
bFRocm91Z2gpLCBsZW5ndGhJczEpOworICAgICAgICAgICAgICAgIHVuc3VyZShsb3dCbG9jayhk
YXRhLT5mYWxsVGhyb3VnaCkpLCB1bnN1cmUobGVuZ3RoSXMxKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obGVuZ3RoSXMx
LCBuZWVkUmVzb2x1dGlvbik7CiAgICAgICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDI+
IHZhbHVlczsKICAgICAgICAgICAgIExWYWx1ZSBmYXN0VmFsdWUgPSBtX291dC5sb2FkUHRyKHN0
cmluZ1ZhbHVlLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKICAgICAgICAgICAgIHZhbHVlcy5h
cHBlbmQobV9vdXQuYW5jaG9yKGZhc3RWYWx1ZSkpOwotICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KG1fb3V0LmlzTnVsbChmYXN0VmFsdWUpLCBuZWVkUmVzb2x1dGlvbiwgcmVzb2x2ZWQpOworICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzTnVsbChmYXN0VmFsdWUpLCBuZXZlcihuZWVk
UmVzb2x1dGlvbiksIGFsd2F5cyhyZXNvbHZlZCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhuZWVkUmVzb2x1dGlvbiwgcmVzb2x2ZWQpOwogICAgICAgICAgICAg
dmFsdWVzLmFwcGVuZChtX291dC5hbmNob3IoCkBAIC0zNTc5LDcgKzM2MjUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hBbmRGbGFncyks
CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1wbDo6ZmxhZ0lz
OEJpdCgpKSksCi0gICAgICAgICAgICAgICAgaXM4Qml0LCBpczE2Qml0KTsKKyAgICAgICAgICAg
ICAgICB1bnN1cmUoaXM4Qml0KSwgdW5zdXJlKGlzMTZCaXQpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrLCAyPiBjaGFyYWN0ZXJzOwogICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oaXM4Qml0LCBpczE2Qml0KTsKQEAgLTM3MjcsNyArMzc3Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnROb3RDZWxsQ2FzZSA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiQ29tcGFyZUVxT2JqZWN0T3JPdGhlclRvT2JqZWN0IGxlZnQgbm90IGNl
bGwgY2FzZSIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19C
TE9DSyhtX291dCwgKCJDb21wYXJlRXFPYmplY3RPck90aGVyVG9PYmplY3QgY29udGludWF0aW9u
IikpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChsZWZ0VmFsdWUpLCBs
ZWZ0Q2VsbENhc2UsIGxlZnROb3RDZWxsQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0Nl
bGwobGVmdFZhbHVlKSwgdW5zdXJlKGxlZnRDZWxsQ2FzZSksIHVuc3VyZShsZWZ0Tm90Q2VsbENh
c2UpKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8obGVmdENlbGxDYXNlLCBsZWZ0Tm90Q2VsbENhc2UpOwogICAgICAgICBzcGVjdWxhdGVU
cnV0aHlPYmplY3QobGVmdENoaWxkLCBsZWZ0VmFsdWUsIFNwZWNPYmplY3QgfCAoflNwZWNDZWxs
KSk7CkBAIC0zNzcyLDEwICszODE4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2Nr
IHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJDb21wYXJlRXEgdW50eXBlZCBzbG93
IHBhdGgiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiQ29tcGFyZUVxIHVudHlwZWQgY29udGludWF0aW9uIikpOwogICAgICAgICAK
LSAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIobGVmdCksIHNsb3dQYXRoLCBsZWZ0SXNJ
bnQpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihsZWZ0KSwgbmV2ZXIoc2xvd1Bh
dGgpLCBhbHdheXMobGVmdElzSW50KSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGxlZnRJc0ludCwgZmFzdFBhdGgpOwotICAgICAgICBt
X291dC5icmFuY2goaXNOb3RJbnQzMihyaWdodCksIHNsb3dQYXRoLCBmYXN0UGF0aCk7CisgICAg
ICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKHJpZ2h0KSwgbmV2ZXIoc2xvd1BhdGgpLCBhbHdh
eXMoZmFzdFBhdGgpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGZhc3RQYXRo
LCBzbG93UGF0aCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoCkBAIC0zNzk4LDcgKzM4NDQsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gbV9vdXQubG9hZFB0cigKICAgICAgICAgICAgIGFsbG9jYXRvciwgbV9oZWFwcy5NYXJr
ZWRBbGxvY2F0b3JfZnJlZUxpc3RIZWFkKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LmJyYW5j
aChtX291dC5ub3ROdWxsKHJlc3VsdCksIHN1Y2Nlc3MsIHNsb3dQYXRoKTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwocmVzdWx0KSwgYWx3YXlzKHN1Y2Nlc3MpLCBuZXZlcihz
bG93UGF0aCkpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc3VjY2Vzcyk7CiAg
ICAgICAgIApAQCAtMzg0Myw3ICszODg5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHJl
bWFpbmluZyA9IG1fb3V0LmxvYWRQdHIobV9vdXQuYWJzb2x1dGUoJmFsbG9jYXRvci5tX2N1cnJl
bnRSZW1haW5pbmcpKTsKICAgICAgICAgTFZhbHVlIG5ld1JlbWFpbmluZyA9IG1fb3V0LnN1Yihy
ZW1haW5pbmcsIHNpemUpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lmxl
c3NUaGFuKG5ld1JlbWFpbmluZywgbV9vdXQuaW50UHRyWmVybyksIHNsb3dQYXRoLCBzdWNjZXNz
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQubGVzc1RoYW4obmV3
UmVtYWluaW5nLCBtX291dC5pbnRQdHJaZXJvKSwKKyAgICAgICAgICAgIG5ldmVyKHNsb3dQYXRo
KSwgYWx3YXlzKHN1Y2Nlc3MpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHN1
Y2Nlc3MpOwogICAgICAgICAKQEAgLTM5NzEsNyArNDAxOSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBmYXN0Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQm9vbGlm
eSB1bnR5cGVkIGZhc3QgY2FzZSIpKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQm9vbGlmeSB1bnR5cGVkIGNvbnRpbnVhdGlv
biIpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90Qm9vbGVh
bih2YWx1ZSksIHNsb3dDYXNlLCBmYXN0Q2FzZSk7CisgICAgICAgICAgICBtX291dC5icmFuY2go
aXNOb3RCb29sZWFuKHZhbHVlKSwgbmV2ZXIoc2xvd0Nhc2UpLCBhbHdheXMoZmFzdENhc2UpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhmYXN0Q2FzZSwgc2xvd0Nhc2UpOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
ZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcih1bmJveEJvb2xlYW4odmFsdWUpKTsKQEAgLTQwMTMs
NyArNDA2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIHByaW1pdGl2ZUNhc2Ug
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkVxdWFsTnVsbE9yVW5kZWZpbmVkIHByaW1pdGl2ZSBj
YXNlIikpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoIkVxdWFsTnVsbE9yVW5kZWZpbmVkIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAg
Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc05vdENlbGwodmFsdWUpLCBwcmltaXRpdmVDYXNlLCBj
ZWxsQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdENlbGwodmFsdWUpLCB1bnN1cmUo
cHJpbWl0aXZlQ2FzZSksIHVuc3VyZShjZWxsQ2FzZSkpOwogICAgICAgICAKICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSwgcHJpbWl0aXZlQ2Fz
ZSk7CiAgICAgICAgIApAQCAtNDA0Niw3ICs0MDk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBtX291dC50ZXN0Tm9uWmVybzgoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4
KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfdHlwZUluZm9GbGFncyksCiAgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50OChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksCi0gICAg
ICAgICAgICAgICAgbWFzcXVlcmFkZXNDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICAgICAg
ICAgIG5ldmVyKG1hc3F1ZXJhZGVzQ2FzZSksIGFsd2F5cyhjb250aW51YXRpb24pKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obWFzcXVlcmFkZXNDYXNlLCBwcmlt
aXRpdmVDYXNlKTsKICAgICAgICAgICAgIApAQCAtNDA5Nyw3ICs0MTQ1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHBlcmZvcm1TdG9yZSA9CiAgICAgICAgICAgICAgICAg
RlRMX05FV19CTE9DSyhtX291dCwgKCJQdXRCeVZhbCBwZXJmb3JtIHN0b3JlIikpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW5Cb3VuZHMsIG5vdElu
Qm91bmRzQ2FzZSwgcGVyZm9ybVN0b3JlKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05v
dEluQm91bmRzLCB1bnN1cmUobm90SW5Cb3VuZHNDYXNlKSwgdW5zdXJlKHBlcmZvcm1TdG9yZSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhub3RJbkJvdW5kc0Nhc2UsIHBlcmZvcm1TdG9yZSk7CiAgICAgICAgICAg
ICAgICAgCkBAIC00MTEyLDcgKzQxNjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGhvbGVDYXNlID0KICAgICAgICAgICAgICAgICAgICAgRlRMX05FV19CTE9DSyht
X291dCwgKCJQdXRCeVZhbCBob2xlIGNhc2UiKSk7CiAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91bmRzLCBvdXRPZkJvdW5kc0Nhc2Us
IGhvbGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNPdXRPZkJvdW5kcywg
dW5zdXJlKG91dE9mQm91bmRzQ2FzZSksIHVuc3VyZShob2xlQ2FzZSkpOwogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8ob3V0T2ZCb3VuZHNDYXNlLCBob2xlQ2FzZSk7CiAgICAgICAgICAgICAgICAg
ICAgIApAQCAtNDE0MCwxMCArNDE4OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNh
c2VzLmFwcGVuZChTd2l0Y2hDYXNlKAogICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRh
dGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAotICAgICAgICAgICAgICAg
IGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldCkpKTsKKyAgICAgICAgICAgICAgICBsb3dC
bG9jayhkYXRhLT5jYXNlc1tpXS50YXJnZXQpLCBXZWlnaHQoKSkpOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBtX291dC5zd2l0Y2hJbnN0cnVjdGlvbihzd2l0Y2hWYWx1ZSwgY2FzZXMs
IGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSk7CisgICAgICAgIG1fb3V0LnN3aXRjaEluc3Ry
dWN0aW9uKHN3aXRjaFZhbHVlLCBjYXNlcywgbG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gpLCBX
ZWlnaHQoKSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBkb3VibGVUb0ludDMyKExWYWx1ZSBk
b3VibGVWYWx1ZSwgZG91YmxlIGxvdywgZG91YmxlIGhpZ2gsIGJvb2wgaXNTaWduZWQgPSB0cnVl
KQpAQCAtNDE2MCwxMiArNDIwOCwxMiBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9v
dXQuYnJhbmNoKAogICAgICAgICAgICAgbV9vdXQuZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKGRv
dWJsZVZhbHVlLCBtX291dC5jb25zdERvdWJsZShsb3cpKSwKLSAgICAgICAgICAgIGdyZWF0RW5v
dWdoLCBzbG93UGF0aCk7CisgICAgICAgICAgICB1bnN1cmUoZ3JlYXRFbm91Z2gpLCB1bnN1cmUo
c2xvd1BhdGgpKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oZ3JlYXRFbm91Z2gsIHdpdGhpblJhbmdlKTsKICAgICAgICAgbV9vdXQuYnJh
bmNoKAogICAgICAgICAgICAgbV9vdXQuZG91YmxlTGVzc1RoYW5PckVxdWFsKGRvdWJsZVZhbHVl
LCBtX291dC5jb25zdERvdWJsZShoaWdoKSksCi0gICAgICAgICAgICB3aXRoaW5SYW5nZSwgc2xv
d1BhdGgpOworICAgICAgICAgICAgdW5zdXJlKHdpdGhpblJhbmdlKSwgdW5zdXJlKHNsb3dQYXRo
KSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyh3aXRoaW5SYW5nZSwgc2xvd1Bh
dGgpOwogICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdDsKQEAgLTQyMDIsNyArNDI1MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX291dC5zZW5zaWJsZURvdWJsZVRvSW50KGRvdWJsZVZhbHVl
KSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGZhc3RS
ZXN1bHQudmFsdWUoKSwgbV9vdXQuY29uc3RJbnQzMigweDgwMDAwMDAwKSksCi0gICAgICAgICAg
ICBzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIG5ldmVyKHNsb3dQYXRoKSwg
YWx3YXlzKGNvbnRpbnVhdGlvbikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFz
dE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKQEAgLTQ1MTAsNyArNDU1
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJEb3VibGUgdW5ib3hpbmcgZG91YmxlIGNhc2UiKSk7CiAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IkRvdWJsZSB1bmJveGluZyBjb250aW51YXRpb24iKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKGJveGVkUmVzdWx0KSwgZG91YmxlQ2FzZSwgaW50
Q2FzZSk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihib3hlZFJlc3VsdCks
IHVuc3VyZShkb3VibGVDYXNlKSwgdW5zdXJlKGludENhc2UpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpbnRDYXNlLCBk
b3VibGVDYXNlKTsKICAgICAgICAgICAgIApAQCAtNDYyMiw3ICs0NjcwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgTFZhbHVlIGludDMyVmFsdWUgPSBtX291dC5jYXN0VG9JbnQzMih2YWx1ZSk7CiAg
ICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKG1fb3V0LnNpZ25F
eHQoaW50MzJWYWx1ZSwgbV9vdXQuaW50NjQpLCB2YWx1ZSksCi0gICAgICAgICAgICBpc0ludDMy
LCBpc0RvdWJsZSk7CisgICAgICAgICAgICB1bnN1cmUoaXNJbnQzMiksIHVuc3VyZShpc0RvdWJs
ZSkpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhpc0ludDMyLCBpc0RvdWJsZSk7CiAgICAgICAgIApAQCAtNDkxMyw3ICs0OTYxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgcHJpbWl0aXZlQ2FzZSA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgic3BlY3VsYXRlT2JqZWN0T3JPdGhlciBwcmltaXRpdmUgY2FzZSIpKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJz
cGVjdWxhdGVPYmplY3RPck90aGVyIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgCi0gICAgICAg
IG1fb3V0LmJyYW5jaChpc05vdENlbGwodmFsdWUpLCBwcmltaXRpdmVDYXNlLCBjZWxsQ2FzZSk7
CisgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdENlbGwodmFsdWUpLCB1bnN1cmUocHJpbWl0aXZl
Q2FzZSksIHVuc3VyZShjZWxsQ2FzZSkpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSwgcHJpbWl0aXZlQ2FzZSk7CiAgICAg
ICAgIApAQCAtNDk3Myw3ICs1MDIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHN0cnVj
dHVyZSA9IG1fb3V0LmxvYWRQdHIobG93Q2VsbChlZGdlKSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3Ry
dWN0dXJlLCBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpLAot
ICAgICAgICAgICAgY29udGludWF0aW9uLCBub3RTdHJpbmcpOworICAgICAgICAgICAgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsKICAgICAgICAgCiAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nLCBjb250aW51YXRp
b24pOwogICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3Ry
dWN0dXJlKTsKQEAgLTUwODIsNyArNTEzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Js
b2NrIGlzQ2VsbCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RvcmUgYmFycmllciBpcyBjZWxs
IGJsb2NrIikpOwogCiAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUodmFsdWVFZGdlLm5vZGUo
KSkuY291bGRCZVR5cGUoU3BlY0NlbGwpKQotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90
Q2VsbCh2YWx1ZSksIGNvbnRpbnVhdGlvbiwgaXNDZWxsKTsKKyAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChpc05vdENlbGwodmFsdWUpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGlzQ2Vs
bCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX291dC5qdW1wKGlzQ2VsbCk7CiAKQEAg
LTUxMDcsMTMgKzUxNTUsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgYnVmZmVy
SXNGdWxsID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGJ1ZmZlciBpcyBm
dWxsIikpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBtYXJrIGJ5dGUuIAotICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuaXNaZXJvOChsb2FkTWFya0J5dGUoYmFzZSkpLCBjb250aW51YXRpb24s
IGlzTWFya2VkKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQuaXNa
ZXJvOChsb2FkTWFya0J5dGUoYmFzZSkpLCBhbHdheXMoY29udGludWF0aW9uKSwgbmV2ZXIoaXNN
YXJrZWQpKTsKIAogICAgICAgICAvLyBBcHBlbmQgdG8gdGhlIHdyaXRlIGJhcnJpZXIgYnVmZmVy
LgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTWFya2Vk
LCBidWZmZXJIYXNTcGFjZSk7CiAgICAgICAgIExWYWx1ZSBjdXJyZW50QnVmZmVySW5kZXggPSBt
X291dC5sb2FkMzIobV9vdXQuYWJzb2x1dGUoJnZtKCkuaGVhcC53cml0ZUJhcnJpZXJCdWZmZXIo
KS5tX2N1cnJlbnRJbmRleCkpOwogICAgICAgICBMVmFsdWUgYnVmZmVyQ2FwYWNpdHkgPSBtX291
dC5sb2FkMzIobV9vdXQuYWJzb2x1dGUoJnZtKCkuaGVhcC53cml0ZUJhcnJpZXJCdWZmZXIoKS5t
X2NhcGFjaXR5KSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5sZXNzVGhhbihjdXJyZW50
QnVmZmVySW5kZXgsIGJ1ZmZlckNhcGFjaXR5KSwgYnVmZmVySGFzU3BhY2UsIGJ1ZmZlcklzRnVs
bCk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0Lmxlc3NUaGFuKGN1
cnJlbnRCdWZmZXJJbmRleCwgYnVmZmVyQ2FwYWNpdHkpLAorICAgICAgICAgICAgYWx3YXlzKGJ1
ZmZlckhhc1NwYWNlKSwgbmV2ZXIoYnVmZmVySXNGdWxsKSk7CiAKICAgICAgICAgLy8gQnVmZmVy
IGhhcyBzcGFjZSwgc3RvcmUgdG8gaXQuCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1ZmZlckhh
c1NwYWNlLCBidWZmZXJJc0Z1bGwpOwpAQCAtNTE5Myw3ICs1MjQ0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82
NChtX291dC5sb2FkNjQobV9vdXQuYWJzb2x1dGUodm0oKS5hZGRyZXNzT2ZFeGNlcHRpb24oKSkp
KSwKLSAgICAgICAgICAgIG1faGFuZGxlRXhjZXB0aW9ucywgY29udGludWF0aW9uKTsKKyAgICAg
ICAgICAgIG5ldmVyKG1faGFuZGxlRXhjZXB0aW9ucyksIGFsd2F5cyhjb250aW51YXRpb24pKTsK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbik7CiAgICAgfQpA
QCAtNTIzMyw3ICs1Mjg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgZmFpbENh
c2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk9TUiBleGl0IGZhaWxDYXNlIGZvciAiLCBtX25v
ZGUpKTsKICAgICAgICAgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJPU1Ig
ZXhpdCBjb250aW51YXRpb24gZm9yICIsIG1fbm9kZSkpOwogICAgICAgICAKLSAgICAgICAgbV9v
dXQuYnJhbmNoKGZhaWxDb25kaXRpb24sIGZhaWxDYXNlLCBjb250aW51YXRpb24pOworICAgICAg
ICBtX291dC5icmFuY2goZmFpbENvbmRpdGlvbiwgbmV2ZXIoZmFpbENhc2UpLCBhbHdheXMoY29u
dGludWF0aW9uKSk7CiAgICAgICAgIAogICAgICAgICBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KGZhaWxDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE91dHB1dC5jcHAJKHJldmlzaW9uIDE2NDM3NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
MTA0IEBAIE91dHB1dDo6fk91dHB1dCgpCiAgICAgbGx2bS0+RGlzcG9zZUJ1aWxkZXIobV9idWls
ZGVyKTsKIH0KIAordm9pZCBPdXRwdXQ6OmluaXRpYWxpemUoTE1vZHVsZSBtb2R1bGUsIExWYWx1
ZSBmdW5jdGlvbiwgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgaGVhcHMpCit7CisgICAgSW50cmlu
c2ljUmVwb3NpdG9yeTo6aW5pdGlhbGl6ZShtb2R1bGUpOworICAgIG1fZnVuY3Rpb24gPSBmdW5j
dGlvbjsKKyAgICBtX2hlYXBzID0gJmhlYXBzOworfQorCitMQmFzaWNCbG9jayBPdXRwdXQ6OmFw
cGVuZFRvKExCYXNpY0Jsb2NrIGJsb2NrLCBMQmFzaWNCbG9jayBuZXh0QmxvY2spCit7CisgICAg
YXBwZW5kVG8oYmxvY2spOworICAgIHJldHVybiBpbnNlcnROZXdCbG9ja3NCZWZvcmUobmV4dEJs
b2NrKTsKK30KKwordm9pZCBPdXRwdXQ6OmFwcGVuZFRvKExCYXNpY0Jsb2NrIGJsb2NrKQorewor
ICAgIG1fYmxvY2sgPSBibG9jazsKKyAgICAKKyAgICBsbHZtLT5Qb3NpdGlvbkJ1aWxkZXJBdEVu
ZChtX2J1aWxkZXIsIGJsb2NrKTsKK30KKworTEJhc2ljQmxvY2sgT3V0cHV0OjpuZXdCbG9jayhj
b25zdCBjaGFyKiBuYW1lKQoreworICAgIGlmICghbV9uZXh0QmxvY2spCisgICAgICAgIHJldHVy
biBhcHBlbmRCYXNpY0Jsb2NrKG1fY29udGV4dCwgbV9mdW5jdGlvbiwgbmFtZSk7CisgICAgcmV0
dXJuIGluc2VydEJhc2ljQmxvY2sobV9jb250ZXh0LCBtX25leHRCbG9jaywgbmFtZSk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OnNlbnNpYmxlRG91YmxlVG9JbnQoTFZhbHVlIHZhbHVlKQoreworICAg
IFJFTEVBU0VfQVNTRVJUKGlzWDg2KCkpOworICAgIHJldHVybiBjYWxsKAorICAgICAgICB4ODZT
U0UyQ3Z0VFNEMlNJSW50cmluc2ljKCksCisgICAgICAgIGluc2VydEVsZW1lbnQoCisgICAgICAg
ICAgICBpbnNlcnRFbGVtZW50KGdldFVuZGVmKHZlY3RvclR5cGUoZG91YmxlVHlwZSwgMikpLCB2
YWx1ZSwgaW50MzJaZXJvKSwKKyAgICAgICAgICAgIGRvdWJsZVplcm8sIGludDMyT25lKSk7Cit9
CisKK0xWYWx1ZSBPdXRwdXQ6OmxvYWQoVHlwZWRQb2ludGVyIHBvaW50ZXIsIExUeXBlIHJlZlR5
cGUpCit7CisgICAgTFZhbHVlIHJlc3VsdCA9IGdldChpbnRUb1B0cihwb2ludGVyLnZhbHVlKCks
IHJlZlR5cGUpKTsKKyAgICBwb2ludGVyLmhlYXAoKS5kZWNvcmF0ZUluc3RydWN0aW9uKHJlc3Vs
dCwgKm1faGVhcHMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgT3V0cHV0OjpzdG9y
ZShMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyLCBMVHlwZSByZWZUeXBlKQorewor
ICAgIExWYWx1ZSByZXN1bHQgPSBzZXQodmFsdWUsIGludFRvUHRyKHBvaW50ZXIudmFsdWUoKSwg
cmVmVHlwZSkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1Y3Rpb24ocmVzdWx0
LCAqbV9oZWFwcyk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmJhc2VJbmRleChMVmFsdWUgYmFzZSwg
TFZhbHVlIGluZGV4LCBTY2FsZSBzY2FsZSwgcHRyZGlmZl90IG9mZnNldCkKK3sKKyAgICBMVmFs
dWUgYWNjdW11bGF0ZWRPZmZzZXQ7CisgICAgICAgIAorICAgIHN3aXRjaCAoc2NhbGUpIHsKKyAg
ICBjYXNlIFNjYWxlT25lOgorICAgICAgICBhY2N1bXVsYXRlZE9mZnNldCA9IGluZGV4OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFNjYWxlVHdvOgorICAgICAgICBhY2N1bXVsYXRlZE9mZnNl
dCA9IHNobChpbmRleCwgaW50UHRyT25lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY2Fs
ZUZvdXI6CisgICAgICAgIGFjY3VtdWxhdGVkT2Zmc2V0ID0gc2hsKGluZGV4LCBpbnRQdHJUd28p
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjYWxlRWlnaHQ6CisgICAgY2FzZSBTY2FsZVB0
cjoKKyAgICAgICAgYWNjdW11bGF0ZWRPZmZzZXQgPSBzaGwoaW5kZXgsIGludFB0clRocmVlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBpZiAob2Zmc2V0KQorICAgICAg
ICBhY2N1bXVsYXRlZE9mZnNldCA9IGFkZChhY2N1bXVsYXRlZE9mZnNldCwgY29uc3RJbnRQdHIo
b2Zmc2V0KSk7CisgICAgICAgIAorICAgIHJldHVybiBhZGQoYmFzZSwgYWNjdW11bGF0ZWRPZmZz
ZXQpOworfQorCit2b2lkIE91dHB1dDo6YnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIExCYXNpY0Js
b2NrIHRha2VuLCBXZWlnaHQgdGFrZW5XZWlnaHQsIExCYXNpY0Jsb2NrIG5vdFRha2VuLCBXZWln
aHQgbm90VGFrZW5XZWlnaHQpCit7CisgICAgTFZhbHVlIGJyYW5jaCA9IGJ1aWxkQ29uZEJyKG1f
YnVpbGRlciwgY29uZGl0aW9uLCB0YWtlbiwgbm90VGFrZW4pOworICAgIAorICAgIGlmICghdGFr
ZW5XZWlnaHQgfHwgIW5vdFRha2VuV2VpZ2h0KQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
ZG91YmxlIHRvdGFsID0gdGFrZW5XZWlnaHQudmFsdWUoKSArIG5vdFRha2VuV2VpZ2h0LnZhbHVl
KCk7CisgICAgCisgICAgc2V0TWV0YWRhdGEoCisgICAgICAgIGJyYW5jaCwgcHJvZktpbmQsCisg
ICAgICAgIG1kTm9kZSgKKyAgICAgICAgICAgIG1fY29udGV4dCwgYnJhbmNoV2VpZ2h0cywKKyAg
ICAgICAgICAgIGNvbnN0SW50MzIodGFrZW5XZWlnaHQuc2NhbGVUb1RvdGFsKHRvdGFsKSksCisg
ICAgICAgICAgICBjb25zdEludDMyKG5vdFRha2VuV2VpZ2h0LnNjYWxlVG9Ub3RhbCh0b3RhbCkp
KSk7Cit9CisKK3ZvaWQgT3V0cHV0OjpjcmFzaE5vblRlcm1pbmFsKCkKK3sKKyAgICBjYWxsKGlu
dFRvUHRyKGNvbnN0SW50UHRyKGFib3J0KSwgcG9pbnRlclR5cGUoZnVuY3Rpb25UeXBlKHZvaWRU
eXBlKSkpKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5B
QkxFKEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJl
dmlzaW9uIDE2NDM3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDEwIEBACiAjaW5jbHVkZSAiRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIkZUTENvbW1vblZhbHVlcy5oIgogI2luY2x1ZGUg
IkZUTEludHJpbnNpY1JlcG9zaXRvcnkuaCIKKyNpbmNsdWRlICJGVExTd2l0Y2hDYXNlLmgiCiAj
aW5jbHVkZSAiRlRMVHlwZWRQb2ludGVyLmgiCisjaW5jbHVkZSAiRlRMV2VpZ2h0LmgiCisjaW5j
bHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewpAQCAtNzAsMTIgKzczLDcg
QEAgcHVibGljOgogICAgIE91dHB1dChMQ29udGV4dCk7CiAgICAgfk91dHB1dCgpOwogICAgIAot
ICAgIHZvaWQgaW5pdGlhbGl6ZShMTW9kdWxlIG1vZHVsZSwgTFZhbHVlIGZ1bmN0aW9uLCBBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5JiBoZWFwcykKLSAgICB7Ci0gICAgICAgIEludHJpbnNpY1JlcG9z
aXRvcnk6OmluaXRpYWxpemUobW9kdWxlKTsKLSAgICAgICAgbV9mdW5jdGlvbiA9IGZ1bmN0aW9u
OwotICAgICAgICBtX2hlYXBzID0gJmhlYXBzOwotICAgIH0KKyAgICB2b2lkIGluaXRpYWxpemUo
TE1vZHVsZSBtb2R1bGUsIExWYWx1ZSBmdW5jdGlvbiwgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYg
aGVhcHMpOwogICAgIAogICAgIExCYXNpY0Jsb2NrIGluc2VydE5ld0Jsb2Nrc0JlZm9yZShMQmFz
aWNCbG9jayBuZXh0QmxvY2spCiAgICAgewpAQCAtODQsMjQgKzgyLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGxhc3ROZXh0QmxvY2s7CiAgICAgfQogICAgIAotICAgIExCYXNpY0Jsb2Nr
IGFwcGVuZFRvKExCYXNpY0Jsb2NrIGJsb2NrLCBMQmFzaWNCbG9jayBuZXh0QmxvY2spCi0gICAg
ewotICAgICAgICBhcHBlbmRUbyhibG9jayk7Ci0gICAgICAgIHJldHVybiBpbnNlcnROZXdCbG9j
a3NCZWZvcmUobmV4dEJsb2NrKTsKLSAgICB9CisgICAgTEJhc2ljQmxvY2sgYXBwZW5kVG8oTEJh
c2ljQmxvY2sgYmxvY2ssIExCYXNpY0Jsb2NrIG5leHRCbG9jayk7CiAgICAgCi0gICAgdm9pZCBh
cHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaykKLSAgICB7Ci0gICAgICAgIG1fYmxvY2sgPSBibG9j
azsKLSAgICAgICAgCi0gICAgICAgIGxsdm0tPlBvc2l0aW9uQnVpbGRlckF0RW5kKG1fYnVpbGRl
ciwgYmxvY2spOwotICAgIH0KLSAgICBMQmFzaWNCbG9jayBuZXdCbG9jayhjb25zdCBjaGFyKiBu
YW1lID0gIiIpCi0gICAgewotICAgICAgICBpZiAoIW1fbmV4dEJsb2NrKQotICAgICAgICAgICAg
cmV0dXJuIGFwcGVuZEJhc2ljQmxvY2sobV9jb250ZXh0LCBtX2Z1bmN0aW9uLCBuYW1lKTsKLSAg
ICAgICAgcmV0dXJuIGluc2VydEJhc2ljQmxvY2sobV9jb250ZXh0LCBtX25leHRCbG9jaywgbmFt
ZSk7Ci0gICAgfQorICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2sgYmxvY2spOworICAgIAor
ICAgIExCYXNpY0Jsb2NrIG5ld0Jsb2NrKGNvbnN0IGNoYXIqIG5hbWUgPSAiIik7CiAgICAgCiAg
ICAgTFZhbHVlIHBhcmFtKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBnZXRQYXJhbShtX2Z1bmN0
aW9uLCBpbmRleCk7IH0KICAgICBMVmFsdWUgY29uc3RCb29sKGJvb2wgdmFsdWUpIHsgcmV0dXJu
IGNvbnN0SW50KGJvb2xlYW4sIHZhbHVlKTsgfQpAQCAtMTg5LDcgKzE3NCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGNhbGwoZG91YmxlU2luSW50cmluc2ljKCksIHZhbHVlKTsKICAgICB9
CiAKLQogICAgIExWYWx1ZSBkb3VibGVDb3MoTFZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGNhbGwoZG91YmxlQ29zSW50cmluc2ljKCksIHZhbHVlKTsKQEAgLTIwMCwxNyArMTg0
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY2FsbChkb3VibGVTcXJ0SW50cmluc2ljKCks
IHZhbHVlKTsKICAgICB9CiAKLQogICAgIHN0YXRpYyBib29sIGhhc1NlbnNpYmxlRG91YmxlVG9J
bnQoKSB7IHJldHVybiBpc1g4NigpOyB9Ci0gICAgTFZhbHVlIHNlbnNpYmxlRG91YmxlVG9JbnQo
TFZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0g
ICAgICAgIHJldHVybiBjYWxsKAotICAgICAgICAgICAgeDg2U1NFMkN2dFRTRDJTSUludHJpbnNp
YygpLAotICAgICAgICAgICAgaW5zZXJ0RWxlbWVudCgKLSAgICAgICAgICAgICAgICBpbnNlcnRF
bGVtZW50KGdldFVuZGVmKHZlY3RvclR5cGUoZG91YmxlVHlwZSwgMikpLCB2YWx1ZSwgaW50MzJa
ZXJvKSwKLSAgICAgICAgICAgICAgICBkb3VibGVaZXJvLCBpbnQzMk9uZSkpOwotICAgIH0KKyAg
ICBMVmFsdWUgc2Vuc2libGVEb3VibGVUb0ludChMVmFsdWUgdmFsdWUpOwogICAgIAogICAgIExW
YWx1ZSBzaWduRXh0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRTRXh0
KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CiAgICAgTFZhbHVlIHplcm9FeHQoTFZhbHVlIHZh
bHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWlsZFpFeHQobV9idWlsZGVyLCB2YWx1ZSwgdHlw
ZSk7IH0KQEAgLTIzMywxNyArMjA4LDggQEAgcHVibGljOgogICAgIExWYWx1ZSBnZXQoTFZhbHVl
IHJlZmVyZW5jZSkgeyByZXR1cm4gYnVpbGRMb2FkKG1fYnVpbGRlciwgcmVmZXJlbmNlKTsgfQog
ICAgIExWYWx1ZSBzZXQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgcmVmZXJlbmNlKSB7IHJldHVybiBi
dWlsZFN0b3JlKG1fYnVpbGRlciwgdmFsdWUsIHJlZmVyZW5jZSk7IH0KICAgICAKLSAgICBMVmFs
dWUgbG9hZChUeXBlZFBvaW50ZXIgcG9pbnRlciwgTFR5cGUgcmVmVHlwZSkKLSAgICB7Ci0gICAg
ICAgIExWYWx1ZSByZXN1bHQgPSBnZXQoaW50VG9QdHIocG9pbnRlci52YWx1ZSgpLCByZWZUeXBl
KSk7Ci0gICAgICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1Y3Rpb24ocmVzdWx0LCAq
bV9oZWFwcyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHZvaWQgc3RvcmUo
TFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlciwgTFR5cGUgcmVmVHlwZSkKLSAgICB7
Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSBzZXQodmFsdWUsIGludFRvUHRyKHBvaW50ZXIudmFs
dWUoKSwgcmVmVHlwZSkpOwotICAgICAgICBwb2ludGVyLmhlYXAoKS5kZWNvcmF0ZUluc3RydWN0
aW9uKHJlc3VsdCwgKm1faGVhcHMpOwotICAgIH0KKyAgICBMVmFsdWUgbG9hZChUeXBlZFBvaW50
ZXIsIExUeXBlIHJlZlR5cGUpOworICAgIHZvaWQgc3RvcmUoTFZhbHVlIHZhbHVlLCBUeXBlZFBv
aW50ZXIsIExUeXBlIHJlZlR5cGUpOwogICAgIAogICAgIExWYWx1ZSBsb2FkOChUeXBlZFBvaW50
ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZChwb2ludGVyLCByZWY4KTsgfQogICAgIExWYWx1ZSBs
b2FkMTYoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmMTYp
OyB9CkBAIC0yODEsMzEgKzI0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkZHJlc3Mo
ZmllbGQsIGJhc2UsIG9mZnNldCArIGZpZWxkLm9mZnNldCgpKTsKICAgICB9CiAgICAgCi0gICAg
TFZhbHVlIGJhc2VJbmRleChMVmFsdWUgYmFzZSwgTFZhbHVlIGluZGV4LCBTY2FsZSBzY2FsZSwg
cHRyZGlmZl90IG9mZnNldCA9IDApCi0gICAgewotICAgICAgICBMVmFsdWUgYWNjdW11bGF0ZWRP
ZmZzZXQ7Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKHNjYWxlKSB7Ci0gICAgICAgIGNhc2Ug
U2NhbGVPbmU6Ci0gICAgICAgICAgICBhY2N1bXVsYXRlZE9mZnNldCA9IGluZGV4OwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2NhbGVUd286Ci0gICAgICAgICAgICBhY2N1bXVs
YXRlZE9mZnNldCA9IHNobChpbmRleCwgaW50UHRyT25lKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFNjYWxlRm91cjoKLSAgICAgICAgICAgIGFjY3VtdWxhdGVkT2Zmc2V0ID0g
c2hsKGluZGV4LCBpbnRQdHJUd28pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U2NhbGVFaWdodDoKLSAgICAgICAgY2FzZSBTY2FsZVB0cjoKLSAgICAgICAgICAgIGFjY3VtdWxh
dGVkT2Zmc2V0ID0gc2hsKGluZGV4LCBpbnRQdHJUaHJlZSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG9mZnNldCkKLSAgICAgICAgICAgIGFj
Y3VtdWxhdGVkT2Zmc2V0ID0gYWRkKGFjY3VtdWxhdGVkT2Zmc2V0LCBjb25zdEludFB0cihvZmZz
ZXQpKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBhZGQoYmFzZSwgYWNjdW11bGF0ZWRPZmZz
ZXQpOwotICAgIH0KKyAgICBMVmFsdWUgYmFzZUluZGV4KExWYWx1ZSBiYXNlLCBMVmFsdWUgaW5k
ZXgsIFNjYWxlIHNjYWxlLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCk7CisKICAgICBUeXBlZFBvaW50
ZXIgYmFzZUluZGV4KGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCwgTFZhbHVlIGJhc2UsIExWYWx1
ZSBpbmRleCwgU2NhbGUgc2NhbGUsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIFR5cGVkUG9pbnRlcihoZWFwLCBiYXNlSW5kZXgoYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpKTsKQEAgLTQxMiw5ICszNTUsMzYgQEAgcHVibGljOgogICAgIH0KICAgICAKICAg
ICB2b2lkIGp1bXAoTEJhc2ljQmxvY2sgZGVzdGluYXRpb24pIHsgYnVpbGRCcihtX2J1aWxkZXIs
IGRlc3RpbmF0aW9uKTsgfQotICAgIHZvaWQgYnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIExCYXNp
Y0Jsb2NrIHRha2VuLCBMQmFzaWNCbG9jayBub3RUYWtlbikgeyBidWlsZENvbmRCcihtX2J1aWxk
ZXIsIGNvbmRpdGlvbiwgdGFrZW4sIG5vdFRha2VuKTsgfQorICAgIHZvaWQgYnJhbmNoKExWYWx1
ZSBjb25kaXRpb24sIExCYXNpY0Jsb2NrIHRha2VuLCBXZWlnaHQgdGFrZW5XZWlnaHQsIExCYXNp
Y0Jsb2NrIG5vdFRha2VuLCBXZWlnaHQgbm90VGFrZW5XZWlnaHQpOworICAgIHZvaWQgYnJhbmNo
KExWYWx1ZSBjb25kaXRpb24sIFdlaWdodGVkVGFyZ2V0IHRha2VuLCBXZWlnaHRlZFRhcmdldCBu
b3RUYWtlbikKKyAgICB7CisgICAgICAgIGJyYW5jaChjb25kaXRpb24sIHRha2VuLnRhcmdldCgp
LCB0YWtlbi53ZWlnaHQoKSwgbm90VGFrZW4udGFyZ2V0KCksIG5vdFRha2VuLndlaWdodCgpKTsK
KyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAgICB2b2lk
IHN3aXRjaEluc3RydWN0aW9uKExWYWx1ZSB2YWx1ZSwgY29uc3QgVmVjdG9yVHlwZSYgY2FzZXMs
IExCYXNpY0Jsb2NrIGZhbGxUaHJvdWdoKSB7IGJ1aWxkU3dpdGNoKG1fYnVpbGRlciwgdmFsdWUs
IGNhc2VzLCBmYWxsVGhyb3VnaCk7IH0KKyAgICB2b2lkIHN3aXRjaEluc3RydWN0aW9uKExWYWx1
ZSB2YWx1ZSwgY29uc3QgVmVjdG9yVHlwZSYgY2FzZXMsIExCYXNpY0Jsb2NrIGZhbGxUaHJvdWdo
LCBXZWlnaHQgZmFsbFRocm91Z2hXZWlnaHQpCisgICAgeworICAgICAgICBMVmFsdWUgaW5zdCA9
IGJ1aWxkU3dpdGNoKG1fYnVpbGRlciwgdmFsdWUsIGNhc2VzLCBmYWxsVGhyb3VnaCk7CisgICAg
ICAgIAorICAgICAgICBkb3VibGUgdG90YWwgPSAwOworICAgICAgICBpZiAoIWZhbGxUaHJvdWdo
V2VpZ2h0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0b3RhbCArPSBmYWxsVGhyb3Vn
aFdlaWdodC52YWx1ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjYXNlcy5zaXplKCk7
IGktLTspIHsKKyAgICAgICAgICAgIGlmICghY2FzZXNbaV0ud2VpZ2h0KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgdG90YWwgKz0gY2FzZXNbaV0ud2VpZ2h0KCkudmFs
dWUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVmVjdG9yPExWYWx1ZT4gbWRBcmdz
OworICAgICAgICBtZEFyZ3MuYXBwZW5kKGJyYW5jaFdlaWdodHMpOworICAgICAgICBtZEFyZ3Mu
YXBwZW5kKGNvbnN0SW50MzIoZmFsbFRocm91Z2hXZWlnaHQuc2NhbGVUb1RvdGFsKHRvdGFsKSkp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FzZXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBtZEFyZ3MuYXBwZW5kKGNvbnN0SW50MzIoY2FzZXNbaV0ud2VpZ2h0KCkuc2Nh
bGVUb1RvdGFsKHRvdGFsKSkpOworICAgICAgICAKKyAgICAgICAgc2V0TWV0YWRhdGEoaW5zdCwg
cHJvZktpbmQsIG1kTm9kZShtX2NvbnRleHQsIG1kQXJncykpOworICAgIH0KKyAgICAKICAgICB2
b2lkIHJldChMVmFsdWUgdmFsdWUpIHsgYnVpbGRSZXQobV9idWlsZGVyLCB2YWx1ZSk7IH0KICAg
ICAKICAgICB2b2lkIHVucmVhY2hhYmxlKCkgeyBidWlsZFVucmVhY2hhYmxlKG1fYnVpbGRlcik7
IH0KQEAgLTQyNCwxMCArMzk0LDggQEAgcHVibGljOgogICAgICAgICBjYWxsKHRyYXBJbnRyaW5z
aWMoKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY3Jhc2hOb25UZXJtaW5hbCgpCi0gICAgewot
ICAgICAgICBjYWxsKGludFRvUHRyKGNvbnN0SW50UHRyKGFib3J0KSwgcG9pbnRlclR5cGUoZnVu
Y3Rpb25UeXBlKHZvaWRUeXBlKSkpKTsKLSAgICB9CisgICAgdm9pZCBjcmFzaE5vblRlcm1pbmFs
KCk7CisKICAgICB2b2lkIGNyYXNoKCkKICAgICB7CiAgICAgICAgIGNyYXNoTm9uVGVybWluYWwo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3dpdGNoQ2FzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3dpdGNoQ2FzZS5oCShyZXZp
c2lvbiAxNjQzNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN3aXRjaENhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjMgKzMxLDI3IEBACiAjaWYgRU5BQkxFKEZUTF9KSVQp
CiAKICNpbmNsdWRlICJGVExBYmJyZXZpYXRlZFR5cGVzLmgiCisjaW5jbHVkZSAiRlRMV2VpZ2h0
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogY2xhc3MgU3dpdGNoQ2Fz
ZSB7CiBwdWJsaWM6Ci0gICAgU3dpdGNoQ2FzZShMVmFsdWUgdmFsdWUsIExCYXNpY0Jsb2NrIHRh
cmdldCkKKyAgICBTd2l0Y2hDYXNlKExWYWx1ZSB2YWx1ZSwgTEJhc2ljQmxvY2sgdGFyZ2V0LCBX
ZWlnaHQgd2VpZ2h0KQogICAgICAgICA6IG1fdmFsdWUodmFsdWUpCiAgICAgICAgICwgbV90YXJn
ZXQodGFyZ2V0KQorICAgICAgICAsIG1fd2VpZ2h0KHdlaWdodCkKICAgICB7CiAgICAgfQogCiAg
ICAgTFZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIExCYXNpY0Js
b2NrIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CisgICAgV2VpZ2h0IHdlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fd2VpZ2h0OyB9CiAKIHByaXZhdGU6CiAgICAgTFZhbHVlIG1f
dmFsdWU7CiAgICAgTEJhc2ljQmxvY2sgbV90YXJnZXQ7CisgICAgV2VpZ2h0IG1fd2VpZ2h0Owog
fTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExXZWlnaHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFdlaWdodC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExXZWlnaHQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRlRMV2VpZ2h0X2gK
KyNkZWZpbmUgRlRMV2VpZ2h0X2gKKworI2lmIEVOQUJMRShGVExfSklUKQorCisjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKKworY2xhc3MgV2VpZ2h0IHsKK3B1YmxpYzoKKyAg
ICBXZWlnaHQoKQorICAgICAgICA6IG1fdmFsdWUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OnF1aWV0X05hTigpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgV2VpZ2h0KGZs
b2F0IHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKyAgICAK
KyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBtX3ZhbHVlOyB9Cisg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIAorICAg
IGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIAorICAgIHVuc2ln
bmVkIHNjYWxlVG9Ub3RhbChkb3VibGUgdG90YWwpIGNvbnN0CisgICAgeworICAgICAgICBkb3Vi
bGUgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3ZhbHVlKSAqIFVJTlRfTUFYIC8gdG90
YWw7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIGlmIChyZXN1bHQgPiBVSU5UX01BWCkKKyAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZXN1bHQpOworICAgIH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgZmxvYXQgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQorCisjZW5kaWYgLy8gRlRMV2Vp
Z2h0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHRlZFRhcmdl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMV2VpZ2h0ZWRU
YXJnZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMV2Vp
Z2h0ZWRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRlRMV2VpZ2h0ZWRU
YXJnZXRfaAorI2RlZmluZSBGVExXZWlnaHRlZFRhcmdldF9oCisKKyNpZiBFTkFCTEUoRlRMX0pJ
VCkKKworI2luY2x1ZGUgIkZUTEFiYnJldmlhdGVkVHlwZXMuaCIKKyNpbmNsdWRlICJGVExXZWln
aHQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitjbGFzcyBXZWlnaHRl
ZFRhcmdldCB7CitwdWJsaWM6CisgICAgV2VpZ2h0ZWRUYXJnZXQoKQorICAgICAgICA6IG1fdGFy
Z2V0KG51bGxwdHIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBXZWlnaHRlZFRhcmdldChMQmFz
aWNCbG9jayB0YXJnZXQsIFdlaWdodCB3ZWlnaHQpCisgICAgICAgIDogbV90YXJnZXQodGFyZ2V0
KQorICAgICAgICAsIG1fd2VpZ2h0KHdlaWdodCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFdl
aWdodGVkVGFyZ2V0KExCYXNpY0Jsb2NrIHRhcmdldCwgZmxvYXQgd2VpZ2h0KQorICAgICAgICA6
IG1fdGFyZ2V0KHRhcmdldCkKKyAgICAgICAgLCBtX3dlaWdodCh3ZWlnaHQpCisgICAgeworICAg
IH0KKyAgICAKKyAgICBMQmFzaWNCbG9jayB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3Rhcmdl
dDsgfQorICAgIFdlaWdodCB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3dlaWdodDsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBMQmFzaWNCbG9jayBtX3RhcmdldDsKKyAgICBXZWlnaHQgbV93ZWln
aHQ7Cit9OworCisvLyBIZWxwZXJzIGZvciBjcmVhdGluZyB3ZWlnaHRlZCB0YXJnZXRzIGZvciBz
dGF0aWNhbGx5IGtub3duIChvciB1bmtub3duKSBicmFuY2gKKy8vIHByb2ZpbGVzLiBOb3RlIHRo
YXQgdGhlc2UgYXJlIGFsbCBiYXllc2lhbiBwcm9iYWJpbGl0aWVzLiAibmV2ZXIiIGRvZXNuJ3Qg
bWVhbiBhCisvLyBwcm9vZiBhbmQgaXQgZG9lc24ndCBtZWFuICJ1bnJlYWNoYWJsZSIuCisKK2lu
bGluZSBXZWlnaHRlZFRhcmdldCBhbHdheXMoTEJhc2ljQmxvY2sgYmxvY2spCit7CisgICAgcmV0
dXJuIFdlaWdodGVkVGFyZ2V0KGJsb2NrLCAxKTsKK30KKworaW5saW5lIFdlaWdodGVkVGFyZ2V0
IG5ldmVyKExCYXNpY0Jsb2NrIGJsb2NrKQoreworICAgIHJldHVybiBXZWlnaHRlZFRhcmdldChi
bG9jaywgMCk7Cit9CisKKy8vIFRoaXMgbWVhbnMgd2UgbGV0IExMVk0gZmlndXJlIGl0IG91dCBi
YXNpYyBvbiBpdHMgc3RhdGljIGVzdGltYXRlcy4gTExWTSdzIHN0YXRpYworLy8gZXN0aW1hdGVz
IGFyZSB1c3VhbGx5IHByZXR0eSBkYXJuIGdvb2QsIHNvIHRoZXJlJ3MgZ2VuZXJhbGx5IG5vdGhp
bmcgd3Jvbmcgd2l0aAorLy8gdXNpbmcgdGhpcy4KK2lubGluZSBXZWlnaHRlZFRhcmdldCB1bnN1
cmUoTEJhc2ljQmxvY2sgYmxvY2spCit7CisgICAgcmV0dXJuIFdlaWdodGVkVGFyZ2V0KGJsb2Nr
LCBXZWlnaHQoKSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8v
IEVOQUJMRShGVExfSklUKQorCisjZW5kaWYgLy8gRlRMV2VpZ2h0ZWRUYXJnZXRfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224667</attachid>
            <date>2014-02-19 13:23:13 -0800</date>
            <delta_ts>2014-02-19 14:45:33 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>70504</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MzgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBA
QAorMjAxNC0wMi0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBjb252ZXkgYnJhbmNoIHdlaWdodHMgdG8gTExWTQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlz
IGludHJvZHVjZXMgYSByZWFsbHkgbmljZSB3YXkgdG8gY29udmV5IGJyYW5jaCB3ZWlnaHRzIHRv
IExMVk0uIFRoZSBiYXNpYyBjbGFzcworICAgICAgICBpcyBXZWlnaHQsIHdoaWNoIGp1c3Qgd3Jh
cHMgYSBmbG9hdDsgTmFOIGlzIHVzZWQgd2hlbiB5b3UgYXJlIG5vdCBzdXJlLiBZb3UgY2FuCisg
ICAgICAgIHBhc3MgdGhpcyBhbG9uZ3NpZGUgYSBMQmFzaWNCbG9jayB0byBicmFuY2hpbmcgaW5z
dHJ1Y3Rpb25zIGxpa2UgY29uZGJyIGFuZCBzd2l0Y2guCisgICAgICAgIEJ1dCBmb3Igc2ltcGxp
Y2l0eSwgeW91IGNhbiBqdXN0IHBhc3MgYSBXZWlnaHRlZFRhcmdldCwgd2hpY2ggaXMgYSB0dXBs
ZSBvZiB0aGUKKyAgICAgICAgdHdvLiBBbmQgZm9yIGV2ZW4gZ3JlYXRlciBzaW1wbGljaXR5LCB5
b3UgY2FuIGNyZWF0ZSBXZWlnaHRlZFRhcmdldHMgZnJvbQorICAgICAgICBMQmFzaWNCbG9ja3Mg
YnkgZG9pbmc6CisgICAgICAgIAorICAgICAgICAgICAgdXN1YWxseShiKSAgID0+IFdlaWdodGVk
VGFyZ2V0KGIsIFdlaWdodCgxKSkKKyAgICAgICAgICAgIHJhcmVseShiKSAgICA9PiBXZWlnaHRl
ZFRhcmdldChiLCBXZWlnaHQoMCkpCisgICAgICAgICAgICB1bnN1cmUoYikgICAgPT4gV2VpZ2h0
ZWRUYXJnZXQoYiwgV2VpZ2h0KCkpIG9yIFdlaWdodGVkVGFyZ2V0KGIsIFdlaWdodChOYU4pKQor
ICAgICAgICAKKyAgICAgICAgVGhpcyBhbGxvd3MgZm9yIGNvbnN0cnVjdHMgbGlrZToKKyAgICAg
ICAgCisgICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlKSwgdXN1YWxseShpc0Nl
bGxDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGlu
dGVuZGVkIHRvIGJlIHBlcmYtbmV1dHJhbCBmb3Igbm93LCBldmVuIHRob3VnaCBpdCBkb2VzIGdp
dmUgTExWTSBzb21lCisgICAgICAgIGluZm9ybWF0aW9uIHRoYXQgTExWTSB3b3VsZCBoYXZlIHBy
ZXZpb3VzbHkgaGFkIHRvIGluZmVyIHVzaW5nIHNvbWUgc3RhdGljCisgICAgICAgIGhldXJpc3Rp
Y3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGZ0bC9GVExBYmJyZXZpYXRpb25zLmg6CisgICAgICAgIChKU0M6OkZUTDo6
bWROb2RlKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyk6CisgICAgICAgICogZnRsL0ZUTENv
bW1vblZhbHVlcy5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVTdG9yZUJhcnJpZXJXaXRoTnVsbENoZWNrKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aE11bCk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aERpdik6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0aE1pbk9yTWF4KToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0QnlJZCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldFR5cGVk
QXJyYXlCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
cmF5UHVzaCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcnJh
eVBvcCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOZXdBcnJh
eVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVRv
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVRvUHJp
bWl0aXZlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVN0cmlu
Z0NoYXJBdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVTdHJp
bmdDaGFyQ29kZUF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZU11bHRpR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm90aWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZVN3aXRjaCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBhcmVFcU9i
amVjdE9yT3RoZXJUb09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Om5vblNwZWN1bGF0aXZlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmFsbG9jYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFs
bG9jYXRlQmFzaWNTdG9yYWdlQW5kR2V0RW5kKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Ym9vbGlmeSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmVx
dWFsTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpidWlsZFN3aXRjaCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmRvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpz
ZW5zaWJsZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpsb3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzdHJpY3RJ
bnQ1MlRvSlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1
bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpz
cGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmVtaXRTdG9yZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjYWxsQ2hlY2spOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjph
cHBlbmRPU1JFeGl0KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
YXBwZW5kVG8pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bmV3QmxvY2spOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6c2Vuc2libGVEb3VibGVUb0ludCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0Ojpsb2FkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJhc2VJbmRleCk6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y3Jhc2hOb25U
ZXJtaW5hbCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6YnJhbmNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN3aXRjaEluc3Ry
dWN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMU3dpdGNoQ2FzZS5oOgorICAgICAgICAoSlNDOjpG
VEw6OlN3aXRjaENhc2U6OlN3aXRjaENhc2UpOgorICAgICAgICAoSlNDOjpGVEw6OlN3aXRjaENh
c2U6OndlaWdodCk6CisgICAgICAgICogZnRsL0ZUTFdlaWdodC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6RlRMOjpXZWlnaHQ6OldlaWdodCk6CisgICAgICAgIChKU0M6OkZUTDo6V2VpZ2h0Ojpp
c1NldCk6CisgICAgICAgIChKU0M6OkZUTDo6V2VpZ2h0OjpvcGVyYXRvciEpOgorICAgICAgICAo
SlNDOjpGVEw6OldlaWdodDo6dmFsdWUpOgorICAgICAgICAoSlNDOjpGVEw6OldlaWdodDo6c2Nh
bGVUb1RvdGFsKToKKyAgICAgICAgKiBmdGwvRlRMV2VpZ2h0ZWRUYXJnZXQuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkZUTDo6V2VpZ2h0ZWRUYXJnZXQ6OldlaWdodGVkVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpXZWlnaHRlZFRhcmdldDo6dGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpXZWlnaHRlZFRhcmdldDo6d2VpZ2h0KToKKyAgICAgICAgKEpTQzo6RlRMOjp1c3VhbGx5KToK
KyAgICAgICAgKEpTQzo6RlRMOjpyYXJlbHkpOgorICAgICAgICAoSlNDOjpGVEw6OnVuc3VyZSk6
CisKIDIwMTQtMDItMTkgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAK
ICAgICAgICAgW1dpbl1bTExJTlRdIEluY29ycmVjdCBzdGFjayBhbGlnbm1lbnQuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY0Mzc2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDggQEAKIAkJMEYwMzMyQzAxOEFERkFFMTAwNUY5NzlB
IC8qIEV4aXRpbmdKSVRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMDMzMkJGMThBREZBRTEwMDVGOTc5QSAvKiBFeGl0aW5nSklUVHlwZS5j
cHAgKi87IH07CiAJCTBGMDMzMkMzMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzMzJD
MTE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwICovOyB9OwogCQkwRjAzMzJD
NDE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBH
ZXRCeUlkVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMDMzMkM2MThCNTNGQTkwMDVGOTc5QSAvKiBGVExXZWlnaHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDMzMkM1MThCNTNGQTkw
MDVGOTc5QSAvKiBGVExXZWlnaHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjAzMzJDODE4QjU0NkVDMDA1Rjk3OUEgLyogRlRMV2VpZ2h0ZWRU
YXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MDMzMkM3MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWlnaHRlZFRhcmdldC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDVDM0I0MTY4M0NGOTIw
MEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIg
LyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBK
SVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZm
b3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0
RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CkBAIC0xNTMyLDYgKzE1MzQsOCBAQAogCQkwRjAz
MzJCRjE4QURGQUUxMDA1Rjk3OUEgLyogRXhpdGluZ0pJVFR5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0pJVFR5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjAzMzJDMTE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlh
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0QnlJZFZhcmlh
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjAzMzJDMjE4QjAxNzYzMDA1
Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2V0QnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwMzMy
QzUxOEI1M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBGVExXZWlnaHQuaDsgcGF0aCA9IGZ0bC9GVExXZWlnaHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdo
dGVkVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFdlaWdodGVk
VGFyZ2V0Lmg7IHBhdGggPSBmdGwvRlRMV2VpZ2h0ZWRUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwNUMzQjIxNjgzQ0Y4RjAwQkFGNDVCIC8qIERGR0FycmF5aWZ5U2xv
d1BhdGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oOyBwYXRoID0gZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhH
ZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwNzc2QkQxNEZGMDAy
ODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVENvbXBpbGF0aW9uRWZmb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGgg
PSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MTU1LDggKzMxNTksNiBAQAogCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMgLyogZnRsICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkyQUM5MjJCOTE4QTE2
MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcCAqLywKLQkJCQkyQUM5MjJC
QTE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggKi8sCiAJCQkJMEZE
QjJDQzcxNzNEQTUxRTAwN0IzQzFCIC8qIEZUTEFiYnJldmlhdGVkVHlwZXMuaCAqLywKIAkJCQkw
RkVBMDlGRDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oICovLAogCQkJCTBG
RUEwQTE3MTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwICovLApAQCAtMzE3
MSw2ICszMTczLDggQEAKIAkJCQkwRkVBMEEyMTE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9u
VmFsdWVzLmggKi8sCiAJCQkJMEZFQTBBMDAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUu
Y3BwICovLAogCQkJCTBGRUEwQTAxMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggKi8s
CisJCQkJMkFDOTIyQjkxOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5j
cHAgKi8sCisJCQkJMkFDOTIyQkExOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5l
SW5mby5oICovLAogCQkJCTBGMjM1QkJEMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1l
bnQuY3BwICovLAogCQkJCTBGMjM1QkJFMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1l
bnQuaCAqLywKIAkJCQkwRjIzNUJCRjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50
Rm9yT3BlcmFuZC5jcHAgKi8sCkBAIC0zMjM4LDYgKzMyNDIsOCBAQAogCQkJCTBGREIyQ0M4MTcz
REE1MUUwMDdCM0MxQiAvKiBGVExWYWx1ZUZyb21CbG9jay5oICovLAogCQkJCTBGNUE2MjgxMTg4
Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmNwcCAqLywKIAkJCQkwRjVBNjI4MjE4OEM5
OEQ0MDA3MkM5REYgLyogRlRMVmFsdWVSYW5nZS5oICovLAorCQkJCTBGMDMzMkM1MThCNTNGQTkw
MDVGOTc5QSAvKiBGVExXZWlnaHQuaCAqLywKKwkJCQkwRjAzMzJDNzE4QjU0NkVDMDA1Rjk3OUEg
LyogRlRMV2VpZ2h0ZWRUYXJnZXQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gZnRsOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTUwMzksNiArNTA0NSw3IEBACiAJCQkJQTdEODlEMDAx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5RkI0RjUxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JW
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDMzMkM4MThCNTQ2RUMwMDVGOTc5QSAvKiBG
VExXZWlnaHRlZFRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0NzgxNURDRTM0QjAw
NkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTU1NDAsNiArNTU0Nyw3IEBACiAJCQkJQTdBOEFGNDIx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZE
MDA4NjE4OUIxQjdFMDA2MzMyMzEgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjAzMzJDNjE4QjUzRkE5MDA1Rjk3OUEgLyogRlRMV2VpZ2h0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUY0MDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhD
bGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2NkVD
NzE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCShyZXZp
c2lvbiAxNjQzNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2lmIEVOQUJMRShGVExfSklU
KQogCiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0ZWRUeXBlcy5oIgotI2luY2x1ZGUgIkZUTFN3aXRj
aENhc2UuaCIKICNpbmNsdWRlICJGVExWYWx1ZUZyb21CbG9jay5oIgogI2luY2x1ZGUgIkxMVk1B
UEkuaCIKICNpbmNsdWRlIDxjc3RyaW5nPgpAQCAtMTIwLDYgKzExOSw4IEBAIHN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbWRLaW5kSUQoTENvbnRleHQKIHN0YXRpYyBpbmxpbmUgTFZhbHVlIG1kU3Ry
aW5nKExDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3Ro
KSB7IHJldHVybiBsbHZtLT5NRFN0cmluZ0luQ29udGV4dChjb250ZXh0LCBzdHJpbmcsIGxlbmd0
aCk7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIG1kU3RyaW5nKExDb250ZXh0IGNvbnRleHQsIGNv
bnN0IGNoYXIqIHN0cmluZykgeyByZXR1cm4gbWRTdHJpbmcoY29udGV4dCwgc3RyaW5nLCBzdGQ6
OnN0cmxlbihzdHJpbmcpKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0
IGNvbnRleHQsIExWYWx1ZSogYXJncywgdW5zaWduZWQgbnVtQXJncykgeyByZXR1cm4gbGx2bS0+
TUROb2RlSW5Db250ZXh0KGNvbnRleHQsIGFyZ3MsIG51bUFyZ3MpOyB9Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBWZWN0b3JUeXBlPgorc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNv
bnRleHQsIGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyByZXR1cm4gbWROb2RlKGNvbnRleHQs
IGNvbnN0X2Nhc3Q8TFZhbHVlKj4odmVjdG9yLmJlZ2luKCkpLCB2ZWN0b3Iuc2l6ZSgpKTsgfQog
c3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIG1k
Tm9kZShjb250ZXh0LCAwLCAwKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250
ZXh0IGNvbnRleHQsIExWYWx1ZSBhcmcxKSB7IHJldHVybiBtZE5vZGUoY29udGV4dCwgJmFyZzEs
IDEpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBtZE5vZGUoTENvbnRleHQgY29udGV4dCwgTFZh
bHVlIGFyZzEsIExWYWx1ZSBhcmcyKQpAQCAtMTI3LDYgKzEyOCwxMSBAQCBzdGF0aWMgaW5saW5l
IExWYWx1ZSBtZE5vZGUoTENvbnRleHQgY29uCiAgICAgTFZhbHVlIGFyZ3NbXSA9IHsgYXJnMSwg
YXJnMiB9OwogICAgIHJldHVybiBtZE5vZGUoY29udGV4dCwgYXJncywgMik7CiB9CitzdGF0aWMg
aW5saW5lIExWYWx1ZSBtZE5vZGUoTENvbnRleHQgY29udGV4dCwgTFZhbHVlIGFyZzEsIExWYWx1
ZSBhcmcyLCBMVmFsdWUgYXJnMykKK3sKKyAgICBMVmFsdWUgYXJnc1tdID0geyBhcmcxLCBhcmcy
LCBhcmczIH07CisgICAgcmV0dXJuIG1kTm9kZShjb250ZXh0LCBhcmdzLCAzKTsKK30KIAogc3Rh
dGljIGlubGluZSB2b2lkIHNldE1ldGFkYXRhKExWYWx1ZSBpbnN0cnVjdGlvbiwgdW5zaWduZWQg
a2luZCwgTFZhbHVlIG1ldGFkYXRhKSB7IGxsdm0tPlNldE1ldGFkYXRhKGluc3RydWN0aW9uLCBr
aW5kLCBtZXRhZGF0YSk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21tb25WYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tbW9uVmFsdWVzLmNwcAkocmV2aXNpb24gMTY0Mzc2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2
Miw4IEBAIENvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnQKICAgICAsIGlu
dFB0clB0cihjb25zdEludChpbnRQdHIsIHNpemVvZih2b2lkKiksIFNpZ25FeHRlbmQpKQogICAg
ICwgZG91YmxlWmVybyhjb25zdFJlYWwoZG91YmxlVHlwZSwgMCkpCiAgICAgLCByYW5nZUtpbmQo
bWRLaW5kSUQoY29udGV4dCwgInJhbmdlIikpCisgICAgLCBwcm9mS2luZChtZEtpbmRJRChjb250
ZXh0LCAicHJvZiIpKQorICAgICwgYnJhbmNoV2VpZ2h0cyhtZFN0cmluZyhjb250ZXh0LCAiYnJh
bmNoX3dlaWdodHMiKSkKICAgICAsIG5vbk5lZ2F0aXZlSW50MzIoY29uc3RJbnQoaW50MzIsIDAs
IFNpZ25FeHRlbmQpLCBjb25zdEludChpbnQzMiwgMWxsIDw8IDMxLCBTaWduRXh0ZW5kKSkKICAg
ICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tb2R1bGUoMCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAkocmV2aXNpb24gMTY0Mzc2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzYsOSArNzYsMTEgQEAgcHVibGljOgogICAgIGNvbnN0IExWYWx1ZSBkb3VibGVa
ZXJvOwogICAgIAogICAgIGNvbnN0IHVuc2lnbmVkIHJhbmdlS2luZDsKKyAgICBjb25zdCB1bnNp
Z25lZCBwcm9mS2luZDsKKyAgICBjb25zdCBMVmFsdWUgYnJhbmNoV2VpZ2h0czsKICAgICAKICAg
ICBjb25zdCBWYWx1ZVJhbmdlIG5vbk5lZ2F0aXZlSW50MzI7Ci0gICAgCisKICAgICBMQ29udGV4
dCBjb25zdCBtX2NvbnRleHQ7CiAgICAgTE1vZHVsZSBtX21vZHVsZTsKIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNp
b24gMTY0Mzc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJGVExMb3dl
cmVkTm9kZVZhbHVlLmgiCiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRMVGh1
bmtzLmgiCisjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKICNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgpAQCAtMTM3LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVC
bG9jaykpOwogICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBtX291dC5iZWxvdyht
X2NhbGxGcmFtZSwgbV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0ZSh2bSgpLmFkZHJlc3NPZkZU
TFN0YWNrTGltaXQoKSkpKSwKLSAgICAgICAgICAgIHN0YWNrT3ZlcmZsb3csIGxvd0Jsb2NrKG1f
Z3JhcGguYmxvY2soMCkpKTsKKyAgICAgICAgICAgIHJhcmVseShzdGFja092ZXJmbG93KSwgdXN1
YWxseShsb3dCbG9jayhtX2dyYXBoLmJsb2NrKDApKSkpOwogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oc3RhY2tPdmVyZmxvdywgbV9oYW5kbGVFeGNlcHRpb25zKTsKICAgICAgICAg
dm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciks
IG1fY2FsbEZyYW1lLCBtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIE5vRXhjZXB0aW9u
cyk7CkBAIC02MjYsNyArNjI3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2s+IHJlc3VsdHM7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIodmFsdWUudmFsdWUo
KSksIG5vdEludENhc2UsIGludENhc2UpOworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgK
KyAgICAgICAgICAgICAgICAgICAgaXNOb3RJbnQzMih2YWx1ZS52YWx1ZSgpKSwgdW5zdXJlKG5v
dEludENhc2UpLCB1bnN1cmUoaW50Q2FzZSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgbm90
SW50Q2FzZSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHVu
Ym94SW50MzIodmFsdWUudmFsdWUoKSkpKTsKQEAgLTY0MSw3ICs2NDMsOSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90SW50
Q2FzZSwgZG91YmxlQ2FzZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0Nl
bGxPck1pc2ModmFsdWUudmFsdWUoKSksIG5vdE51bWJlckNhc2UsIGRvdWJsZUNhc2UpOworICAg
ICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgICAgICBp
c0NlbGxPck1pc2ModmFsdWUudmFsdWUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICB1bnN1
cmUobm90TnVtYmVyQ2FzZSksIHVuc3VyZShkb3VibGVDYXNlKSk7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVDYXNlLCBub3RO
dW1iZXJDYXNlKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5j
aG9yKGRvdWJsZVRvSW50MzIodW5ib3hEb3VibGUodmFsdWUudmFsdWUoKSkpKSk7CkBAIC03MTEs
NyArNzE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGNvbnRpbnVhdGlvbiIpKTsKIAog
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChiYXNlKSwgY29udGludWF0aW9uLCBpc05v
dE51bGwpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQoYmFzZSksIHVuc3Vy
ZShjb250aW51YXRpb24pLCB1bnN1cmUoaXNOb3ROdWxsKSk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNOb3ROdWxsLCBjb250aW51YXRpb24pOwogICAg
ICAgICBlbWl0U3RvcmVCYXJyaWVyKGJhc2UpOwogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTkwOSwxMSArOTEzLDExIEBAIHByaXZhdGU6CiAgICAg
ICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJUb1RoaXMg
c2xvdyBjYXNlIikpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoIlRvVGhpcyBjb250aW51YXRpb24iKSk7CiAgICAgICAgIAotICAgICAg
ICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlKSwgaXNDZWxsQ2FzZSwgc2xvd0Nhc2UpOworICAg
ICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlKSwgdXN1YWxseShpc0NlbGxDYXNlKSwgcmFy
ZWx5KHNsb3dDYXNlKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIHNsb3dDYXNlKTsKICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2YWx1ZSk7Ci0gICAgICAgIG1fb3V0LmJy
YW5jaChpc1R5cGUodmFsdWUsIEZpbmFsT2JqZWN0VHlwZSksIGNvbnRpbnVhdGlvbiwgc2xvd0Nh
c2UpOworICAgICAgICBtX291dC5icmFuY2goaXNUeXBlKHZhbHVlLCBGaW5hbE9iamVjdFR5cGUp
LCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwogICAgICAgICAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIEpf
SklUT3BlcmF0aW9uX0VKIGZ1bmN0aW9uOwpAQCAtMTA3Nyw3ICsxMDgxLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgiQXJpdGhNdWwgc2xvdyBjYXNlIikpOwogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNdWwgY29udGludWF0
aW9uIikpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCht
X291dC5ub3RaZXJvMzIocmVzdWx0KSwgY29udGludWF0aW9uLCBzbG93Q2FzZSk7CisgICAgICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJv
MzIocmVzdWx0KSwgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgICAgIExW
YWx1ZSBjb25kID0gbV9vdXQuYml0T3IobV9vdXQubGVzc1RoYW4obGVmdCwgbV9vdXQuaW50MzJa
ZXJvKSwgbV9vdXQubGVzc1RoYW4ocmlnaHQsIG1fb3V0LmludDMyWmVybykpOwpAQCAtMTEwMyw3
ICsxMTA4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2Fz
ZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNdWwgc2xvdyBjYXNlIikpOwogICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiQXJpdGhNdWwgY29udGludWF0aW9uIikpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RaZXJvNjQocmVzdWx0KSwgY29udGludWF0aW9u
LCBzbG93Q2FzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5ub3RaZXJvNjQocmVzdWx0KSwgdXN1YWxseShjb250aW51YXRpb24pLCBy
YXJlbHkoc2xvd0Nhc2UpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OwogICAgICAgICAgICAgICAgIExWYWx1ZSBjb25kID0gbV9vdXQuYml0T3IobV9vdXQubGVzc1Ro
YW4obGVmdCwgbV9vdXQuaW50NjRaZXJvKSwgbV9vdXQubGVzc1RoYW4ocmlnaHQsIG1fb3V0Lmlu
dDY0WmVybykpOwpAQCAtMTE0Myw3ICsxMTQ5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgTFZhbHVlIGFkanVzdGVkRGVub21pbmF0b3IgPSBtX291dC5hZGQoZGVub21p
bmF0b3IsIG1fb3V0LmludDMyT25lKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKG1fb3V0LmFib3ZlKGFkanVzdGVkRGVub21pbmF0b3IsIG1fb3V0LmludDMyT25lKSwg
Y29udGludWF0aW9uLCB1bnNhZmVEZW5vbWluYXRvcik7CisgICAgICAgICAgICBtX291dC5icmFu
Y2goCisgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmUoYWRqdXN0ZWREZW5vbWluYXRvciwgbV9v
dXQuaW50MzJPbmUpLAorICAgICAgICAgICAgICAgIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFy
ZWx5KHVuc2FmZURlbm9taW5hdG9yKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8odW5zYWZlRGVub21pbmF0b3IsIGNvbnRp
bnVhdGlvbik7CiAgICAgICAgICAgICAKQEAgLTExNjMsMTQgKzExNzEsMTcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3REaXZCeVplcm8gPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoIkFyaXRoRGl2IG5vdCBkaXZpZGUgYnkgemVybyIpKTsKICAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBuZWcyVG9UaGUzMUJ5TmVnMSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgi
QXJpdGhEaXYgLTJeMzEvLTEiKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
bV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzMyKGRlbm9taW5hdG9yKSwgZGl2QnlaZXJvLCBub3RE
aXZCeVplcm8pOworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuaXNaZXJvMzIoZGVub21pbmF0b3IpLCByYXJlbHkoZGl2QnlaZXJvKSwgdXN1
YWxseShub3REaXZCeVplcm8pKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhkaXZCeVplcm8sIG5vdERpdkJ5WmVybyk7CiAgICAgICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmludDMyWmVybykpOwogICAgICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoZG9uZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obm90RGl2QnlaZXJvLCBuZWcyVG9UaGUzMUJ5TmVnMSk7Ci0gICAg
ICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG51bWVyYXRvciwgbmVnMlRvVGhl
MzEpLCBuZWcyVG9UaGUzMUJ5TmVnMSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICBt
X291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKG51bWVyYXRvciwg
bmVnMlRvVGhlMzEpLAorICAgICAgICAgICAgICAgICAgICByYXJlbHkobmVnMlRvVGhlMzFCeU5l
ZzEpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG5lZzJUb1RoZTMxQnlOZWcxLCBjb250aW51YXRpb24pOwog
ICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihuZWcyVG9UaGUzMSkp
OwpAQCAtMTE4Myw3ICsxMTk0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayB6ZXJvTnVtZXJhdG9yID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0aERpdiB6ZXJv
IG51bWVyYXRvciIpKTsKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBudW1lcmF0b3JDb250
aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoRGl2IG51bWVyYXRvciBjb250
aW51YXRpb24iKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKG1fb3V0LmlzWmVybzMyKG51bWVyYXRvciksIHplcm9OdW1lcmF0b3IsIG51bWVyYXRvckNv
bnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5pc1plcm8zMihudW1lcmF0b3IpLAorICAgICAgICAgICAgICAgICAgICBy
YXJlbHkoemVyb051bWVyYXRvciksIHVzdWFsbHkobnVtZXJhdG9yQ29udGludWF0aW9uKSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5uZXJMYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKHplcm9OdW1lcmF0b3IsIG51bWVyYXRvckNvbnRpbnVhdGlvbik7
CiAgICAgICAgICAgICAgICAgCkBAIC0xMjM5LDcgKzEyNTIsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBMVmFsdWUgYWRqdXN0ZWREZW5vbWluYXRvciA9IG1fb3V0LmFk
ZChkZW5vbWluYXRvciwgbV9vdXQuaW50MzJPbmUpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBtX291dC5icmFuY2gobV9vdXQuYWJvdmUoYWRqdXN0ZWREZW5vbWluYXRvciwgbV9vdXQuaW50
MzJPbmUpLCBjb250aW51YXRpb24sIHVuc2FmZURlbm9taW5hdG9yKTsKKyAgICAgICAgICAgIG1f
b3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICBtX291dC5hYm92ZShhZGp1c3RlZERlbm9taW5h
dG9yLCBtX291dC5pbnQzMk9uZSksCisgICAgICAgICAgICAgICAgdXN1YWxseShjb250aW51YXRp
b24pLCByYXJlbHkodW5zYWZlRGVub21pbmF0b3IpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh1bnNhZmVEZW5vbWluYXRv
ciwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIApAQCAtMTI2MSwxNCArMTI3NiwxNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE1vZEJ5WmVybyA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNb2Qgbm90IG1vZHVsbyBieSB6ZXJvIikpOwogICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIG5lZzJUb1RoZTMxQnlOZWcxID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJBcml0aE1vZCAtMl4zMS8tMSIpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIoZGVub21pbmF0b3IpLCBtb2RCeVpl
cm8sIG5vdE1vZEJ5WmVybyk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAg
ICAgICAgICAgICAgICBtX291dC5pc1plcm8zMihkZW5vbWluYXRvciksIHJhcmVseShtb2RCeVpl
cm8pLCB1c3VhbGx5KG5vdE1vZEJ5WmVybykpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKG1vZEJ5WmVybywgbm90TW9kQnlaZXJvKTsKICAgICAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuaW50MzJaZXJvKSk7CiAg
ICAgICAgICAgICAgICAgbV9vdXQuanVtcChkb25lKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RNb2RCeVplcm8sIG5lZzJUb1RoZTMxQnlOZWcx
KTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwobnVtZXJhdG9yLCBu
ZWcyVG9UaGUzMSksIG5lZzJUb1RoZTMxQnlOZWcxLCBjb250aW51YXRpb24pOworICAgICAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwobnVt
ZXJhdG9yLCBuZWcyVG9UaGUzMSksCisgICAgICAgICAgICAgICAgICAgIHJhcmVseShuZWcyVG9U
aGUzMUJ5TmVnMSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obmVnMlRvVGhlMzFCeU5lZzEsIGNvbnRpbnVh
dGlvbik7CiAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0
LmludDMyWmVybykpOwpAQCAtMTI4NSw3ICsxMzAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgICAg
IG1fb3V0Lmxlc3NUaGFuKG51bWVyYXRvciwgbV9vdXQuaW50MzJaZXJvKSwKLSAgICAgICAgICAg
ICAgICAgICAgbmVnYXRpdmVOdW1lcmF0b3IsIG51bWVyYXRvckNvbnRpbnVhdGlvbik7CisgICAg
ICAgICAgICAgICAgICAgIHVuc3VyZShuZWdhdGl2ZU51bWVyYXRvciksIHVuc3VyZShudW1lcmF0
b3JDb250aW51YXRpb24pKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFz
aWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obmVnYXRpdmVOdW1lcmF0b3Is
IG51bWVyYXRvckNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgCkBAIC0xMzQ3LDcgKzEz
NjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fbm9kZS0+b3AoKSA9PSBBcml0aE1p
bgogICAgICAgICAgICAgICAgICAgICA/IG1fb3V0LmRvdWJsZUxlc3NUaGFuKGxlZnQsIHJpZ2h0
KQogICAgICAgICAgICAgICAgICAgICA6IG1fb3V0LmRvdWJsZUdyZWF0ZXJUaGFuKGxlZnQsIHJp
Z2h0KSwKLSAgICAgICAgICAgICAgICBjb250aW51YXRpb24sIG5vdExlc3NUaGFuKTsKKyAgICAg
ICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdExlc3NUaGFuKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8obm90TGVzc1RoYW4sIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChtX291dC5hbmNob3IobV9vdXQuc2VsZWN0KApAQCAtMTUzNSw3ICsxNTUzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5leHRTdHJ1Y3R1cmUgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIkNoZWNrU3RydWN0dXJlIG5leHRTdHJ1Y3R1cmUiKSk7CiAgICAgICAgICAg
ICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlLCB3
ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSksCi0gICAgICAgICAgICAgICAg
Y29udGludWF0aW9uLCBuZXh0U3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICB1bnN1cmUoY29u
dGludWF0aW9uKSwgdW5zdXJlKG5leHRTdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKG5leHRTdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTU4NSw3ICsx
NjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAg
ICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1
Y3R1cmUoKSkpLAotICAgICAgICAgICAgdW5leHBlY3RlZFN0cnVjdHVyZSwgY29udGludWF0aW9u
KTsKKyAgICAgICAgICAgIHJhcmVseSh1bmV4cGVjdGVkU3RydWN0dXJlKSwgdXN1YWxseShjb250
aW51YXRpb24pKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8odW5leHBlY3RlZFN0cnVjdHVyZSwgY29udGludWF0aW9uKTsKICAgICAgICAg
CkBAIC0xNjY5LDcgKzE2ODcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sg
bm90Q2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkdldEJ5SWQgdW50eXBlZCBub3Qg
Y2VsbCBjYXNlIikpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJHZXRCeUlkIHVudHlwZWQgY29udGludWF0aW9uIikpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlKSwgY2VsbENh
c2UsIG5vdENlbGxDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUp
LCB1bnN1cmUoY2VsbENhc2UpLCB1bnN1cmUobm90Q2VsbENhc2UpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhjZWxsQ2Fz
ZSwgbm90Q2VsbENhc2UpOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihnZXRCeUlkKHZhbHVlKSk7CkBAIC0xNzQxLDcgKzE3NTksOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hv
cigKICAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNTdHJpbmdf
dmFsdWUpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5v
dE51bGwoZmFzdFJlc3VsdC52YWx1ZSgpKSwgY29udGludWF0aW9uLCBzbG93UGF0aCk7CisgICAg
ICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgbV9vdXQubm90TnVsbChmYXN0
UmVzdWx0LnZhbHVlKCkpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93UGF0aCkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgCkBAIC0xNzgx
LDcgKzE4MDAsOSBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoImNvbnRpbnVhdGlvbiBicmFuY2giKSk7CiAgICAgICAg
IAogICAgICAgICBMVmFsdWUgYmFzZUFkZHJlc3MgPSBtX291dC5hZGRQdHIoYmFzZVB0ciwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0Lm5vdEVxdWFsKGJhc2VBZGRyZXNzICwgbV9vdXQuY29uc3RJbnRQdHIoV2FzdGVmdWxUeXBl
ZEFycmF5KSksIHNpbXBsZUNhc2UsIHdhc3RlZnVsQ2FzZSk7CisgICAgICAgIG1fb3V0LmJyYW5j
aCgKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGJhc2VBZGRyZXNzICwgbV9vdXQuY29uc3RJ
bnRQdHIoV2FzdGVmdWxUeXBlZEFycmF5KSksCisgICAgICAgICAgICB1bnN1cmUoc2ltcGxlQ2Fz
ZSksIHVuc3VyZSh3YXN0ZWZ1bENhc2UpKTsKIAogICAgICAgICAvLyBiZWdpbiBzaW1wbGUgY2Fz
ZSAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
c2ltcGxlQ2FzZSwgd2FzdGVmdWxDYXNlKTsKQEAgLTE4NzUsMTMgKzE4OTYsMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgICAgICBtX291dC5hYm92
ZU9yRXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdh
dGl2ZShzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKSwKLSAgICAgICAg
ICAgICAgICBzbG93Q2FzZSwgZmFzdENhc2UpOworICAgICAgICAgICAgICAgIHJhcmVseShzbG93
Q2FzZSksIHVzdWFsbHkoZmFzdENhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYXN0Q2FzZSwgc2xvd0Nhc2UpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ2NChiYXNlSW5kZXgoaGVhcCwg
c3RvcmFnZSwgaW5kZXgsIG1fbm9kZS0+Y2hpbGQyKCkpKSk7Ci0gICAgICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQuaXNaZXJvNjQoZmFzdFJlc3VsdC52YWx1ZSgpKSwgc2xvd0Nhc2UsIGNvbnRp
bnVhdGlvbik7CisgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgbV9v
dXQuaXNaZXJvNjQoZmFzdFJlc3VsdC52YWx1ZSgpKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxs
eShjb250aW51YXRpb24pKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBz
bG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKApAQCAtMTkyMiwxMyArMTk0NCwxNCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgIG1fb3V0LmFib3Zl
T3JFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0
aXZlKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCkpLAotICAgICAgICAg
ICAgICAgIHNsb3dDYXNlLCBpbkJvdW5kcyk7CisgICAgICAgICAgICAgICAgcmFyZWx5KHNsb3dD
YXNlKSwgdXN1YWxseShpbkJvdW5kcykpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGluQm91bmRzLCBib3hQYXRoKTsKICAg
ICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWx1ZSA9IG1fb3V0LmxvYWREb3VibGUoCiAgICAgICAg
ICAgICAgICAgYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4LCBtX25vZGUtPmNoaWxkMigp
KSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuZG91
YmxlTm90RXF1YWxPclVub3JkZXJlZChkb3VibGVWYWx1ZSwgZG91YmxlVmFsdWUpLCBzbG93Q2Fz
ZSwgYm94UGF0aCk7CisgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3Jk
ZXJlZChkb3VibGVWYWx1ZSwgZG91YmxlVmFsdWUpLAorICAgICAgICAgICAgICAgIHJhcmVseShz
bG93Q2FzZSksIHVzdWFsbHkoYm94UGF0aCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhib3hQYXRoLCBzbG93Q2FzZSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGJveERvdWJsZShkb3VibGVWYWx1ZSkpOwpA
QCAtMjE4MSw3ICsyMjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnRWYWx1ZXMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5pbnQzMlplcm8pKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fb3V0Lmxlc3NUaGFuKGludFZhbHVlLCBtX291dC5pbnQzMlplcm8pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51YXRpb24sIGF0TGVhc3RaZXJv
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiks
IHVuc3VyZShhdExlYXN0WmVybykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oYXRMZWFzdFplcm8sIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCkBAIC0yMjExLDEzICsyMjM0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50VmFsdWVzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuaW50MzJaZXJv
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkKGRv
dWJsZVZhbHVlLCBtX291dC5kb3VibGVaZXJvKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWF0aW9uLCBhdExlYXN0WmVybyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoYXRMZWFzdFplcm8pKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGF0TGVhc3RaZXJvLCB3aXRoaW5S
YW5nZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWVzLmFwcGVuZChtX291
dC5hbmNob3IobV9vdXQuY29uc3RJbnQzMigyNTUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291
dC5kb3VibGVHcmVhdGVyVGhhbihkb3VibGVWYWx1ZSwgbV9vdXQuY29uc3REb3VibGUoMjU1KSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiwgd2l0aGluUmFu
Z2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9u
KSwgdW5zdXJlKHdpdGhpblJhbmdlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8od2l0aGluUmFuZ2UsIGNv
bnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWVzLmFwcGVu
ZChtX291dC5hbmNob3IobV9vdXQuZnBUb0ludDMyKGRvdWJsZVZhbHVlKSkpOwpAQCAtMjI3NCw3
ICsyMjk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFib3Zl
T3JFcXVhbChpbmRleCwgbG93SW50MzIoY2hpbGQ1KSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51YXRpb24sIGlzSW5Cb3VuZHMpOworICAgICAgICAgICAgICAgICAgICAgICAgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc0luQm91bmRzKSk7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKGlzSW5Cb3VuZHMsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LnN0b3JlKHZhbHVlVG9TdG9yZSwgcG9pbnRlciwgcmVmVHlwZSk7CkBAIC0yMzI5LDcgKzIz
NTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAg
ICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgcHJldkxlbmd0aCwg
bV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCkpLAot
ICAgICAgICAgICAgICAgIHNsb3dQYXRoLCBmYXN0UGF0aCk7CisgICAgICAgICAgICAgICAgcmFy
ZWx5KHNsb3dQYXRoKSwgdXN1YWxseShmYXN0UGF0aCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGZhc3RQYXRoLCBzbG93
UGF0aCk7CiAgICAgICAgICAgICBtX291dC5zdG9yZSgKQEAgLTIzODIsNyArMjQwNSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywg
Mz4gcmVzdWx0czsKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpKTsKLSAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm8zMihwcmV2TGVuZ3RoKSwgY29udGludWF0aW9u
LCBmYXN0Q2FzZSk7CisgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAg
bV9vdXQuaXNaZXJvMzIocHJldkxlbmd0aCksIHJhcmVseShjb250aW51YXRpb24pLCB1c3VhbGx5
KGZhc3RDYXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3RO
ZXh0ID0gbV9vdXQuYXBwZW5kVG8oZmFzdENhc2UsIHNsb3dDYXNlKTsKICAgICAgICAgICAgIExW
YWx1ZSBuZXdMZW5ndGggPSBtX291dC5zdWIocHJldkxlbmd0aCwgbV9vdXQuaW50MzJPbmUpOwpA
QCAtMjM5MywxMiArMjQxNywxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSBtX291dC5sb2FkNjQocG9pbnRlcik7CiAgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmU2NChtX291dC5pbnQ2NFplcm8sIHBvaW50ZXIpOwogICAgICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1fb3V0LmFuY2hvcihyZXN1bHQpKTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQubm90WmVybzY0KHJlc3VsdCksIGNvbnRpbnVhdGlvbiwgc2xvd0Nhc2UpOworICAg
ICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90
WmVybzY0KHJlc3VsdCksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBt
X291dC5sb2FkRG91YmxlKHBvaW50ZXIpOwogICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQo
bV9vdXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUU5hTikpLCBwb2ludGVyKTsK
ICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYm94RG91YmxlKHJl
c3VsdCkpKTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZG91YmxlRXF1YWwo
cmVzdWx0LCByZXN1bHQpLCBjb250aW51YXRpb24sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgICAg
ICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUVxdWFsKHJl
c3VsdCwgcmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgdXN1YWxseShjb250aW51YXRpb24p
LCByYXJlbHkoc2xvd0Nhc2UpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CkBAIC0yNTg4LDcg
KzI2MTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5icmFu
Y2goCiAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKHB1YmxpY0xlbmd0aCwgbV9v
dXQuY29uc3RJbnQzMihNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSksCi0gICAgICAgICAgICAgICAg
bGFyZ2VDYXNlLCBmYXN0Q2FzZSk7CisgICAgICAgICAgICAgICAgcmFyZWx5KGxhcmdlQ2FzZSks
IHVzdWFsbHkoZmFzdENhc2UpKTsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhmYXN0Q2FzZSwgbGFyZ2VDYXNlKTsKICAgICAgICAgICAgIApAQCAt
MjYxNyw3ICsyNjQ0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBvcmlnaW5hbEluZGV4ID0gbV9vdXQuYW5jaG9yKHZlY3Rvckxl
bmd0aCk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3JpZ2luYWxQb2ludGVyID0g
bV9vdXQuYW5jaG9yKGJ1dHRlcmZseSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0Lm5vdFplcm8zMih2ZWN0b3JMZW5ndGgpLCBpbml0TG9vcCwgaW5pdERvbmUpOworICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90WmVy
bzMyKHZlY3Rvckxlbmd0aCksIHVuc3VyZShpbml0TG9vcCksIHVuc3VyZShpbml0RG9uZSkpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluaXRMYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGluaXRMb29wLCBpbml0RG9uZSk7CiAgICAgICAgICAgICAgICAg
TFZhbHVlIGluZGV4ID0gbV9vdXQucGhpKG1fb3V0LmludDMyLCBvcmlnaW5hbEluZGV4KTsKQEAg
LTI2MzAsNyArMjY1OCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTFZhbHVlIG5leHRJ
bmRleCA9IG1fb3V0LnN1YihpbmRleCwgbV9vdXQuaW50MzJPbmUpOwogICAgICAgICAgICAgICAg
IGFkZEluY29taW5nKGluZGV4LCBtX291dC5hbmNob3IobmV4dEluZGV4KSk7CiAgICAgICAgICAg
ICAgICAgYWRkSW5jb21pbmcocG9pbnRlciwgbV9vdXQuYW5jaG9yKG1fb3V0LmFkZChwb2ludGVy
LCBtX291dC5pbnRQdHJFaWdodCkpKTsKLSAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9v
dXQubm90WmVybzMyKG5leHRJbmRleCksIGluaXRMb29wLCBpbml0RG9uZSk7CisgICAgICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvMzIo
bmV4dEluZGV4KSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGluaXREb25lKSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5pdERvbmUsIGluaXRM
YXN0TmV4dCk7CiAgICAgICAgICAgICB9CkBAIC0yNzkyLDcgKzI4MjEsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2ltcGxlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNl
bGwpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgIG1fb3V0LmVx
dWFsKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSwKLSAgICAgICAgICAgICAgICBjb250aW51YXRpb24sIG5vdFN0cmluZyk7CisgICAgICAg
ICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhub3RTdHJpbmcsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmUobV9ub2RlLT5jaGlsZDEoKSwgc3RydWN0dXJlKTsKQEAgLTI4MjQs
NyArMjg1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaXNDZWxsUHJlZGljYXRlID0g
bV9vdXQuYm9vbGVhblRydWU7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXND
ZWxsUHJlZGljYXRlID0gdGhpcy0+aXNDZWxsKHZhbHVlKTsKLSAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChpc0NlbGxQcmVkaWNhdGUsIGlzQ2VsbCwgbm90U3RyaW5nKTsKKyAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChpc0NlbGxQcmVkaWNhdGUsIHVuc3VyZShpc0NlbGwpLCB1bnN1cmUobm90U3Ry
aW5nKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oaXNDZWxsLCBub3RTdHJpbmcpOwogICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2ltcGxlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZhbHVlKTsKQEAgLTI4MzUsNyArMjg2
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHZt
KCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICBpc1N0cmluZ1ByZWRpY2F0ZSA9IG1fb3V0LmJvb2xlYW5GYWxzZTsKLSAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChpc1N0cmluZ1ByZWRpY2F0ZSwgY29udGludWF0aW9uLCBub3RTdHJp
bmcpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nUHJlZGljYXRlLCB1bnN1cmUo
Y29udGludWF0aW9uKSwgdW5zdXJlKG5vdFN0cmluZykpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmcsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICBMVmFsdWUgb3BlcmF0aW9uOwpAQCAtMjg2OCwxMSArMjg5NywxMSBAQCBwcml2YXRlOgogICAg
ICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDM+IHJlc3VsdHM7CiAgICAgICAgIAogICAgICAg
ICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IodmFsdWUpKTsKLSAgICAgICAgbV9vdXQuYnJh
bmNoKGlzQ2VsbCh2YWx1ZSksIGlzQ2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIG1f
b3V0LmJyYW5jaChpc0NlbGwodmFsdWUpLCB1bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShjb250
aW51YXRpb24pKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgaXNPYmplY3RDYXNlKTsKICAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKHZhbHVlKSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc09iamVj
dCh2YWx1ZSksIGlzT2JqZWN0Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgbV9vdXQuYnJh
bmNoKGlzT2JqZWN0KHZhbHVlKSwgdW5zdXJlKGlzT2JqZWN0Q2FzZSksIHVuc3VyZShjb250aW51
YXRpb24pKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzT2JqZWN0Q2FzZSwg
Y29udGludWF0aW9uKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2Fs
bCgKQEAgLTI5NjMsNyArMjk5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmJyYW5jaCgK
ICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKICAgICAgICAgICAgICAgICBpbmRleCwg
bV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoYmFzZSwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpKSwK
LSAgICAgICAgICAgIHNsb3dQYXRoLCBmYXN0UGF0aCk7CisgICAgICAgICAgICByYXJlbHkoc2xv
d1BhdGgpLCB1c3VhbGx5KGZhc3RQYXRoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYXN0UGF0aCwgc2xvd1BhdGgpOwogICAg
ICAgICAgICAgCkBAIC0yOTc4LDcgKzMwMDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9v
dXQudGVzdElzWmVybzMyKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihzdHJpbmdJbXBs
LCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKICAgICAgICAgICAgICAgICBtX291
dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpLAotICAgICAgICAgICAgaXMx
NkJpdCwgaXM4Qml0KTsKKyAgICAgICAgICAgIHVuc3VyZShpczE2Qml0KSwgdW5zdXJlKGlzOEJp
dCkpOwogICAgICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzOEJpdCwgaXMxNkJp
dCk7CiAgICAgICAgICAgICAKQEAgLTI5OTgsNyArMzAyNyw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgc3RvcmFnZSwgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwKICAg
ICAgICAgICAgICAgICBtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSkubV92YWx1ZSkp
LAogICAgICAgICAgICAgbV9vdXQuaW50MzIpKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0
LmFib3ZlT3JFcXVhbChjaGFyMTZCaXQudmFsdWUoKSwgbV9vdXQuY29uc3RJbnQzMigweDEwMCkp
LCBiaWdDaGFyYWN0ZXIsIGJpdHNDb250aW51YXRpb24pOworICAgICAgICBtX291dC5icmFuY2go
CisgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoY2hhcjE2Qml0LnZhbHVlKCksIG1fb3V0
LmNvbnN0SW50MzIoMHgxMDApKSwKKyAgICAgICAgICAgIHJhcmVseShiaWdDaGFyYWN0ZXIpLCB1
c3VhbGx5KGJpdHNDb250aW51YXRpb24pKTsKICAgICAgICAgICAgIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhiaWdDaGFyYWN0ZXIsIGJpdHNDb250aW51YXRpb24pOwogICAgICAgICAgICAgCkBA
IC0zMDMxLDcgKzMwNjIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG5lZ2F0aXZlSW5kZXggPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkdldEJ5VmFsIFN0cmluZyBu
ZWdhdGl2ZSBpbmRleCIpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpKSkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291
dC5sZXNzVGhhbihpbmRleCwgbV9vdXQuaW50MzJaZXJvKSwgbmVnYXRpdmVJbmRleCwgY29udGlu
dWF0aW9uKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5pbnQzMlplcm8pLAorICAgICAgICAgICAg
ICAgICAgICByYXJlbHkobmVnYXRpdmVJbmRleCksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5lZ2F0
aXZlSW5kZXgsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICB9CkBAIC0zMDY3LDcgKzMxMDAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAogICAgICAgICAg
ICAgICAgIG1fb3V0LmxvYWQzMihzdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFu
ZEZsYWdzKSwKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKFN0cmluZ0ltcGw6OmZs
YWdJczhCaXQoKSkpLAotICAgICAgICAgICAgaXMxNkJpdCwgaXM4Qml0KTsKKyAgICAgICAgICAg
IHVuc3VyZShpczE2Qml0KSwgdW5zdXJlKGlzOEJpdCkpOwogICAgICAgICAgICAgCiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXM4Qml0LCBpczE2Qml0KTsK
ICAgICAgICAgICAgIApAQCAtMzEyMiwxMCArMzE1NSwxMyBAQCBwcml2YXRlOgogICAgICAgICBW
ZWN0b3I8U3dpdGNoQ2FzZSwgMj4gY2FzZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRh
dGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBHZXRCeUlkVmFyaWFudCB2
YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IHZhcmlhbnQuc3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBqLS07KQotICAgICAgICAgICAgICAgIGNh
c2VzLmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtQb2ludGVyKHZhcmlhbnQuc3RydWN0dXJlU2V0KClb
al0pLCBibG9ja3NbaV0pKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IHZhcmlhbnQu
c3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBqLS07KSB7CisgICAgICAgICAgICAgICAgY2FzZXMuYXBw
ZW5kKFN3aXRjaENhc2UoCisgICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKHZhcmlhbnQu
c3RydWN0dXJlU2V0KClbal0pLCBibG9ja3NbaV0sIFdlaWdodCgxKSkpOworICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIG1fb3V0LnN3aXRjaEluc3RydWN0aW9uKG1fb3V0LmxvYWRQ
dHIoYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwgY2FzZXMsIGV4aXQpOworICAgICAg
ICBtX291dC5zd2l0Y2hJbnN0cnVjdGlvbigKKyAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoYmFz
ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwgY2FzZXMsIGV4aXQsIFdlaWdodCgwKSk7CiAg
ICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2Nr
OwogICAgICAgICAKQEAgLTMyMDYsNyArMzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBtX291dC5lcXVhbChzdGF0ZSwgbV9vdXQu
Y29uc3RJbnQ4KElzSW52YWxpZGF0ZWQpKSwKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbiwgaXNO
b3RJbnZhbGlkYXRlZCk7CisgICAgICAgICAgICB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVs
eShpc05vdEludmFsaWRhdGVkKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm90SW52YWxpZGF0ZWQsIGlzQ2xlYXIpOwogCkBAIC0z
MjE1LDcgKzMyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaXNDbGVhclZhbHVlID0gbV9v
dXQuZXF1YWwoc3RhdGUsIG1fb3V0LmNvbnN0SW50OChDbGVhcldhdGNocG9pbnQpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgaXNDbGVhclZhbHVlID0gbV9vdXQuYm9vbGVhbkZhbHNlOwot
ICAgICAgICBtX291dC5icmFuY2goaXNDbGVhclZhbHVlLCBpc0NsZWFyLCBpc1dhdGNoZWQpOwor
ICAgICAgICBtX291dC5icmFuY2goaXNDbGVhclZhbHVlLCB1bnN1cmUoaXNDbGVhciksIHVuc3Vy
ZShpc1dhdGNoZWQpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzQ2xlYXIs
IGlzV2F0Y2hlZCk7CiAgICAgICAgIApAQCAtMzIyNywxMyArMzI2MywxMyBAQCBwcml2YXRlOgog
ICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgbV9vdXQuZXF1YWwo
dmFsdWUsIG1fb3V0LmxvYWQ2NChtX291dC5hYnNvbHV0ZShzZXQtPmFkZHJlc3NPZkluZmVycmVk
VmFsdWUoKSkpKSwKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbiwgaW52YWxpZGF0ZSk7CisgICAg
ICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGludmFsaWRhdGUpKTsKICAgICAg
ICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFsaWRhdGUsIGludmFsaWRhdGVGYXN0KTsK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0Lm5vdFpl
cm84KG1fb3V0LmxvYWQ4KG1fb3V0LmFic29sdXRlKHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0
eSgpKSkpLAotICAgICAgICAgICAgaW52YWxpZGF0ZVNsb3csIGludmFsaWRhdGVGYXN0KTsKKyAg
ICAgICAgICAgIHJhcmVseShpbnZhbGlkYXRlU2xvdyksIHVzdWFsbHkoaW52YWxpZGF0ZUZhc3Qp
KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFsaWRhdGVGYXN0LCBpbnZh
bGlkYXRlU2xvdyk7CiAgICAgICAgIApAQCAtMzQ1NiwxNCArMzQ5MiwyMCBAQCBwcml2YXRlOgog
ICAgIAogICAgIHZvaWQgY29tcGlsZUJyYW5jaCgpCiAgICAgeworICAgICAgICAvLyBGSVhNRTog
REZHIHNob3VsZCBiZSBhYmxlIHRvIHRlbGwgdXMgYnJhbmNoIHdlaWdodHMgaGVyZS4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTA1NQorICAg
ICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgYm9vbGlmeShtX25vZGUt
PmNoaWxkMSgpKSwKLSAgICAgICAgICAgIGxvd0Jsb2NrKG1fbm9kZS0+dGFrZW5CbG9jaygpKSwK
LSAgICAgICAgICAgIGxvd0Jsb2NrKG1fbm9kZS0+bm90VGFrZW5CbG9jaygpKSk7CisgICAgICAg
ICAgICB1bnN1cmUobG93QmxvY2sobV9ub2RlLT50YWtlbkJsb2NrKCkpKSwKKyAgICAgICAgICAg
IHVuc3VyZShsb3dCbG9jayhtX25vZGUtPm5vdFRha2VuQmxvY2soKSkpKTsKICAgICB9CiAgICAg
CiAgICAgdm9pZCBjb21waWxlU3dpdGNoKCkKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBERkcg
c2hvdWxkIGJlIGFibGUgdG8gdGVsbCB1cyBicmFuY2ggd2VpZ2h0cyBoZXJlLgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDU1CisgICAgICAg
IAogICAgICAgICBTd2l0Y2hEYXRhKiBkYXRhID0gbV9ub2RlLT5zd2l0Y2hEYXRhKCk7CiAgICAg
ICAgIHN3aXRjaCAoZGF0YS0+a2luZCkgewogICAgICAgICBjYXNlIFN3aXRjaEltbTogewpAQCAt
MzQ4NSw3ICszNTI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBp
c0RvdWJsZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3dpdGNoL1N3aXRjaEltbSBpcyBkb3Vi
bGUiKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTFZhbHVlIGJveGVkVmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG1fb3V0
LmJyYW5jaChpc05vdEludDMyKGJveGVkVmFsdWUpLCBpc05vdEludCwgaXNJbnQpOworICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKGJveGVkVmFsdWUpLCB1bnN1cmUoaXNO
b3RJbnQpLCB1bnN1cmUoaXNJbnQpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNJbnQsIGlzTm90
SW50KTsKICAgICAgICAgICAgICAgICAKQEAgLTM0OTQsNyArMzUzNiw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNOb3RJbnQs
IGlzRG91YmxlKTsKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAg
ICAgICAgIGlzQ2VsbE9yTWlzYyhib3hlZFZhbHVlKSwgbG93QmxvY2soZGF0YS0+ZmFsbFRocm91
Z2gpLCBpc0RvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGlzQ2VsbE9yTWlzYyhib3hlZFZh
bHVlKSwKKyAgICAgICAgICAgICAgICAgICAgdXN1YWxseShsb3dCbG9jayhkYXRhLT5mYWxsVGhy
b3VnaCkpLCByYXJlbHkoaXNEb3VibGUpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhpc0RvdWJsZSwgaW5uZXJMYXN0TmV4dCk7CiAgICAgICAgICAg
ICAgICAgTFZhbHVlIGRvdWJsZVZhbHVlID0gdW5ib3hEb3VibGUoYm94ZWRWYWx1ZSk7CkBAIC0z
NTAyLDcgKzM1NDUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGludFZhbHVlcy5hcHBl
bmQobV9vdXQuYW5jaG9yKGludEluRG91YmxlKSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKAogICAgICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVFcXVhbChtX291dC5pbnRUb0Rv
dWJsZShpbnRJbkRvdWJsZSksIGRvdWJsZVZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgc3dp
dGNoT25JbnRzLCBsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaCkpOworICAgICAgICAgICAgICAg
ICAgICB1bnN1cmUoc3dpdGNoT25JbnRzKSwgdW5zdXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJv
dWdoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIApAQCAtMzUzMiwxMSArMzU3NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGlzU3RyaW5nQ2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3dpdGNo
L1N3aXRjaENoYXIgaXMgc3RyaW5nIikpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAgICAgaXNOb3RDZWxsKHVuYm94ZWRW
YWx1ZSksIGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSwgaXNDZWxsQ2FzZSk7CisgICAgICAg
ICAgICAgICAgICAgIGlzTm90Q2VsbCh1bmJveGVkVmFsdWUpLAorICAgICAgICAgICAgICAgICAg
ICB1bnN1cmUobG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gpKSwgdW5zdXJlKGlzQ2VsbENhc2Up
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIGlzU3RyaW5nQ2FzZSk7CiAgICAgICAgICAg
ICAgICAgTFZhbHVlIGNlbGxWYWx1ZSA9IHVuYm94ZWRWYWx1ZTsKLSAgICAgICAgICAgICAgICBt
X291dC5icmFuY2goaXNOb3RTdHJpbmcoY2VsbFZhbHVlKSwgbG93QmxvY2soZGF0YS0+ZmFsbFRo
cm91Z2gpLCBpc1N0cmluZ0Nhc2UpOworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAg
ICAgICAgICAgICAgICAgICAgaXNOb3RTdHJpbmcoY2VsbFZhbHVlKSwKKyAgICAgICAgICAgICAg
ICAgICAgdW5zdXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSksIHVuc3VyZShpc1N0cmlu
Z0Nhc2UpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhpc1N0cmluZ0Nhc2UsIGxhc3ROZXh0KTsKICAgICAgICAgICAgICAgICBzdHJpbmdWYWx1ZSA9
IGNlbGxWYWx1ZTsKQEAgLTM1NTksMTMgKzM2MDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBtX291dC5ub3RFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyTm9u
TmVnYXRpdmUoc3RyaW5nVmFsdWUsIG1faGVhcHMuSlNTdHJpbmdfbGVuZ3RoKSwKICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuaW50MzJPbmUpLAotICAgICAgICAgICAgICAgIGxvd0Jsb2NrKGRh
dGEtPmZhbGxUaHJvdWdoKSwgbGVuZ3RoSXMxKTsKKyAgICAgICAgICAgICAgICB1bnN1cmUobG93
QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gpKSwgdW5zdXJlKGxlbmd0aElzMSkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGxl
bmd0aElzMSwgbmVlZFJlc29sdXRpb24pOwogICAgICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJs
b2NrLCAyPiB2YWx1ZXM7CiAgICAgICAgICAgICBMVmFsdWUgZmFzdFZhbHVlID0gbV9vdXQubG9h
ZFB0cihzdHJpbmdWYWx1ZSwgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CiAgICAgICAgICAgICB2
YWx1ZXMuYXBwZW5kKG1fb3V0LmFuY2hvcihmYXN0VmFsdWUpKTsKLSAgICAgICAgICAgIG1fb3V0
LmJyYW5jaChtX291dC5pc051bGwoZmFzdFZhbHVlKSwgbmVlZFJlc29sdXRpb24sIHJlc29sdmVk
KTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc051bGwoZmFzdFZhbHVlKSwgcmFy
ZWx5KG5lZWRSZXNvbHV0aW9uKSwgdXN1YWxseShyZXNvbHZlZCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhuZWVkUmVzb2x1dGlvbiwgcmVzb2x2ZWQpOwogICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZChtX291dC5hbmNob3IoCkBAIC0zNTc5LDcgKzM2MjUsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCiAgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5TdHJpbmdJbXBsX2hhc2hB
bmRGbGFncyksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nSW1w
bDo6ZmxhZ0lzOEJpdCgpKSksCi0gICAgICAgICAgICAgICAgaXM4Qml0LCBpczE2Qml0KTsKKyAg
ICAgICAgICAgICAgICB1bnN1cmUoaXM4Qml0KSwgdW5zdXJlKGlzMTZCaXQpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrLCAyPiBjaGFyYWN0ZXJzOwog
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXM4Qml0LCBpczE2Qml0KTsKQEAgLTM3MjcsNyAr
Mzc3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxlZnROb3RDZWxsQ2FzZSA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQ29tcGFyZUVxT2JqZWN0T3JPdGhlclRvT2JqZWN0IGxl
ZnQgbm90IGNlbGwgY2FzZSIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJDb21wYXJlRXFPYmplY3RPck90aGVyVG9PYmplY3QgY29u
dGludWF0aW9uIikpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChsZWZ0
VmFsdWUpLCBsZWZ0Q2VsbENhc2UsIGxlZnROb3RDZWxsQ2FzZSk7CisgICAgICAgIG1fb3V0LmJy
YW5jaChpc0NlbGwobGVmdFZhbHVlKSwgdW5zdXJlKGxlZnRDZWxsQ2FzZSksIHVuc3VyZShsZWZ0
Tm90Q2VsbENhc2UpKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8obGVmdENlbGxDYXNlLCBsZWZ0Tm90Q2VsbENhc2UpOwogICAgICAgICBz
cGVjdWxhdGVUcnV0aHlPYmplY3QobGVmdENoaWxkLCBsZWZ0VmFsdWUsIFNwZWNPYmplY3QgfCAo
flNwZWNDZWxsKSk7CkBAIC0zNzcyLDEwICszODE4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJDb21wYXJlRXEgdW50
eXBlZCBzbG93IHBhdGgiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZU
TF9ORVdfQkxPQ0sobV9vdXQsICgiQ29tcGFyZUVxIHVudHlwZWQgY29udGludWF0aW9uIikpOwog
ICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIobGVmdCksIHNsb3dQYXRo
LCBsZWZ0SXNJbnQpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihsZWZ0KSwgcmFy
ZWx5KHNsb3dQYXRoKSwgdXN1YWxseShsZWZ0SXNJbnQpKTsKICAgICAgICAgCiAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obGVmdElzSW50LCBmYXN0UGF0aCk7
Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKHJpZ2h0KSwgc2xvd1BhdGgsIGZhc3RQ
YXRoKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIocmlnaHQpLCByYXJlbHkoc2xv
d1BhdGgpLCB1c3VhbGx5KGZhc3RQYXRoKSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhmYXN0UGF0aCwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKApAQCAtMzc5OCw3ICszODQ0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWRQdHIoCiAgICAgICAgICAgICBhbGxvY2F0b3Is
IG1faGVhcHMuTWFya2VkQWxsb2NhdG9yX2ZyZWVMaXN0SGVhZCk7CiAgICAgICAgIAotICAgICAg
ICBtX291dC5icmFuY2gobV9vdXQubm90TnVsbChyZXN1bHQpLCBzdWNjZXNzLCBzbG93UGF0aCk7
CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHJlc3VsdCksIHVzdWFsbHkoc3Vj
Y2VzcyksIHJhcmVseShzbG93UGF0aCkpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc3VjY2Vzcyk7CiAgICAgICAgIApAQCAtMzg0Myw3ICszODg5LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgTFZhbHVlIHJlbWFpbmluZyA9IG1fb3V0LmxvYWRQdHIobV9vdXQuYWJzb2x1dGUoJmFs
bG9jYXRvci5tX2N1cnJlbnRSZW1haW5pbmcpKTsKICAgICAgICAgTFZhbHVlIG5ld1JlbWFpbmlu
ZyA9IG1fb3V0LnN1YihyZW1haW5pbmcsIHNpemUpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQu
YnJhbmNoKG1fb3V0Lmxlc3NUaGFuKG5ld1JlbWFpbmluZywgbV9vdXQuaW50UHRyWmVybyksIHNs
b3dQYXRoLCBzdWNjZXNzKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9v
dXQubGVzc1RoYW4obmV3UmVtYWluaW5nLCBtX291dC5pbnRQdHJaZXJvKSwKKyAgICAgICAgICAg
IHJhcmVseShzbG93UGF0aCksIHVzdWFsbHkoc3VjY2VzcykpOwogICAgICAgICAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc3VjY2Vzcyk7CiAgICAgICAgIApAQCAtMzk3MSw3ICs0MDE5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGZhc3RDYXNlID0gRlRMX05FV19CTE9D
SyhtX291dCwgKCJCb29saWZ5IHVudHlwZWQgZmFzdCBjYXNlIikpOwogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJCb29saWZ5IHVu
dHlwZWQgY29udGludWF0aW9uIikpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5i
cmFuY2goaXNOb3RCb29sZWFuKHZhbHVlKSwgc2xvd0Nhc2UsIGZhc3RDYXNlKTsKKyAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChpc05vdEJvb2xlYW4odmFsdWUpLCByYXJlbHkoc2xvd0Nhc2UpLCB1
c3VhbGx5KGZhc3RDYXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZmFzdENhc2UsIHNsb3dDYXNlKTsKICAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IodW5ib3hCb29sZWFu
KHZhbHVlKSk7CkBAIC00MDEzLDcgKzQwNjEsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNC
bG9jayBwcmltaXRpdmVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJFcXVhbE51bGxPclVu
ZGVmaW5lZCBwcmltaXRpdmUgY2FzZSIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJFcXVhbE51bGxPclVuZGVmaW5lZCBjb250aW51
YXRpb24iKSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5icmFuY2goaXNOb3RDZWxsKHZhbHVl
KSwgcHJpbWl0aXZlQ2FzZSwgY2VsbENhc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RD
ZWxsKHZhbHVlKSwgdW5zdXJlKHByaW1pdGl2ZUNhc2UpLCB1bnN1cmUoY2VsbENhc2UpKTsKICAg
ICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY2Vs
bENhc2UsIHByaW1pdGl2ZUNhc2UpOwogICAgICAgICAKQEAgLTQwNDYsNyArNDA5NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQudGVzdE5vblplcm84KAogICAgICAgICAgICAg
ICAgICAgICBtX291dC5sb2FkOChzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX3R5cGVJbmZv
RmxhZ3MpLAogICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDgoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpLAotICAgICAgICAgICAgICAgIG1hc3F1ZXJhZGVzQ2FzZSwgY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgICAgICByYXJlbHkobWFzcXVlcmFkZXNDYXNlKSwgdXN1YWxseShj
b250aW51YXRpb24pKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
bWFzcXVlcmFkZXNDYXNlLCBwcmltaXRpdmVDYXNlKTsKICAgICAgICAgICAgIApAQCAtNDA5Nyw3
ICs0MTQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHBlcmZvcm1TdG9y
ZSA9CiAgICAgICAgICAgICAgICAgRlRMX05FV19CTE9DSyhtX291dCwgKCJQdXRCeVZhbCBwZXJm
b3JtIHN0b3JlIikpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KGlzTm90SW5Cb3VuZHMsIG5vdEluQm91bmRzQ2FzZSwgcGVyZm9ybVN0b3JlKTsKKyAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChpc05vdEluQm91bmRzLCB1bnN1cmUobm90SW5Cb3VuZHNDYXNlKSwg
dW5zdXJlKHBlcmZvcm1TdG9yZSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RJbkJvdW5kc0Nhc2UsIHBlcmZv
cm1TdG9yZSk7CiAgICAgICAgICAgICAgICAgCkBAIC00MTEyLDcgKzQxNjAsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGhvbGVDYXNlID0KICAgICAgICAgICAgICAg
ICAgICAgRlRMX05FV19CTE9DSyhtX291dCwgKCJQdXRCeVZhbCBob2xlIGNhc2UiKSk7CiAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc091dE9mQm91
bmRzLCBvdXRPZkJvdW5kc0Nhc2UsIGhvbGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNPdXRPZkJvdW5kcywgdW5zdXJlKG91dE9mQm91bmRzQ2FzZSksIHVuc3VyZShob2xl
Q2FzZSkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8ob3V0T2ZCb3VuZHNDYXNlLCBob2xlQ2Fz
ZSk7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtNDE0MCwxMCArNDE4OCwxMCBAQCBwcml2YXRl
OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAogICAgICAgICAgICAg
ICAgIGNvbnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVl
KCkpLAotICAgICAgICAgICAgICAgIGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldCkpKTsK
KyAgICAgICAgICAgICAgICBsb3dCbG9jayhkYXRhLT5jYXNlc1tpXS50YXJnZXQpLCBXZWlnaHQo
KSkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBtX291dC5zd2l0Y2hJbnN0cnVjdGlv
bihzd2l0Y2hWYWx1ZSwgY2FzZXMsIGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJvdWdoKSk7CisgICAg
ICAgIG1fb3V0LnN3aXRjaEluc3RydWN0aW9uKHN3aXRjaFZhbHVlLCBjYXNlcywgbG93QmxvY2so
ZGF0YS0+ZmFsbFRocm91Z2gpLCBXZWlnaHQoKSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBk
b3VibGVUb0ludDMyKExWYWx1ZSBkb3VibGVWYWx1ZSwgZG91YmxlIGxvdywgZG91YmxlIGhpZ2gs
IGJvb2wgaXNTaWduZWQgPSB0cnVlKQpAQCAtNDE2MCwxMiArNDIwOCwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgbV9vdXQuZG91Ymxl
R3JlYXRlclRoYW5PckVxdWFsKGRvdWJsZVZhbHVlLCBtX291dC5jb25zdERvdWJsZShsb3cpKSwK
LSAgICAgICAgICAgIGdyZWF0RW5vdWdoLCBzbG93UGF0aCk7CisgICAgICAgICAgICB1bnN1cmUo
Z3JlYXRFbm91Z2gpLCB1bnN1cmUoc2xvd1BhdGgpKTsKICAgICAgICAgCiAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZ3JlYXRFbm91Z2gsIHdpdGhpblJhbmdl
KTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgbV9vdXQuZG91YmxlTGVzc1Ro
YW5PckVxdWFsKGRvdWJsZVZhbHVlLCBtX291dC5jb25zdERvdWJsZShoaWdoKSksCi0gICAgICAg
ICAgICB3aXRoaW5SYW5nZSwgc2xvd1BhdGgpOworICAgICAgICAgICAgdW5zdXJlKHdpdGhpblJh
bmdlKSwgdW5zdXJlKHNsb3dQYXRoKSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRU
byh3aXRoaW5SYW5nZSwgc2xvd1BhdGgpOwogICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdDsKQEAg
LTQyMDIsNyArNDI1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5zZW5zaWJsZURv
dWJsZVRvSW50KGRvdWJsZVZhbHVlKSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAg
ICAgIG1fb3V0LmVxdWFsKGZhc3RSZXN1bHQudmFsdWUoKSwgbV9vdXQuY29uc3RJbnQzMigweDgw
MDAwMDAwKSksCi0gICAgICAgICAgICBzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAg
ICAgIHJhcmVseShzbG93UGF0aCksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CiAgICAgICAgIAog
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBj
b250aW51YXRpb24pOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKApAQCAtNDUxMCw3ICs0NTU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGRvdWJsZUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkRvdWJsZSB1bmJveGlu
ZyBkb3VibGUgY2FzZSIpKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlIHVuYm94aW5nIGNvbnRpbnVhdGlvbiIpKTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIoYm94ZWRS
ZXN1bHQpLCBkb3VibGVDYXNlLCBpbnRDYXNlKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChp
c05vdEludDMyKGJveGVkUmVzdWx0KSwgdW5zdXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUoaW50Q2Fz
ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKGludENhc2UsIGRvdWJsZUNhc2UpOwogICAgICAgICAgICAgCkBAIC00NjIy
LDcgKzQ2NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgaW50MzJWYWx1ZSA9IG1fb3V0
LmNhc3RUb0ludDMyKHZhbHVlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAg
bV9vdXQuZXF1YWwobV9vdXQuc2lnbkV4dChpbnQzMlZhbHVlLCBtX291dC5pbnQ2NCksIHZhbHVl
KSwKLSAgICAgICAgICAgIGlzSW50MzIsIGlzRG91YmxlKTsKKyAgICAgICAgICAgIHVuc3VyZShp
c0ludDMyKSwgdW5zdXJlKGlzRG91YmxlKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW50MzIsIGlzRG91YmxlKTsKICAgICAgICAg
CkBAIC00OTEzLDcgKzQ5NjEsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBwcmlt
aXRpdmVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzcGVjdWxhdGVPYmplY3RPck90aGVy
IHByaW1pdGl2ZSBjYXNlIikpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoInNwZWN1bGF0ZU9iamVjdE9yT3RoZXIgY29udGludWF0aW9u
IikpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90Q2VsbCh2YWx1ZSksIHBy
aW1pdGl2ZUNhc2UsIGNlbGxDYXNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90Q2VsbCh2
YWx1ZSksIHVuc3VyZShwcmltaXRpdmVDYXNlKSwgdW5zdXJlKGNlbGxDYXNlKSk7CiAgICAgICAg
IAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNl
LCBwcmltaXRpdmVDYXNlKTsKICAgICAgICAgCkBAIC00OTczLDcgKzUwMjEsNyBAQCBwcml2YXRl
OgogICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihsb3dDZWxsKGVkZ2Up
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOwogICAgICAgICBtX291dC5icmFuY2goCiAgICAg
ICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmUsIG1fb3V0LmNvbnN0SW50UHRyKHZtKCkuc3Ry
aW5nU3RydWN0dXJlLmdldCgpKSksCi0gICAgICAgICAgICBjb250aW51YXRpb24sIG5vdFN0cmlu
Zyk7CisgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdFN0cmluZykp
OwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhub3RTdHJpbmcsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVj
dEZvclN0cnVjdHVyZShlZGdlLCBzdHJ1Y3R1cmUpOwpAQCAtNTA4Miw3ICs1MTMwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsID0gRlRMX05FV19CTE9DSyhtX291dCwg
KCJTdG9yZSBiYXJyaWVyIGlzIGNlbGwgYmxvY2siKSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUu
Zm9yTm9kZSh2YWx1ZUVkZ2Uubm9kZSgpKS5jb3VsZEJlVHlwZShTcGVjQ2VsbCkpCi0gICAgICAg
ICAgICBtX291dC5icmFuY2goaXNOb3RDZWxsKHZhbHVlKSwgY29udGludWF0aW9uLCBpc0NlbGwp
OworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90Q2VsbCh2YWx1ZSksIHVuc3VyZShjb250
aW51YXRpb24pLCB1bnN1cmUoaXNDZWxsKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoaXNDZWxsKTsKIApAQCAtNTEwNywxMyArNTE1NSwxNiBAQCBwcml2YXRlOgogICAg
ICAgICBMQmFzaWNCbG9jayBidWZmZXJJc0Z1bGwgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN0
b3JlIGJhcnJpZXIgYnVmZmVyIGlzIGZ1bGwiKSk7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIG1h
cmsgYnl0ZS4gCi0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm84KGxvYWRNYXJrQnl0
ZShiYXNlKSksIGNvbnRpbnVhdGlvbiwgaXNNYXJrZWQpOworICAgICAgICBtX291dC5icmFuY2go
CisgICAgICAgICAgICBtX291dC5pc1plcm84KGxvYWRNYXJrQnl0ZShiYXNlKSksIHVzdWFsbHko
Y29udGludWF0aW9uKSwgcmFyZWx5KGlzTWFya2VkKSk7CiAKICAgICAgICAgLy8gQXBwZW5kIHRv
IHRoZSB3cml0ZSBiYXJyaWVyIGJ1ZmZlci4KICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhpc01hcmtlZCwgYnVmZmVySGFzU3BhY2UpOwogICAgICAgICBMVmFs
dWUgY3VycmVudEJ1ZmZlckluZGV4ID0gbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZ2bSgp
LmhlYXAud3JpdGVCYXJyaWVyQnVmZmVyKCkubV9jdXJyZW50SW5kZXgpKTsKICAgICAgICAgTFZh
bHVlIGJ1ZmZlckNhcGFjaXR5ID0gbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZ2bSgpLmhl
YXAud3JpdGVCYXJyaWVyQnVmZmVyKCkubV9jYXBhY2l0eSkpOwotICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQubGVzc1RoYW4oY3VycmVudEJ1ZmZlckluZGV4LCBidWZmZXJDYXBhY2l0eSksIGJ1
ZmZlckhhc1NwYWNlLCBidWZmZXJJc0Z1bGwpOworICAgICAgICBtX291dC5icmFuY2goCisgICAg
ICAgICAgICBtX291dC5sZXNzVGhhbihjdXJyZW50QnVmZmVySW5kZXgsIGJ1ZmZlckNhcGFjaXR5
KSwKKyAgICAgICAgICAgIHVzdWFsbHkoYnVmZmVySGFzU3BhY2UpLCByYXJlbHkoYnVmZmVySXNG
dWxsKSk7CiAKICAgICAgICAgLy8gQnVmZmVyIGhhcyBzcGFjZSwgc3RvcmUgdG8gaXQuCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGJ1ZmZlckhhc1NwYWNlLCBidWZmZXJJc0Z1bGwpOwpAQCAtNTE5
Myw3ICs1MjQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgK
ICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82NChtX291dC5sb2FkNjQobV9vdXQuYWJzb2x1dGUo
dm0oKS5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpKSwKLSAgICAgICAgICAgIG1faGFuZGxlRXhjZXB0
aW9ucywgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIHJhcmVseShtX2hhbmRsZUV4Y2VwdGlv
bnMpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uKTsKICAgICB9CkBAIC01MjMzLDcgKzUyODQsNyBAQCBwcml2YXRl
OgogICAgICAgICBMQmFzaWNCbG9jayBmYWlsQ2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgi
T1NSIGV4aXQgZmFpbENhc2UgZm9yICIsIG1fbm9kZSkpOwogICAgICAgICBjb250aW51YXRpb24g
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk9TUiBleGl0IGNvbnRpbnVhdGlvbiBmb3IgIiwgbV9u
b2RlKSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5icmFuY2goZmFpbENvbmRpdGlvbiwgZmFp
bENhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIG1fb3V0LmJyYW5jaChmYWlsQ29uZGl0aW9u
LCByYXJlbHkoZmFpbENhc2UpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwogICAgICAgICAKICAg
ICAgICAgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhmYWlsQ2FzZSwgY29udGludWF0aW9uKTsK
ICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCShy
ZXZpc2lvbiAxNjQzNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDEwNCBAQCBPdXRwdXQ6On5PdXRwdXQoKQog
ICAgIGxsdm0tPkRpc3Bvc2VCdWlsZGVyKG1fYnVpbGRlcik7CiB9CiAKK3ZvaWQgT3V0cHV0Ojpp
bml0aWFsaXplKExNb2R1bGUgbW9kdWxlLCBMVmFsdWUgZnVuY3Rpb24sIEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkmIGhlYXBzKQoreworICAgIEludHJpbnNpY1JlcG9zaXRvcnk6OmluaXRpYWxpemUo
bW9kdWxlKTsKKyAgICBtX2Z1bmN0aW9uID0gZnVuY3Rpb247CisgICAgbV9oZWFwcyA9ICZoZWFw
czsKK30KKworTEJhc2ljQmxvY2sgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaywg
TEJhc2ljQmxvY2sgbmV4dEJsb2NrKQoreworICAgIGFwcGVuZFRvKGJsb2NrKTsKKyAgICByZXR1
cm4gaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKG5leHRCbG9jayk7Cit9CisKK3ZvaWQgT3V0cHV0Ojph
cHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaykKK3sKKyAgICBtX2Jsb2NrID0gYmxvY2s7CisgICAg
CisgICAgbGx2bS0+UG9zaXRpb25CdWlsZGVyQXRFbmQobV9idWlsZGVyLCBibG9jayk7Cit9CisK
K0xCYXNpY0Jsb2NrIE91dHB1dDo6bmV3QmxvY2soY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBp
ZiAoIW1fbmV4dEJsb2NrKQorICAgICAgICByZXR1cm4gYXBwZW5kQmFzaWNCbG9jayhtX2NvbnRl
eHQsIG1fZnVuY3Rpb24sIG5hbWUpOworICAgIHJldHVybiBpbnNlcnRCYXNpY0Jsb2NrKG1fY29u
dGV4dCwgbV9uZXh0QmxvY2ssIG5hbWUpOworfQorCitMVmFsdWUgT3V0cHV0OjpzZW5zaWJsZURv
dWJsZVRvSW50KExWYWx1ZSB2YWx1ZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChpc1g4NigpKTsK
KyAgICByZXR1cm4gY2FsbCgKKyAgICAgICAgeDg2U1NFMkN2dFRTRDJTSUludHJpbnNpYygpLAor
ICAgICAgICBpbnNlcnRFbGVtZW50KAorICAgICAgICAgICAgaW5zZXJ0RWxlbWVudChnZXRVbmRl
Zih2ZWN0b3JUeXBlKGRvdWJsZVR5cGUsIDIpKSwgdmFsdWUsIGludDMyWmVybyksCisgICAgICAg
ICAgICBkb3VibGVaZXJvLCBpbnQzMk9uZSkpOworfQorCitMVmFsdWUgT3V0cHV0Ojpsb2FkKFR5
cGVkUG9pbnRlciBwb2ludGVyLCBMVHlwZSByZWZUeXBlKQoreworICAgIExWYWx1ZSByZXN1bHQg
PSBnZXQoaW50VG9QdHIocG9pbnRlci52YWx1ZSgpLCByZWZUeXBlKSk7CisgICAgcG9pbnRlci5o
ZWFwKCkuZGVjb3JhdGVJbnN0cnVjdGlvbihyZXN1bHQsICptX2hlYXBzKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit2b2lkIE91dHB1dDo6c3RvcmUoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50
ZXIgcG9pbnRlciwgTFR5cGUgcmVmVHlwZSkKK3sKKyAgICBMVmFsdWUgcmVzdWx0ID0gc2V0KHZh
bHVlLCBpbnRUb1B0cihwb2ludGVyLnZhbHVlKCksIHJlZlR5cGUpKTsKKyAgICBwb2ludGVyLmhl
YXAoKS5kZWNvcmF0ZUluc3RydWN0aW9uKHJlc3VsdCwgKm1faGVhcHMpOworfQorCitMVmFsdWUg
T3V0cHV0OjpiYXNlSW5kZXgoTFZhbHVlIGJhc2UsIExWYWx1ZSBpbmRleCwgU2NhbGUgc2NhbGUs
IHB0cmRpZmZfdCBvZmZzZXQpCit7CisgICAgTFZhbHVlIGFjY3VtdWxhdGVkT2Zmc2V0OworICAg
ICAgICAKKyAgICBzd2l0Y2ggKHNjYWxlKSB7CisgICAgY2FzZSBTY2FsZU9uZToKKyAgICAgICAg
YWNjdW11bGF0ZWRPZmZzZXQgPSBpbmRleDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY2Fs
ZVR3bzoKKyAgICAgICAgYWNjdW11bGF0ZWRPZmZzZXQgPSBzaGwoaW5kZXgsIGludFB0ck9uZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2NhbGVGb3VyOgorICAgICAgICBhY2N1bXVsYXRl
ZE9mZnNldCA9IHNobChpbmRleCwgaW50UHRyVHdvKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTY2FsZUVpZ2h0OgorICAgIGNhc2UgU2NhbGVQdHI6CisgICAgICAgIGFjY3VtdWxhdGVkT2Zm
c2V0ID0gc2hsKGluZGV4LCBpbnRQdHJUaHJlZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAgICAgCisgICAgaWYgKG9mZnNldCkKKyAgICAgICAgYWNjdW11bGF0ZWRPZmZzZXQgPSBhZGQo
YWNjdW11bGF0ZWRPZmZzZXQsIGNvbnN0SW50UHRyKG9mZnNldCkpOworICAgICAgICAKKyAgICBy
ZXR1cm4gYWRkKGJhc2UsIGFjY3VtdWxhdGVkT2Zmc2V0KTsKK30KKwordm9pZCBPdXRwdXQ6OmJy
YW5jaChMVmFsdWUgY29uZGl0aW9uLCBMQmFzaWNCbG9jayB0YWtlbiwgV2VpZ2h0IHRha2VuV2Vp
Z2h0LCBMQmFzaWNCbG9jayBub3RUYWtlbiwgV2VpZ2h0IG5vdFRha2VuV2VpZ2h0KQoreworICAg
IExWYWx1ZSBicmFuY2ggPSBidWlsZENvbmRCcihtX2J1aWxkZXIsIGNvbmRpdGlvbiwgdGFrZW4s
IG5vdFRha2VuKTsKKyAgICAKKyAgICBpZiAoIXRha2VuV2VpZ2h0IHx8ICFub3RUYWtlbldlaWdo
dCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGRvdWJsZSB0b3RhbCA9IHRha2VuV2VpZ2h0
LnZhbHVlKCkgKyBub3RUYWtlbldlaWdodC52YWx1ZSgpOworICAgIAorICAgIHNldE1ldGFkYXRh
KAorICAgICAgICBicmFuY2gsIHByb2ZLaW5kLAorICAgICAgICBtZE5vZGUoCisgICAgICAgICAg
ICBtX2NvbnRleHQsIGJyYW5jaFdlaWdodHMsCisgICAgICAgICAgICBjb25zdEludDMyKHRha2Vu
V2VpZ2h0LnNjYWxlVG9Ub3RhbCh0b3RhbCkpLAorICAgICAgICAgICAgY29uc3RJbnQzMihub3RU
YWtlbldlaWdodC5zY2FsZVRvVG90YWwodG90YWwpKSkpOworfQorCit2b2lkIE91dHB1dDo6Y3Jh
c2hOb25UZXJtaW5hbCgpCit7CisgICAgY2FsbChpbnRUb1B0cihjb25zdEludFB0cihhYm9ydCks
IHBvaW50ZXJUeXBlKGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSkpKSk7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAxNjQzNzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSwxMCBAQAogI2luY2x1ZGUgIkZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNsdWRl
ICJGVExDb21tb25WYWx1ZXMuaCIKICNpbmNsdWRlICJGVExJbnRyaW5zaWNSZXBvc2l0b3J5Lmgi
CisjaW5jbHVkZSAiRlRMU3dpdGNoQ2FzZS5oIgogI2luY2x1ZGUgIkZUTFR5cGVkUG9pbnRlci5o
IgorI2luY2x1ZGUgIkZUTFdlaWdodC5oIgorI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0Lmgi
CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKQEAgLTcwLDEyICs3Myw3IEBAIHB1YmxpYzoKICAgICBPdXRwdXQoTENv
bnRleHQpOwogICAgIH5PdXRwdXQoKTsKICAgICAKLSAgICB2b2lkIGluaXRpYWxpemUoTE1vZHVs
ZSBtb2R1bGUsIExWYWx1ZSBmdW5jdGlvbiwgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgaGVhcHMp
Ci0gICAgewotICAgICAgICBJbnRyaW5zaWNSZXBvc2l0b3J5Ojppbml0aWFsaXplKG1vZHVsZSk7
Ci0gICAgICAgIG1fZnVuY3Rpb24gPSBmdW5jdGlvbjsKLSAgICAgICAgbV9oZWFwcyA9ICZoZWFw
czsKLSAgICB9CisgICAgdm9pZCBpbml0aWFsaXplKExNb2R1bGUsIExWYWx1ZSwgQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeSYpOwogICAgIAogICAgIExCYXNpY0Jsb2NrIGluc2VydE5ld0Jsb2Nrc0Jl
Zm9yZShMQmFzaWNCbG9jayBuZXh0QmxvY2spCiAgICAgewpAQCAtODQsMjQgKzgyLDExIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGxhc3ROZXh0QmxvY2s7CiAgICAgfQogICAgIAotICAgIExC
YXNpY0Jsb2NrIGFwcGVuZFRvKExCYXNpY0Jsb2NrIGJsb2NrLCBMQmFzaWNCbG9jayBuZXh0Qmxv
Y2spCi0gICAgewotICAgICAgICBhcHBlbmRUbyhibG9jayk7Ci0gICAgICAgIHJldHVybiBpbnNl
cnROZXdCbG9ja3NCZWZvcmUobmV4dEJsb2NrKTsKLSAgICB9CisgICAgTEJhc2ljQmxvY2sgYXBw
ZW5kVG8oTEJhc2ljQmxvY2ssIExCYXNpY0Jsb2NrIG5leHRCbG9jayk7CiAgICAgCi0gICAgdm9p
ZCBhcHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaykKLSAgICB7Ci0gICAgICAgIG1fYmxvY2sgPSBi
bG9jazsKLSAgICAgICAgCi0gICAgICAgIGxsdm0tPlBvc2l0aW9uQnVpbGRlckF0RW5kKG1fYnVp
bGRlciwgYmxvY2spOwotICAgIH0KLSAgICBMQmFzaWNCbG9jayBuZXdCbG9jayhjb25zdCBjaGFy
KiBuYW1lID0gIiIpCi0gICAgewotICAgICAgICBpZiAoIW1fbmV4dEJsb2NrKQotICAgICAgICAg
ICAgcmV0dXJuIGFwcGVuZEJhc2ljQmxvY2sobV9jb250ZXh0LCBtX2Z1bmN0aW9uLCBuYW1lKTsK
LSAgICAgICAgcmV0dXJuIGluc2VydEJhc2ljQmxvY2sobV9jb250ZXh0LCBtX25leHRCbG9jaywg
bmFtZSk7Ci0gICAgfQorICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spOworICAgIAorICAg
IExCYXNpY0Jsb2NrIG5ld0Jsb2NrKGNvbnN0IGNoYXIqIG5hbWUgPSAiIik7CiAgICAgCiAgICAg
TFZhbHVlIHBhcmFtKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBnZXRQYXJhbShtX2Z1bmN0aW9u
LCBpbmRleCk7IH0KICAgICBMVmFsdWUgY29uc3RCb29sKGJvb2wgdmFsdWUpIHsgcmV0dXJuIGNv
bnN0SW50KGJvb2xlYW4sIHZhbHVlKTsgfQpAQCAtMTg5LDcgKzE3NCw2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGNhbGwoZG91YmxlU2luSW50cmluc2ljKCksIHZhbHVlKTsKICAgICB9CiAK
LQogICAgIExWYWx1ZSBkb3VibGVDb3MoTFZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGNhbGwoZG91YmxlQ29zSW50cmluc2ljKCksIHZhbHVlKTsKQEAgLTIwMCwxNyArMTg0LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gY2FsbChkb3VibGVTcXJ0SW50cmluc2ljKCksIHZh
bHVlKTsKICAgICB9CiAKLQogICAgIHN0YXRpYyBib29sIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQo
KSB7IHJldHVybiBpc1g4NigpOyB9Ci0gICAgTFZhbHVlIHNlbnNpYmxlRG91YmxlVG9JbnQoTFZh
bHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7Ci0gICAg
ICAgIHJldHVybiBjYWxsKAotICAgICAgICAgICAgeDg2U1NFMkN2dFRTRDJTSUludHJpbnNpYygp
LAotICAgICAgICAgICAgaW5zZXJ0RWxlbWVudCgKLSAgICAgICAgICAgICAgICBpbnNlcnRFbGVt
ZW50KGdldFVuZGVmKHZlY3RvclR5cGUoZG91YmxlVHlwZSwgMikpLCB2YWx1ZSwgaW50MzJaZXJv
KSwKLSAgICAgICAgICAgICAgICBkb3VibGVaZXJvLCBpbnQzMk9uZSkpOwotICAgIH0KKyAgICBM
VmFsdWUgc2Vuc2libGVEb3VibGVUb0ludChMVmFsdWUpOwogICAgIAogICAgIExWYWx1ZSBzaWdu
RXh0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRTRXh0KG1fYnVpbGRl
ciwgdmFsdWUsIHR5cGUpOyB9CiAgICAgTFZhbHVlIHplcm9FeHQoTFZhbHVlIHZhbHVlLCBMVHlw
ZSB0eXBlKSB7IHJldHVybiBidWlsZFpFeHQobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KQEAg
LTIzMywxNyArMjA4LDggQEAgcHVibGljOgogICAgIExWYWx1ZSBnZXQoTFZhbHVlIHJlZmVyZW5j
ZSkgeyByZXR1cm4gYnVpbGRMb2FkKG1fYnVpbGRlciwgcmVmZXJlbmNlKTsgfQogICAgIExWYWx1
ZSBzZXQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgcmVmZXJlbmNlKSB7IHJldHVybiBidWlsZFN0b3Jl
KG1fYnVpbGRlciwgdmFsdWUsIHJlZmVyZW5jZSk7IH0KICAgICAKLSAgICBMVmFsdWUgbG9hZChU
eXBlZFBvaW50ZXIgcG9pbnRlciwgTFR5cGUgcmVmVHlwZSkKLSAgICB7Ci0gICAgICAgIExWYWx1
ZSByZXN1bHQgPSBnZXQoaW50VG9QdHIocG9pbnRlci52YWx1ZSgpLCByZWZUeXBlKSk7Ci0gICAg
ICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1Y3Rpb24ocmVzdWx0LCAqbV9oZWFwcyk7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHZvaWQgc3RvcmUoTFZhbHVlIHZh
bHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlciwgTFR5cGUgcmVmVHlwZSkKLSAgICB7Ci0gICAgICAg
IExWYWx1ZSByZXN1bHQgPSBzZXQodmFsdWUsIGludFRvUHRyKHBvaW50ZXIudmFsdWUoKSwgcmVm
VHlwZSkpOwotICAgICAgICBwb2ludGVyLmhlYXAoKS5kZWNvcmF0ZUluc3RydWN0aW9uKHJlc3Vs
dCwgKm1faGVhcHMpOwotICAgIH0KKyAgICBMVmFsdWUgbG9hZChUeXBlZFBvaW50ZXIsIExUeXBl
IHJlZlR5cGUpOworICAgIHZvaWQgc3RvcmUoTFZhbHVlLCBUeXBlZFBvaW50ZXIsIExUeXBlIHJl
ZlR5cGUpOwogICAgIAogICAgIExWYWx1ZSBsb2FkOChUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBy
ZXR1cm4gbG9hZChwb2ludGVyLCByZWY4KTsgfQogICAgIExWYWx1ZSBsb2FkMTYoVHlwZWRQb2lu
dGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmMTYpOyB9CkBAIC0yODEsMzEg
KzI0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkZHJlc3MoZmllbGQsIGJhc2UsIG9m
ZnNldCArIGZpZWxkLm9mZnNldCgpKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGJhc2VJbmRl
eChMVmFsdWUgYmFzZSwgTFZhbHVlIGluZGV4LCBTY2FsZSBzY2FsZSwgcHRyZGlmZl90IG9mZnNl
dCA9IDApCi0gICAgewotICAgICAgICBMVmFsdWUgYWNjdW11bGF0ZWRPZmZzZXQ7Ci0gICAgICAg
IAotICAgICAgICBzd2l0Y2ggKHNjYWxlKSB7Ci0gICAgICAgIGNhc2UgU2NhbGVPbmU6Ci0gICAg
ICAgICAgICBhY2N1bXVsYXRlZE9mZnNldCA9IGluZGV4OwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU2NhbGVUd286Ci0gICAgICAgICAgICBhY2N1bXVsYXRlZE9mZnNldCA9IHNo
bChpbmRleCwgaW50UHRyT25lKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNj
YWxlRm91cjoKLSAgICAgICAgICAgIGFjY3VtdWxhdGVkT2Zmc2V0ID0gc2hsKGluZGV4LCBpbnRQ
dHJUd28pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2NhbGVFaWdodDoKLSAg
ICAgICAgY2FzZSBTY2FsZVB0cjoKLSAgICAgICAgICAgIGFjY3VtdWxhdGVkT2Zmc2V0ID0gc2hs
KGluZGV4LCBpbnRQdHJUaHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKG9mZnNldCkKLSAgICAgICAgICAgIGFjY3VtdWxhdGVkT2Zmc2V0
ID0gYWRkKGFjY3VtdWxhdGVkT2Zmc2V0LCBjb25zdEludFB0cihvZmZzZXQpKTsKLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiBhZGQoYmFzZSwgYWNjdW11bGF0ZWRPZmZzZXQpOwotICAgIH0KKyAg
ICBMVmFsdWUgYmFzZUluZGV4KExWYWx1ZSBiYXNlLCBMVmFsdWUgaW5kZXgsIFNjYWxlLCBwdHJk
aWZmX3Qgb2Zmc2V0ID0gMCk7CisKICAgICBUeXBlZFBvaW50ZXIgYmFzZUluZGV4KGNvbnN0IEFi
c3RyYWN0SGVhcCYgaGVhcCwgTFZhbHVlIGJhc2UsIExWYWx1ZSBpbmRleCwgU2NhbGUgc2NhbGUs
IHB0cmRpZmZfdCBvZmZzZXQgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIFR5cGVkUG9pbnRl
cihoZWFwLCBiYXNlSW5kZXgoYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpKTsKQEAgLTQxMiw5
ICszNTUsMzYgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB2b2lkIGp1bXAoTEJhc2ljQmxv
Y2sgZGVzdGluYXRpb24pIHsgYnVpbGRCcihtX2J1aWxkZXIsIGRlc3RpbmF0aW9uKTsgfQotICAg
IHZvaWQgYnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIExCYXNpY0Jsb2NrIHRha2VuLCBMQmFzaWNC
bG9jayBub3RUYWtlbikgeyBidWlsZENvbmRCcihtX2J1aWxkZXIsIGNvbmRpdGlvbiwgdGFrZW4s
IG5vdFRha2VuKTsgfQorICAgIHZvaWQgYnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIExCYXNpY0Js
b2NrIHRha2VuLCBXZWlnaHQgdGFrZW5XZWlnaHQsIExCYXNpY0Jsb2NrIG5vdFRha2VuLCBXZWln
aHQgbm90VGFrZW5XZWlnaHQpOworICAgIHZvaWQgYnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIFdl
aWdodGVkVGFyZ2V0IHRha2VuLCBXZWlnaHRlZFRhcmdldCBub3RUYWtlbikKKyAgICB7CisgICAg
ICAgIGJyYW5jaChjb25kaXRpb24sIHRha2VuLnRhcmdldCgpLCB0YWtlbi53ZWlnaHQoKSwgbm90
VGFrZW4udGFyZ2V0KCksIG5vdFRha2VuLndlaWdodCgpKTsKKyAgICB9CisgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAgICB2b2lkIHN3aXRjaEluc3RydWN0aW9uKExW
YWx1ZSB2YWx1ZSwgY29uc3QgVmVjdG9yVHlwZSYgY2FzZXMsIExCYXNpY0Jsb2NrIGZhbGxUaHJv
dWdoKSB7IGJ1aWxkU3dpdGNoKG1fYnVpbGRlciwgdmFsdWUsIGNhc2VzLCBmYWxsVGhyb3VnaCk7
IH0KKyAgICB2b2lkIHN3aXRjaEluc3RydWN0aW9uKExWYWx1ZSB2YWx1ZSwgY29uc3QgVmVjdG9y
VHlwZSYgY2FzZXMsIExCYXNpY0Jsb2NrIGZhbGxUaHJvdWdoLCBXZWlnaHQgZmFsbFRocm91Z2hX
ZWlnaHQpCisgICAgeworICAgICAgICBMVmFsdWUgaW5zdCA9IGJ1aWxkU3dpdGNoKG1fYnVpbGRl
ciwgdmFsdWUsIGNhc2VzLCBmYWxsVGhyb3VnaCk7CisgICAgICAgIAorICAgICAgICBkb3VibGUg
dG90YWwgPSAwOworICAgICAgICBpZiAoIWZhbGxUaHJvdWdoV2VpZ2h0KQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB0b3RhbCArPSBmYWxsVGhyb3VnaFdlaWdodC52YWx1ZSgpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjYXNlcy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
IGlmICghY2FzZXNbaV0ud2VpZ2h0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgdG90YWwgKz0gY2FzZXNbaV0ud2VpZ2h0KCkudmFsdWUoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgVmVjdG9yPExWYWx1ZT4gbWRBcmdzOworICAgICAgICBtZEFyZ3MuYXBw
ZW5kKGJyYW5jaFdlaWdodHMpOworICAgICAgICBtZEFyZ3MuYXBwZW5kKGNvbnN0SW50MzIoZmFs
bFRocm91Z2hXZWlnaHQuc2NhbGVUb1RvdGFsKHRvdGFsKSkpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY2FzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtZEFyZ3MuYXBw
ZW5kKGNvbnN0SW50MzIoY2FzZXNbaV0ud2VpZ2h0KCkuc2NhbGVUb1RvdGFsKHRvdGFsKSkpOwor
ICAgICAgICAKKyAgICAgICAgc2V0TWV0YWRhdGEoaW5zdCwgcHJvZktpbmQsIG1kTm9kZShtX2Nv
bnRleHQsIG1kQXJncykpOworICAgIH0KKyAgICAKICAgICB2b2lkIHJldChMVmFsdWUgdmFsdWUp
IHsgYnVpbGRSZXQobV9idWlsZGVyLCB2YWx1ZSk7IH0KICAgICAKICAgICB2b2lkIHVucmVhY2hh
YmxlKCkgeyBidWlsZFVucmVhY2hhYmxlKG1fYnVpbGRlcik7IH0KQEAgLTQyNCwxMCArMzk0LDgg
QEAgcHVibGljOgogICAgICAgICBjYWxsKHRyYXBJbnRyaW5zaWMoKSk7CiAgICAgfQogICAgIAot
ICAgIHZvaWQgY3Jhc2hOb25UZXJtaW5hbCgpCi0gICAgewotICAgICAgICBjYWxsKGludFRvUHRy
KGNvbnN0SW50UHRyKGFib3J0KSwgcG9pbnRlclR5cGUoZnVuY3Rpb25UeXBlKHZvaWRUeXBlKSkp
KTsKLSAgICB9CisgICAgdm9pZCBjcmFzaE5vblRlcm1pbmFsKCk7CisKICAgICB2b2lkIGNyYXNo
KCkKICAgICB7CiAgICAgICAgIGNyYXNoTm9uVGVybWluYWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU3dpdGNoQ2FzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU3dpdGNoQ2FzZS5oCShyZXZpc2lvbiAxNjQzNzYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN3aXRjaENhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMjMgKzMxLDI3IEBACiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKICNpbmNsdWRlICJGVExBYmJy
ZXZpYXRlZFR5cGVzLmgiCisjaW5jbHVkZSAiRlRMV2VpZ2h0LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKIAogY2xhc3MgU3dpdGNoQ2FzZSB7CiBwdWJsaWM6Ci0gICAgU3dp
dGNoQ2FzZShMVmFsdWUgdmFsdWUsIExCYXNpY0Jsb2NrIHRhcmdldCkKKyAgICBTd2l0Y2hDYXNl
KExWYWx1ZSB2YWx1ZSwgTEJhc2ljQmxvY2sgdGFyZ2V0LCBXZWlnaHQgd2VpZ2h0KQogICAgICAg
ICA6IG1fdmFsdWUodmFsdWUpCiAgICAgICAgICwgbV90YXJnZXQodGFyZ2V0KQorICAgICAgICAs
IG1fd2VpZ2h0KHdlaWdodCkKICAgICB7CiAgICAgfQogCiAgICAgTFZhbHVlIHZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIExCYXNpY0Jsb2NrIHRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGFyZ2V0OyB9CisgICAgV2VpZ2h0IHdlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2VpZ2h0OyB9CiAKIHByaXZhdGU6CiAgICAgTFZhbHVlIG1fdmFsdWU7CiAgICAgTEJhc2ljQmxv
Y2sgbV90YXJnZXQ7CisgICAgV2VpZ2h0IG1fd2VpZ2h0OwogfTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFdlaWdodC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgRlRMV2VpZ2h0X2gKKyNkZWZpbmUgRlRMV2VpZ2h0X2gK
KworI2lmIEVOQUJMRShGVExfSklUKQorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RlRMIHsKKworY2xhc3MgV2VpZ2h0IHsKK3B1YmxpYzoKKyAgICBXZWlnaHQoKQorICAgICAgICA6
IG1fdmFsdWUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpKQorICAgIHsK
KyAgICB9CisgICAgCisgICAgZXhwbGljaXQgV2VpZ2h0KGZsb2F0IHZhbHVlKQorICAgICAgICA6
IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29sIGlzU2V0KCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSA9PSBtX3ZhbHVlOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIAorICAgIGZsb2F0IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQorICAgIAorICAgIHVuc2lnbmVkIHNjYWxlVG9Ub3RhbChkb3Vi
bGUgdG90YWwpIGNvbnN0CisgICAgeworICAgICAgICAvLyBMTFZNIGFjY2VwdHMgYnJhbmNoIDMy
LWJpdCB1bnNpZ25lZCBicmFuY2ggd2VpZ2h0cyBidXQgaW4gZHVtcHMgaXQgbWlnaHQKKyAgICAg
ICAgLy8gZGlzcGxheSB0aGVtIGFzIHNpZ25lZCB2YWx1ZXMuIFdlIGRvbid0IG5lZWQgYWxsIDMy
IGJpdHMsIHNvIHdlIGp1c3QgdXNlIHRoZQorICAgICAgICAvLyAzMSBiaXRzLgorICAgICAgICBk
b3VibGUgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3ZhbHVlKSAqIElOVF9NQVggLyB0
b3RhbDsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgaWYgKHJlc3VsdCA+IElOVF9NQVgpCisgICAgICAgICAgICByZXR1cm4gSU5UX01BWDsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZXN1bHQpOworICAgIH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgZmxvYXQgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQorCisjZW5kaWYgLy8gRlRMV2Vp
Z2h0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHRlZFRhcmdl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMV2VpZ2h0ZWRU
YXJnZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMV2Vp
Z2h0ZWRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRlRMV2VpZ2h0ZWRU
YXJnZXRfaAorI2RlZmluZSBGVExXZWlnaHRlZFRhcmdldF9oCisKKyNpZiBFTkFCTEUoRlRMX0pJ
VCkKKworI2luY2x1ZGUgIkZUTEFiYnJldmlhdGVkVHlwZXMuaCIKKyNpbmNsdWRlICJGVExXZWln
aHQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitjbGFzcyBXZWlnaHRl
ZFRhcmdldCB7CitwdWJsaWM6CisgICAgV2VpZ2h0ZWRUYXJnZXQoKQorICAgICAgICA6IG1fdGFy
Z2V0KG51bGxwdHIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBXZWlnaHRlZFRhcmdldChMQmFz
aWNCbG9jayB0YXJnZXQsIFdlaWdodCB3ZWlnaHQpCisgICAgICAgIDogbV90YXJnZXQodGFyZ2V0
KQorICAgICAgICAsIG1fd2VpZ2h0KHdlaWdodCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFdl
aWdodGVkVGFyZ2V0KExCYXNpY0Jsb2NrIHRhcmdldCwgZmxvYXQgd2VpZ2h0KQorICAgICAgICA6
IG1fdGFyZ2V0KHRhcmdldCkKKyAgICAgICAgLCBtX3dlaWdodCh3ZWlnaHQpCisgICAgeworICAg
IH0KKyAgICAKKyAgICBMQmFzaWNCbG9jayB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3Rhcmdl
dDsgfQorICAgIFdlaWdodCB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3dlaWdodDsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBMQmFzaWNCbG9jayBtX3RhcmdldDsKKyAgICBXZWlnaHQgbV93ZWln
aHQ7Cit9OworCisvLyBIZWxwZXJzIGZvciBjcmVhdGluZyB3ZWlnaHRlZCB0YXJnZXRzIGZvciBz
dGF0aWNhbGx5IGtub3duIChvciB1bmtub3duKSBicmFuY2gKKy8vIHByb2ZpbGVzLgorCitpbmxp
bmUgV2VpZ2h0ZWRUYXJnZXQgdXN1YWxseShMQmFzaWNCbG9jayBibG9jaykKK3sKKyAgICByZXR1
cm4gV2VpZ2h0ZWRUYXJnZXQoYmxvY2ssIDEpOworfQorCitpbmxpbmUgV2VpZ2h0ZWRUYXJnZXQg
cmFyZWx5KExCYXNpY0Jsb2NrIGJsb2NrKQoreworICAgIHJldHVybiBXZWlnaHRlZFRhcmdldChi
bG9jaywgMCk7Cit9CisKKy8vIFRoaXMgbWVhbnMgd2UgbGV0IExMVk0gZmlndXJlIGl0IG91dCBi
YXNpYyBvbiBpdHMgc3RhdGljIGVzdGltYXRlcy4gTExWTSdzIHN0YXRpYworLy8gZXN0aW1hdGVz
IGFyZSB1c3VhbGx5IHByZXR0eSBkYXJuIGdvb2QsIHNvIHRoZXJlJ3MgZ2VuZXJhbGx5IG5vdGhp
bmcgd3Jvbmcgd2l0aAorLy8gdXNpbmcgdGhpcy4KK2lubGluZSBXZWlnaHRlZFRhcmdldCB1bnN1
cmUoTEJhc2ljQmxvY2sgYmxvY2spCit7CisgICAgcmV0dXJuIFdlaWdodGVkVGFyZ2V0KGJsb2Nr
LCBXZWlnaHQoKSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8v
IEVOQUJMRShGVExfSklUKQorCisjZW5kaWYgLy8gRlRMV2VpZ2h0ZWRUYXJnZXRfaAorCg==
</data>
<flag name="review"
          id="248772"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>