<?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>182965</bug_id>
          
          <creation_ts>2018-02-20 04:56:08 -0800</creation_ts>
          <short_desc>[FTL] Support PutByVal(ArrayStorage/SlowPutArrayStorage)</short_desc>
          <delta_ts>2018-02-27 22:47:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1400728</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-20 04:56:08 -0800</bug_when>
    <thetext>[FTL] Support PutByVal(ArrayStorage/SlowPutArrayStorage)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400729</commentid>
    <comment_count>1</comment_count>
      <attachid>334260</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-20 04:56:23 -0800</bug_when>
    <thetext>Created attachment 334260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400733</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-20 04:59:29 -0800</bug_when>
    <thetext>Attachment 334260 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2084:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2084:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4196:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4196:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4222:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4222:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3077:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3077:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3161:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3161:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 10 in 7 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>1401396</commentid>
    <comment_count>3</comment_count>
      <attachid>334444</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-22 02:16:57 -0800</bug_when>
    <thetext>Created attachment 334444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401397</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-22 02:19:49 -0800</bug_when>
    <thetext>Attachment 334444 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2084:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2084:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4196:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4196:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4222:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4222:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3077:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3077:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3161:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3161:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 10 in 10 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>1401976</commentid>
    <comment_count>5</comment_count>
      <attachid>334592</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-25 22:59:41 -0800</bug_when>
    <thetext>Created attachment 334592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401977</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-25 23:01:57 -0800</bug_when>
    <thetext>Attachment 334592 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2084:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2084:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4199:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4199:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4225:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4225:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3077:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3077:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3161:  Wrong number of spaces before statement. (expected: 28)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3161:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 10 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>1402036</commentid>
    <comment_count>7</comment_count>
      <attachid>334592</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-26 06:06:40 -0800</bug_when>
    <thetext>Comment on attachment 334592
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        This is the last change for FTL to support all the types of DFG nodes.

Except for CreateThis. I’ll change ths part later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402059</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-26 09:00:26 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; Comment on attachment 334592 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334592&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt; +        This is the last change for FTL to support all the types of DFG nodes.
&gt; 
&gt; Except for CreateThis. I’ll change ths part later.

FYI, adding CreateThis will lead to a performance regression, or at least it did when I added it. I remember it ended up having some effects on ICs which made certain GetByOffsets turn into GetByOd, which caused object allocation sinking to not kick in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402061</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-26 09:02:59 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #8)
&gt; (In reply to Yusuke Suzuki from comment #7)
&gt; &gt; Comment on attachment 334592 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=334592&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:11
&gt; &gt; &gt; +        This is the last change for FTL to support all the types of DFG nodes.
&gt; &gt; 
&gt; &gt; Except for CreateThis. I’ll change ths part later.
&gt; 
&gt; FYI, adding CreateThis will lead to a performance regression, or at least it
&gt; did when I added it. I remember it ended up having some effects on ICs which
&gt; made certain GetByOffsets turn into GetByOd, which caused object allocation
&gt; sinking to not kick in.

See:
https://bugs.webkit.org/show_bug.cgi?id=164904</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402137</commentid>
    <comment_count>10</comment_count>
      <attachid>334592</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-26 12:35:22 -0800</bug_when>
    <thetext>Comment on attachment 334592
Patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:810
&gt; +void JIT_OPERATION operationPutDoubleByValDirectBeyondArrayBoundsStrict(ExecState* exec, JSObject* array, int32_t index, double value)

Is this actually guaranteed to be a JSArray* here? If so, I&apos;d give it that type. Otherwise, perhaps just name the variable &quot;object&quot;.

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:826
&gt; +void JIT_OPERATION operationPutDoubleByValDirectBeyondArrayBoundsNonStrict(ExecState* exec, JSObject* array, int32_t index, double value)

ditto

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2084
&gt; +                m_jit.codeBlock()-&gt;isStrictMode()
&gt; +                    ? (node-&gt;op() == PutByValDirect ? operationPutDoubleByValDirectBeyondArrayBoundsStrict : operationPutDoubleByValBeyondArrayBoundsStrict)
&gt; +                    : (node-&gt;op() == PutByValDirect ? operationPutDoubleByValDirectBeyondArrayBoundsNonStrict : operationPutDoubleByValBeyondArrayBoundsNonStrict),

Was this doing the wrong thing before?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4274
&gt; +            LBasicBlock notHoleCase = m_out.newBlock();

nit: This isn&apos;t really &quot;notHoleCase&quot; since the hole case may jump here. I&apos;d call this &quot;doStoreCase&quot; or something like that

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4300
&gt; +                        index, m_out.load32NonNegative(storage, m_heaps.Butterfly_publicLength)),

Is it worth defining an ArrayStorage_publicLength just in case someone changes the memory layout to not be the same as Butterfly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402289</commentid>
    <comment_count>11</comment_count>
      <attachid>334592</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-26 23:26:52 -0800</bug_when>
    <thetext>Comment on attachment 334592
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt;&gt;&gt; +        This is the last change for FTL to support all the types of DFG nodes.
&gt;&gt;&gt; 
&gt;&gt;&gt; Except for CreateThis. I’ll change ths part later.
&gt;&gt; 
&gt;&gt; FYI, adding CreateThis will lead to a performance regression, or at least it did when I added it. I remember it ended up having some effects on ICs which made certain GetByOffsets turn into GetByOd, which caused object allocation sinking to not kick in.
&gt; 
&gt; See:
&gt; https://bugs.webkit.org/show_bug.cgi?id=164904

Yeah

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:810
&gt;&gt; +void JIT_OPERATION operationPutDoubleByValDirectBeyondArrayBoundsStrict(ExecState* exec, JSObject* array, int32_t index, double value)
&gt; 
&gt; Is this actually guaranteed to be a JSArray* here? If so, I&apos;d give it that type. Otherwise, perhaps just name the variable &quot;object&quot;.

Yeah, it would be JSObject* if the indexing type is NonArray.
I&apos;ve changed the name to `object`.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:826
&gt;&gt; +void JIT_OPERATION operationPutDoubleByValDirectBeyondArrayBoundsNonStrict(ExecState* exec, JSObject* array, int32_t index, double value)
&gt; 
&gt; ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2084
&gt;&gt; +                    : (node-&gt;op() == PutByValDirect ? operationPutDoubleByValDirectBeyondArrayBoundsNonStrict : operationPutDoubleByValBeyondArrayBoundsNonStrict),
&gt; 
&gt; Was this doing the wrong thing before?

No. Basically, this was OK. But for consistency, I&apos;ve introduced this.
I described the detail in ChangeLog.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4274
&gt;&gt; +            LBasicBlock notHoleCase = m_out.newBlock();
&gt; 
&gt; nit: This isn&apos;t really &quot;notHoleCase&quot; since the hole case may jump here. I&apos;d call this &quot;doStoreCase&quot; or something like that

OK, changed it to `doStoreCase`.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4300
&gt;&gt; +                        index, m_out.load32NonNegative(storage, m_heaps.Butterfly_publicLength)),
&gt; 
&gt; Is it worth defining an ArrayStorage_publicLength just in case someone changes the memory layout to not be the same as Butterfly?

Sounds nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402290</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-26 23:32:20 -0800</bug_when>
    <thetext>Committed r229053: &lt;https://trac.webkit.org/changeset/229053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402291</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-26 23:33:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/37932289&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402520</commentid>
    <comment_count>14</comment_count>
      <attachid>334592</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-27 21:05:09 -0800</bug_when>
    <thetext>Comment on attachment 334592
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4300
&gt;&gt;&gt; +                        index, m_out.load32NonNegative(storage, m_heaps.Butterfly_publicLength)),
&gt;&gt; 
&gt;&gt; Is it worth defining an ArrayStorage_publicLength just in case someone changes the memory layout to not be the same as Butterfly?
&gt; 
&gt; Sounds nice. Fixed.

Actually, maybe I’m wrong here. We need to make sure everywhere someone uses publicLength for butterfly of array storage, they use this new field. Otherwise, the B3 might think these fields don’t alias, and will make optimizations that may break programs. We should probably go back to what you had before actually, unless we fix all sites that use it as well. Seems easier to just revert. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402532</commentid>
    <comment_count>15</comment_count>
      <attachid>334592</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-27 22:38:22 -0800</bug_when>
    <thetext>Comment on attachment 334592
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4300
&gt;&gt;&gt;&gt; +                        index, m_out.load32NonNegative(storage, m_heaps.Butterfly_publicLength)),
&gt;&gt;&gt; 
&gt;&gt;&gt; Is it worth defining an ArrayStorage_publicLength just in case someone changes the memory layout to not be the same as Butterfly?
&gt;&gt; 
&gt;&gt; Sounds nice. Fixed.
&gt; 
&gt; Actually, maybe I’m wrong here. We need to make sure everywhere someone uses publicLength for butterfly of array storage, they use this new field. Otherwise, the B3 might think these fields don’t alias, and will make optimizations that may break programs. We should probably go back to what you had before actually, unless we fix all sites that use it as well. Seems easier to just revert. WDYT?

Yeah, because of this, my landing patch makes ArrayStorage_vectorLength and ArrayStorage_publicLength as complete alias to Butterfly_vectorLength and Butterfly_publicLength. https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.cpp#L62-L63
So I think it is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402533</commentid>
    <comment_count>16</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-27 22:47:50 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #15)
&gt; Comment on attachment 334592 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334592&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4300
&gt; &gt;&gt;&gt;&gt; +                        index, m_out.load32NonNegative(storage, m_heaps.Butterfly_publicLength)),
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Is it worth defining an ArrayStorage_publicLength just in case someone changes the memory layout to not be the same as Butterfly?
&gt; &gt;&gt; 
&gt; &gt;&gt; Sounds nice. Fixed.
&gt; &gt; 
&gt; &gt; Actually, maybe I’m wrong here. We need to make sure everywhere someone uses publicLength for butterfly of array storage, they use this new field. Otherwise, the B3 might think these fields don’t alias, and will make optimizations that may break programs. We should probably go back to what you had before actually, unless we fix all sites that use it as well. Seems easier to just revert. WDYT?
&gt; 
&gt; Yeah, because of this, my landing patch makes ArrayStorage_vectorLength and
&gt; ArrayStorage_publicLength as complete alias to Butterfly_vectorLength and
&gt; Butterfly_publicLength.
&gt; https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/ftl/
&gt; FTLAbstractHeapRepository.cpp#L62-L63
&gt; So I think it is OK.

👍🏽</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334260</attachid>
            <date>2018-02-20 04:56:23 -0800</date>
            <delta_ts>2018-02-22 02:16:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182965-20180220215622.patch</filename>
            <type>text/plain</type>
            <size>15825</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZDNkZTAxYWUzY2Y0ZDE5N2M5YjIzMjcxOGE1ZmEzZGRkZDY4NzBmLi4zY2Y5YzgzODFjMmQ3NWNl
MzlmOWYzZDgxYjk5OWNhNTdlYzk5ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOC0wMi0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRlRMXSBTdXBwb3J0IFB1dEJ5VmFsKEFycmF5U3RvcmFnZS9TbG93
UHV0QXJyYXlTdG9yYWdlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgyOTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbnRp
Z3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKToKKwogMjAxOC0wMi0xNCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRlRMXSBTdXBwb3J0IEFycmF5UHVz
aCBmb3IgQXJyYXlTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCA1M2EwYTg2NTQyZjhmNjI3ZjRjM2RmYTZmZTM0M2VhZjRmZjZhMDRjLi45
NTI5NDgxMTRkYmQ0YThjOTFmNGJiOWI2YzRlNWI3YjhlYjk2Yzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTgwNiw2ICs4MDYsMzggQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QoRXhlY1N0YXRlKgogICAgICAgICBhcnJheSwgZXhlYywgSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpbmRleCksIGpzVmFsdWUsIHNsb3QpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgaW50MzJfdCBpbmRleCwgZG91YmxlIHZhbHVl
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgSlNWYWx1ZSBqc1ZhbHVlID0gSlNWYWx1ZShKU1Zh
bHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFsdWUpOworCisgICAgaWYgKGluZGV4ID49IDApIHsKKyAg
ICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LCBqc1ZhbHVlLCAwLCBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGFycmF5LCB0cnVlKTsKKyAgICBhcnJheS0+cHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KSwganNWYWx1ZSwgc2xvdCk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5
Qm91bmRzTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCBpbnQzMl90
IGluZGV4LCBkb3VibGUgdmFsdWUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBKU1ZhbHVlIGpz
VmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2YWx1ZSk7CisKKyAgICBp
ZiAoaW5kZXggPj0gMCkgeworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5k
ZXgsIGpzVmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoYXJyYXksIGZhbHNlKTsKKyAgICBhcnJheS0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGluZGV4KSwganNWYWx1ZSwgc2xvdCk7Cit9CisKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHks
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBhZGMyZTQ1
OGNkMzllNzY3NjBhNzhlNmI4MTRhNTk0YzkyOGIyYjRiLi4wNTY5MDU5YjE2ODMyY2ZjZWFmNDVm
N2RiZmViN2FkYzAwMmJkOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaApAQCAtMTMxLDYgKzEzMSw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSosIEpTCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05v
blN0cmljdChFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9u
U3RyaWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwgZG91YmxlIHZhbHVl
KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlW
YWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqLCBKU09iamVjdCosIGlu
dDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYTlhNzYwYTY3NTQ4MWE2ZDVjYjY3
NGMzYTdjNzcyZWQ1MzM0ZmNlZS4uZDJhZjlmMDUzNGRlN2MxMzc4OTNhODUwZThkZjU0MWY0YWU0
ZDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTIwNzksNyArMjA3OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVE
b3VibGVQdXRCeVZhbChOb2RlKiBub2RlLCBTcGVjdWxhdGVDZWxsT3BlcmFuZCYgYmFzCiAgICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJy
YXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRz
Tm9uU3RyaWN0LAorICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKQorICAgICAgICAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0
ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6
IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCisgICAgICAg
ICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25Q
dXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9u
UHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAg
ICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggMjQ5YWQ2ZDgyYmUyNTg4NWRjY2M3OTM3MjMzMzNiNjZiZWQ2ZWYxYi4uNDE3NDA2Y2Q0
MjE1N2JhMDM0YjI3MTBjZDAxMTZmYWM1YmE3NWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zMDcwLDE3ICszMDcwLDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IHN0b3JhZ2UudXNlKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUu
aXNPdXRPZkJvdW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkg
PyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZSwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLAorICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogKG5v
ZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9u
ZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5k
c05vblN0cmljdCksCisgICAgICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZywgdmFsdWVSZWcpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbm9SZXN1
bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTMxNTksMTcgKzMxNTQs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgc3RvcmFnZS51c2UoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFzbG93Q2Fz
ZXMuZW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwotICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpCisgICAgICAgICAg
ICAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9u
UHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCisgICAgICAgICAgICAgICAgICAgICAgICA6IChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QpLAorICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVy
dHlSZWcsIHZhbHVlUmVnKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG5vUmVzdWx0
KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNDE4ZDkwMjYxYWRmN2E1ZmQwYmYw
MjVlNDk1MzBiOTYyNDdlZDM2Zi4uYzgyY2M2YjUwYjdlZDc1M2U2MWE0YzU2MGJhMTI5NWJiYmY2
ZjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtNDI5LDYgKzQyOSw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAgY2FzZSBBcnJh
eTo6RG91YmxlOgogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgorICAgICAgICBjYXNl
IEFycmF5OjpBcnJheVN0b3JhZ2U6CisgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0
b3JhZ2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IGlmIChpc1R5cGVkVmlldyhub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAwY2My
MmExN2M4MjllNDRmZmY4M2RjNWY2YTYxZDFiNzdjMDg0MTAxLi43OTAwMGNhNWQ2ZGNkOThmMmVi
Njk3ZjcwODY4ZTM3ZjgyZDU2ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC00MTkyLDggKzQxOTIsOCBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZh
bE91dE9mQm91bmRzKAogICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkKLSAgICAgICAgICAgICAgICAgICAgPyBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5
Qm91bmRzU3RyaWN0Ci0gICAgICAgICAgICAgICAgICAgIDogb3BlcmF0aW9uUHV0QnlWYWxCZXlv
bmRBcnJheUJvdW5kc05vblN0cmljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgID8gKG1fbm9k
ZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25k
QXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3Ry
aWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmlj
dCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAg
ICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRpbnVhdGlvbik7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwg
ZWxlbWVudFBvaW50ZXIpOwpAQCAtNDIxOCw4ICs0MjE4LDggQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjb250aWd1b3VzUHV0QnlWYWxP
dXRPZkJvdW5kcygKICAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpCi0gICAgICAgICAgICAgICAgICAgID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRB
cnJheUJvdW5kc1N0cmljdAotICAgICAgICAgICAgICAgICAgICA6IG9wZXJhdGlvblB1dERvdWJs
ZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICA/IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVC
eVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlW
YWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogKG1f
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGly
ZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJl
eW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3Rv
cmFnZSwgaW5kZXgsIHZhbHVlLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlRG91YmxlKHZhbHVlLCBlbGVtZW50UG9pbnRlcik7CkBA
IC00MjM0LDYgKzQyMzQsODMgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgb3V0ZXJMYXN0TmV4dCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6Cisg
ICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKKyAgICAgICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoY2hpbGQzKTsKKworICAgICAgICAgICAgVHlwZWRQb2lu
dGVyIGVsZW1lbnRQb2ludGVyID0gbV9vdXQuYmFzZUluZGV4KAorICAgICAgICAgICAgICAgIG1f
aGVhcHMuQXJyYXlTdG9yYWdlX3ZlY3Rvciwgc3RvcmFnZSwgbV9vdXQuemVyb0V4dFB0cihpbmRl
eCksCisgICAgICAgICAgICAgICAgcHJvdmVuVmFsdWUoY2hpbGQyKSk7CisKKyAgICAgICAgICAg
IGlmIChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxBbGlhcykgeworICAgICAgICAgICAgICAgIG1f
b3V0LnN0b3JlNjQodmFsdWUsIGVsZW1lbnRQb2ludGVyKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgp
LmlzSW5Cb3VuZHMoKSkgeworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShTdG9yZVRvSG9sZSwg
bm9WYWx1ZSgpLCAwLCBtX291dC5pc1plcm82NChtX291dC5sb2FkNjQoZWxlbWVudFBvaW50ZXIp
KSk7CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgZWxlbWVudFBvaW50ZXIp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
TFZhbHVlIGlzT3V0T2ZCb3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwoCisgICAgICAgICAgICAg
ICAgaW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVy
Zmx5X3ZlY3Rvckxlbmd0aCkpOworCisgICAgICAgICAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24g
PSBjb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkKKyAgICAgICAgICAgICAgICA/IChtX25vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFy
cmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmlj
dCkKKyAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCk7CisgICAgICAgICAgICBpZiAo
IW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKSB7CisgICAgICAgICAgICAgICAg
c3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIDAsIGlzT3V0T2ZCb3VuZHMpOworICAg
ICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHMgPSBtX291dC5ib29sZWFuRmFsc2U7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGluQm91bmRDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGhvbGVDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEhvbGVDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxlbmd0aFVwZGF0ZUNhc2UgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3V0T2ZCb3VuZHMsIHJhcmVs
eShzbG93Q2FzZSksIHVzdWFsbHkoaW5Cb3VuZENhc2UpKTsKKworICAgICAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgaW5Cb3VuZENhc2UpOwor
ICAgICAgICAgICAgdm1DYWxsKAorICAgICAgICAgICAgICAgIFZvaWQsIG1fb3V0Lm9wZXJhdGlv
bihzbG93UGF0aEZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgYmFzZSwg
aW5kZXgsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
CisgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc1Nsb3dQdXQoKSkgeworICAg
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGluQm91bmRDYXNlLCBub3RIb2xlQ2FzZSk7Cisg
ICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KG1fb3V0LmxvYWQ2NChl
bGVtZW50UG9pbnRlcikpLCByYXJlbHkoc2xvd0Nhc2UpLCB1c3VhbGx5KG5vdEhvbGVDYXNlKSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlu
Qm91bmRDYXNlLCBob2xlQ2FzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0
LmlzWmVybzY0KG1fb3V0LmxvYWQ2NChlbGVtZW50UG9pbnRlcikpLCByYXJlbHkoaG9sZUNhc2Up
LCB1c3VhbGx5KG5vdEhvbGVDYXNlKSk7CisKKyAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhob2xlQ2FzZSwgbGVuZ3RoVXBkYXRlQ2FzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmUzMigKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKG1fb3V0LmxvYWQzMihzdG9yYWdl
LCBtX2hlYXBzLkFycmF5U3RvcmFnZV9udW1WYWx1ZXNJblZlY3RvciksIG1fb3V0LmludDMyT25l
KSwKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSwgbV9oZWFwcy5BcnJheVN0b3JhZ2VfbnVt
VmFsdWVzSW5WZWN0b3IpOworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuYmVsb3coCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwg
bV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGlj
TGVuZ3RoKSksCisgICAgICAgICAgICAgICAgICAgIHVuc3VyZShub3RIb2xlQ2FzZSksIHVuc3Vy
ZShsZW5ndGhVcGRhdGVDYXNlKSk7CisKKyAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhs
ZW5ndGhVcGRhdGVDYXNlLCBub3RIb2xlQ2FzZSk7CisgICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmUzMigKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKGluZGV4LCBtX291dC5pbnQzMk9u
ZSksCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3B1Ymxp
Y0xlbmd0aCk7CisgICAgICAgICAgICAgICAgbV9vdXQuanVtcChub3RIb2xlQ2FzZSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEhvbGVDYXNlLCBjb250
aW51YXRpb24pOworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgZWxlbWVudFBvaW50
ZXIpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5
VHlwZSgpOwpAQCAtMTI5MDMsMTQgKzEyOTgwLDE0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIEZ1bmN0aW9uVHlwZSBzbG93UGF0aEZ1bmN0aW9uLCBMVmFsdWUgYmFzZSwgTFZhbHVl
IHN0b3JhZ2UsIExWYWx1ZSBpbmRleCwgTFZhbHVlIHZhbHVlLAogICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24pCiAgICAgewotICAgICAgICBMVmFsdWUgaXNOb3RJbkJvdW5kcyA9IG1f
b3V0LmFib3ZlT3JFcXVhbCgKLSAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdh
dGl2ZShzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKTsKICAgICAgICAg
aWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbm90SW5Cb3VuZHNDYXNlID0KICAgICAgICAgICAgICAgICBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgcGVyZm9ybVN0b3JlID0KICAgICAgICAgICAg
ICAgICBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgTFZh
bHVlIGlzTm90SW5Cb3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwoCisgICAgICAgICAgICAgICAg
aW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5
X3B1YmxpY0xlbmd0aCkpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW5Cb3VuZHMs
IHVuc3VyZShub3RJbkJvdW5kc0Nhc2UpLCB1bnN1cmUocGVyZm9ybVN0b3JlKSk7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKG5vdEluQm91bmRzQ2FzZSwgcGVyZm9ybVN0b3JlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334444</attachid>
            <date>2018-02-22 02:16:57 -0800</date>
            <delta_ts>2018-02-25 22:59:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182965-20180222191656.patch</filename>
            <type>text/plain</type>
            <size>20907</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTYzNTUwMWM3MmJiZWM1OTc3Y2IyMmY4YzIxNjRkYzI2MDkyMzg5Li40ZWIyNmY4ODc2NTYwMzA1
NGVjZTRkMDFjZWRhMmIyOGM3MGU0ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wMi0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRlRMXSBTdXBwb3J0IFB1dEJ5VmFsKEFycmF5U3RvcmFnZS9TbG93
UHV0QXJyYXlTdG9yYWdlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgyOTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBleHRlbmRzIEZUTCBjb3ZlcmFnZSBmb3IgUHV0QnlWYWwgYnkg
YWRkaW5nIEFycmF5U3RvcmFnZSBhbmQgU2x3b1B1dEFycmF5U3RvcmFnZSBzdXBwb3J0LgorICAg
ICAgICBCYXNpY2FsbHkgbGFyZ2UgcGFydCBvZiB0aGUgcGF0Y2ggaXMgcG9ydGluZyBmcm9tIERG
RyBjb2RlLiBTaW5jZSBQdXRCeVZhbCBhbHJlYWR5IGVtaXRzIENoZWNrSW5Cb3VuZHMKKyAgICAg
ICAgZm9yIEluQm91bmRzIGNhc2UsIHdlIGRvIG5vdCBoYXZlIE91dE9mQm91bmRzIGNoZWNrIGZv
ciB0aGF0IGNhc2UuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0
QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKToKKwogMjAxOC0wMi0yMSAg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
U3BsaXQgZGVjbGFyYXRpb24gb2YgSlNDIGhlYWRlcnMgaW50byBwdWJsaWMgYW5kIHByaXZhdGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDUzYTBh
ODY1NDJmOGY2MjdmNGMzZGZhNmZlMzQzZWFmNGZmNmEwNGMuLjk1Mjk0ODExNGRiZDRhOGM5MWY0
YmI5YjZjNGU1YjdiOGViOTZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtODA2LDYgKzgwNiwzOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChFeGVjU3RhdGUq
CiAgICAgICAgIGFycmF5LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KSwganNW
YWx1ZSwgc2xvdCk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVC
eVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGFycmF5LCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUpCit7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91Ymxl
LCB2YWx1ZSk7CisKKyAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgICBhcnJheS0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgaW5kZXgsIGpzVmFsdWUsIDAsIFB1dERpcmVjdEluZGV4U2hvdWxkVGhy
b3cpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
YXJyYXksIHRydWUpOworICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb20o
ZXhlYywgaW5kZXgpLCBqc1ZhbHVlLCBzbG90KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1
ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIEpTVmFsdWUganNWYWx1ZSA9IEpTVmFsdWUoSlNW
YWx1ZTo6RW5jb2RlQXNEb3VibGUsIHZhbHVlKTsKKworICAgIGlmIChpbmRleCA+PSAwKSB7Cisg
ICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCwganNWYWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChhcnJheSwgZmFs
c2UpOworICAgIGFycmF5LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb20oZXhlYywgaW5k
ZXgpLCBqc1ZhbHVlLCBzbG90KTsKK30KKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGFkYzJlNDU4Y2QzOWU3Njc2MGE3OGU2Yjgx
NGE1OTRjOTI4YjJiNGIuLjA1NjkwNTliMTY4MzJjZmNlYWY0NWY3ZGJmZWI3YWRjMDAyYmQ5MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xMzEsNiAr
MTMxLDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25k
QXJyYXlCb3VuZHNTdHJpY3QoRXhlY1N0YXRlKiwgSlMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBX
VEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxC
ZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QgaW5k
ZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUpIFdURl9JTlRFUk5BTDsKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5
Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwgZG91Ymxl
IHZhbHVlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91
YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChFeGVjU3RhdGUqLCBKU09i
amVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1w
bCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0
aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCBhOTJiODcxYzNjOTJlMzEyNTRhOThiMTJlOTJkZTBhOWM3YjMyYTcw
Li41YzE3ZjAwZWI4MGM1NTVmYjhiNzBmMGMyOGZmNGZmYjZhMjcyZDFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjA3OSw3ICsy
MDc5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUq
IG5vZGUsIFNwZWN1bGF0ZUNlbGxPcGVyYW5kJiBiYXMKICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nh
c2UsIHRoaXMsCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9w
ZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCisgICAgICAg
ICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpCisgICAgICAgICAgICAg
ICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3Vi
bGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91Ymxl
QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKKyAgICAgICAgICAgICAgICAgICAgOiAobm9k
ZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9u
ZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJl
ZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAyNDlhZDZkODJiZTI1
ODg1ZGNjYzc5MzcyMzMzM2I2NmJlZDZlZjFiLi40MTc0MDZjZDQyMTU3YmEwMzRiMjcxMGNkMDEx
NmZhYzViYTc1YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTMwNzAsMTcgKzMwNzAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgc3RvcmFnZS51c2UoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc091dE9mQm91bmRzKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAg
ICAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJl
eW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgTm9SZXN1
bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0
aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBOb1Jlc3Vs
dCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7Ci0gICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKKyAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgIG1faml0
LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgPyAo
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5
b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRz
U3RyaWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZh
bERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKKyAgICAg
ICAgICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMzE1OSwxNyArMzE1NCwxMiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzdG9yYWdlLnVzZSgpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIXNsb3dDYXNlcy5lbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
Y3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25k
QXJyYXlCb3VuZHNOb25TdHJpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25k
QXJyYXlCb3VuZHNOb25TdHJpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gKG5v
ZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9u
ZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCisgICAgICAg
ICAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAppbmRleCA0MThkOTAyNjFhZGY3YTVmZDBiZjAyNWU0OTUzMGI5NjI0N2VkMzZm
Li5jODJjYzZiNTBiN2VkNzUzZTYxYTRjNTYwYmExMjk1YmJiZjZmM2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC00MjksNiArNDI5LDgg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAg
IGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFn
ZToKKyAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG5v
ZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDE0ODAzZWM2YTcwYjE3MjNmMzc5OWEx
M2VkODA1YWU4ZDAxNDI0YTAuLmZhZGUxNjNlMDdiOTA4OGE0NjliMWVhZDM1OWQxZDM3N2UzNTlk
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTQxOTIsOCArNDE5Miw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgY29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMoCiAgICAg
ICAgICAgICAgICAgICAgIGNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKQotICAgICAgICAgICAg
ICAgICAgICA/IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QKLSAgICAg
ICAgICAgICAgICAgICAgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3Ry
aWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCisgICAgICAgICAgICAg
ICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgICAgIGJhc2Us
IHN0b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBlbGVtZW50UG9pbnRlcik7CkBA
IC00MjE4LDggKzQyMTgsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKAogICAgICAg
ICAgICAgICAgICAgICBjb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkKLSAgICAgICAgICAgICAg
ICAgICAgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0Ci0g
ICAgICAgICAgICAgICAgICAgIDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJy
YXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRz
U3RyaWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5
VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5k
c05vblN0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25T
dHJpY3QpLAogICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUs
IGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQu
c3RvcmVEb3VibGUodmFsdWUsIGVsZW1lbnRQb2ludGVyKTsKQEAgLTQyMzQsOCArNDIzNCw4NSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBvdXRlckxhc3ROZXh0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQor
CisgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKKyAgICAgICAgY2FzZSBBcnJheTo6
U2xvd1B1dEFycmF5U3RvcmFnZTogeworICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNW
YWx1ZShjaGlsZDMpOworCisgICAgICAgICAgICBUeXBlZFBvaW50ZXIgZWxlbWVudFBvaW50ZXIg
PSBtX291dC5iYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgbV9oZWFwcy5BcnJheVN0b3JhZ2Vf
dmVjdG9yLCBzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRyKGluZGV4KSwKKyAgICAgICAgICAgICAg
ICBwcm92ZW5WYWx1ZShjaGlsZDIpKTsKKworICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9
PSBQdXRCeVZhbEFsaWFzKSB7CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwg
ZWxlbWVudFBvaW50ZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpKSB7Cisg
ICAgICAgICAgICAgICAgc3BlY3VsYXRlKFN0b3JlVG9Ib2xlLCBub1ZhbHVlKCksIDAsIG1fb3V0
LmlzWmVybzY0KG1fb3V0LmxvYWQ2NChlbGVtZW50UG9pbnRlcikpKTsKKyAgICAgICAgICAgICAg
ICBtX291dC5zdG9yZTY0KHZhbHVlLCBlbGVtZW50UG9pbnRlcik7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5k
cyA9IG1fb3V0LmFib3ZlT3JFcXVhbCgKKyAgICAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9h
ZDMyTm9uTmVnYXRpdmUoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKSk7
CisKKyAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhGdW5jdGlvbiA9IGNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKQorICAgICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERp
cmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQorICAgICAgICAgICAgICAg
IDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFy
cmF5Qm91bmRzTm9uU3RyaWN0KTsKKyAgICAgICAgICAgIGlmICghbV9ub2RlLT5hcnJheU1vZGUo
KS5pc091dE9mQm91bmRzKCkpIHsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3Vu
ZHMsIG5vVmFsdWUoKSwgMCwgaXNPdXRPZkJvdW5kcyk7CisgICAgICAgICAgICAgICAgaXNPdXRP
ZkJvdW5kcyA9IG1fb3V0LmJvb2xlYW5GYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgaW5Cb3VuZENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAg
TEJhc2ljQmxvY2sgaG9sZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbm90SG9sZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbGVuZ3RoVXBkYXRlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAg
ICAgICBtX291dC5icmFuY2goaXNPdXRPZkJvdW5kcywgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxs
eShpbkJvdW5kQ2FzZSkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBpbkJvdW5kQ2FzZSk7CisgICAgICAgICAgICB2bUNhbGwo
CisgICAgICAgICAgICAgICAgVm9pZCwgbV9vdXQub3BlcmF0aW9uKHNsb3dQYXRoRnVuY3Rpb24p
LAorICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgdmFsdWUpOworICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisKKyAgICAgICAgICAgIGlmICht
X25vZGUtPmFycmF5TW9kZSgpLmlzU2xvd1B1dCgpKSB7CisgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaW5Cb3VuZENhc2UsIG5vdEhvbGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuaXNaZXJvNjQobV9vdXQubG9hZDY0KGVsZW1lbnRQb2ludGVyKSksIHJh
cmVseShzbG93Q2FzZSksIHVzdWFsbHkobm90SG9sZUNhc2UpKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5Cb3VuZENhc2UsIGhvbGVDYXNl
KTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQobV9vdXQubG9h
ZDY0KGVsZW1lbnRQb2ludGVyKSksIHJhcmVseShob2xlQ2FzZSksIHVzdWFsbHkobm90SG9sZUNh
c2UpKTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhvbGVDYXNlLCBsZW5ndGhV
cGRhdGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5hZGQobV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9y
YWdlX251bVZhbHVlc0luVmVjdG9yKSwgbV9vdXQuaW50MzJPbmUpLAorICAgICAgICAgICAgICAg
ICAgICBzdG9yYWdlLCBtX2hlYXBzLkFycmF5U3RvcmFnZV9udW1WYWx1ZXNJblZlY3Rvcik7Cisg
ICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAgICAgICBtX291dC5i
ZWxvdygKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdh
dGl2ZShzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgdW5zdXJlKG5vdEhvbGVDYXNlKSwgdW5zdXJlKGxlbmd0aFVwZGF0ZUNhc2Up
KTsKKworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlbmd0aFVwZGF0ZUNhc2UsIG5v
dEhvbGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5hZGQoaW5kZXgsIG1fb3V0LmludDMyT25lKSwKKyAgICAgICAgICAgICAg
ICAgICAgc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICBtX291dC5qdW1wKG5vdEhvbGVDYXNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8obm90SG9sZUNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAg
ICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBlbGVtZW50UG9pbnRlcik7CisgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgZGVmYXVsdDogewogICAgICAg
ICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJh
eVR5cGUoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KHR5cGUp
KSB7CkBAIC00Mjk1LDYgKzQzNzIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBhcnJheSB0eXBlIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBjb21w
aWxlUHV0QWNjZXNzb3JCeUlkKCkKQEAgLTEyOTA4LDE0ICsxMjk4NiwxNCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBGdW5jdGlvblR5cGUgc2xvd1BhdGhGdW5jdGlvbiwgTFZhbHVl
IGJhc2UsIExWYWx1ZSBzdG9yYWdlLCBMVmFsdWUgaW5kZXgsIExWYWx1ZSB2YWx1ZSwKICAgICAg
ICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGlzTm90
SW5Cb3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwoCi0gICAgICAgICAgICBpbmRleCwgbV9vdXQu
bG9hZDMyTm9uTmVnYXRpdmUoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3Ro
KSk7CiAgICAgICAgIGlmICghbV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpIHsKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEluQm91bmRzQ2FzZSA9CiAgICAgICAgICAgICAgICAg
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHBlcmZvcm1TdG9yZSA9
CiAgICAgICAgICAgICAgICAgbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIExWYWx1ZSBpc05vdEluQm91bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAorICAg
ICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hl
YXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKTsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChp
c05vdEluQm91bmRzLCB1bnN1cmUobm90SW5Cb3VuZHNDYXNlKSwgdW5zdXJlKHBlcmZvcm1TdG9y
ZSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhub3RJbkJvdW5kc0Nhc2UsIHBlcmZvcm1TdG9yZSk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcyNWE3NWY4
Mjc3ZGMyNjMzNDc1ZWYyMWI3MzM0ZDhmM2FhOTM3OTEuLjJkYmY3ODM0ZWVkMDllNDhiMWQwNjhj
ZmVjNzc3Y2JkODYyNjBiZGYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDItMjIgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0ZUTF0gU3VwcG9ydCBQdXRC
eVZhbChBcnJheVN0b3JhZ2UvU2xvd1B1dEFycmF5U3RvcmFnZSkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtYXJyYXkt
c3RvcmFnZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0QXJy
YXlTdG9yYWdlSW5Cb3VuZHMpOgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLXNsb3ctcHV0
LWFycmF5LXN0b3JhZ2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
dGVzdEFycmF5U3RvcmFnZUluQm91bmRzKToKKwogMjAxOC0wMi0yMCAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBERkc6OlZhcmFyZ3NGb3J3YXJkaW5nUGhhc2Ug
c2hvdWxkIGVsaW1pbmF0ZSBnZXR0aW5nIGFyZ3VtZW50IGxlbmd0aApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1hcnJheS1zdG9yYWdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LWJ5LXZhbC1hcnJheS1zdG9yYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZDI4NGYyYzIzMDIwYzA3
ZTlmOGRiNzY0ZmVhMTYyNzdhMjgyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtYnktdmFsLWFycmF5LXN0b3JhZ2UuanMKQEAgLTAsMCArMSw0MCBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwgaW5kZXgsIHZhbHVlKQor
eworICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOworfQorbm9JbmxpbmUodGVzdEFycmF5U3RvcmFn
ZUluQm91bmRzKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHZhciBh
cnJheSA9IFsxLCAyLCAzLCA0LCA1XTsKKyAgICBlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkpOwor
ICAgIHNob3VsZEJlKGFycmF5WzBdLCAxKTsKKyAgICB0ZXN0QXJyYXlTdG9yYWdlSW5Cb3VuZHMo
YXJyYXksIDAsIDQyKTsKKyAgICBzaG91bGRCZShhcnJheVswXSwgNDIpOworfQorZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHZhciBhcnJheSA9IFssIDIsIDMsIDRdOworICAg
IGVuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sIHVuZGVm
aW5lZCk7CisgICAgc2hvdWxkQmUoYXJyYXlbMV0sIDIpOworICAgIHRlc3RBcnJheVN0b3JhZ2VJ
bkJvdW5kcyhhcnJheSwgMCwgNDIpOworICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJh
eSwgMSwgNDApOworICAgIHNob3VsZEJlKGFycmF5WzBdLCA0Mik7CisgICAgc2hvdWxkQmUoYXJy
YXlbMV0sIDQwKTsKKyAgICBzaG91bGRCZShhcnJheS5sZW5ndGgsIDQpOworICAgIHRlc3RBcnJh
eVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwgNCwgNDIpOworICAgIHNob3VsZEJlKGFycmF5WzRdLCA0
Mik7CisgICAgc2hvdWxkQmUoYXJyYXkubGVuZ3RoLCA1KTsKK30KK2ZvciAodmFyIGkgPSAwOyBp
IDwgMWU1OyArK2kpIHsKKyAgICB2YXIgYXJyYXkgPSBbLCAyLCAzLCA0XTsKKyAgICBlbnN1cmVB
cnJheVN0b3JhZ2UoYXJyYXkpOworICAgIHNob3VsZEJlKGFycmF5WzZdLCB1bmRlZmluZWQpOwor
ICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwgNiwgNDIpOworICAgIHNob3VsZEJl
KGFycmF5Lmxlbmd0aCwgNyk7CisgICAgc2hvdWxkQmUoYXJyYXlbNl0sIDQyKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtc2xvdy1wdXQtYXJyYXktc3RvcmFnZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtc2xvdy1wdXQtYXJyYXktc3RvcmFnZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTEwZmY1YTBjOTI0Zjc1NjVlNDE3ZjIxNWFhN2FjOWFhNzg1NjAwCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1zbG93LXB1dC1hcnJheS1z
dG9yYWdlLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0QXJyYXlT
dG9yYWdlSW5Cb3VuZHMoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAgICBhcnJheVtpbmRleF0g
PSB2YWx1ZTsKK30KK25vSW5saW5lKHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNCwg
NV07CisgICAgdmFyIG9iamVjdCA9IHsgYTogMTAgfTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dGllcyhvYmplY3QsIHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9u
KCkgeyByZXR1cm4gdGhpcy5hOyB9LAorICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih4KSB7IHRo
aXMuYSA9IHg7IH0sCisgICAgICAgIH0sCisgICAgfSk7CisgICAgYXJyYXkuX19wcm90b19fID0g
b2JqZWN0OworICAgIGVuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7CisgICAgc2hvdWxkQmUoYXJy
YXlbMF0sIDEpOworICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwgMCwgNDIpOwor
ICAgIHNob3VsZEJlKGFycmF5WzBdLCA0Mik7Cit9Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgdmFyIGFycmF5ID0gWywgMiwgMywgNF07CisgICAgdmFyIG9iamVjdCA9IHsg
YTogMTAgfTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvYmplY3QsIHsKKyAgICAgICAg
IjEiOiB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5hOyB9LAor
ICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih4KSB7IHRoaXMuYSA9IHggKyAyMDsgfSwKKyAgICAg
ICAgfSwKKyAgICB9KTsKKyAgICBhcnJheS5fX3Byb3RvX18gPSBvYmplY3Q7CisgICAgZW5zdXJl
QXJyYXlTdG9yYWdlKGFycmF5KTsKKyAgICBzaG91bGRCZShhcnJheVswXSwgdW5kZWZpbmVkKTsK
KyAgICBzaG91bGRCZShhcnJheVsxXSwgMik7CisgICAgdGVzdEFycmF5U3RvcmFnZUluQm91bmRz
KGFycmF5LCAwLCA0Mik7CisgICAgdGVzdEFycmF5U3RvcmFnZUluQm91bmRzKGFycmF5LCAxLCA0
MCk7CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sIDQyKTsKKyAgICBzaG91bGRCZShhcnJheVsxXSwg
NDApOworICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwgNCwgNDIpOworICAgIHNo
b3VsZEJlKGFycmF5WzRdLCA0Mik7CisgICAgc2hvdWxkQmUoYXJyYXkubGVuZ3RoLCA1KTsKK30K
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgYXJyYXkgPSBbLCAsIDMs
IDRdOworICAgIHZhciBvYmplY3QgPSB7IGE6IDEwIH07CisgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnRpZXMob2JqZWN0LCB7CisgICAgICAgICIxIjogeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlv
bigpIHsgcmV0dXJuIHRoaXMuYTsgfSwKKyAgICAgICAgICAgIHNldDogZnVuY3Rpb24oeCkgeyB0
aGlzLmEgPSB4ICsgMjA7IH0sCisgICAgICAgIH0sCisgICAgfSk7CisgICAgYXJyYXkuX19wcm90
b19fID0gb2JqZWN0OworICAgIGVuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7CisgICAgc2hvdWxk
QmUoYXJyYXlbMF0sIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoYXJyYXlbMV0sIDEwKTsKKyAg
ICBzaG91bGRCZShhcnJheVs2XSwgdW5kZWZpbmVkKTsKKyAgICB0ZXN0QXJyYXlTdG9yYWdlSW5C
b3VuZHMoYXJyYXksIDYsIDQyKTsKKyAgICB0ZXN0QXJyYXlTdG9yYWdlSW5Cb3VuZHMoYXJyYXks
IDEsIDQyKTsKKyAgICBzaG91bGRCZShhcnJheS5sZW5ndGgsIDcpOworICAgIHNob3VsZEJlKGFy
cmF5WzFdLCA2Mik7CisgICAgc2hvdWxkQmUoYXJyYXlbNl0sIDQyKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334592</attachid>
            <date>2018-02-25 22:59:41 -0800</date>
            <delta_ts>2018-02-26 12:35:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182965-20180226155940.patch</filename>
            <type>text/plain</type>
            <size>22233</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWVkODBkMmE3YWQ4NTkwZTY4NDQzNjQzMGY0MDEwMzI2YWFjNWRmLi4xMTFiZTEwYmIyZGFmNzhm
MTRkOGFjZGY0ZDBiYjJjYjBjYmJlZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOC0wMi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRlRMXSBTdXBwb3J0IFB1dEJ5VmFsKEFycmF5U3RvcmFnZS9TbG93
UHV0QXJyYXlTdG9yYWdlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgyOTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBleHRlbmRzIEZUTCBjb3ZlcmFnZSBmb3IgUHV0QnlWYWwgYnkg
YWRkaW5nIEFycmF5U3RvcmFnZSBhbmQgU2x3b1B1dEFycmF5U3RvcmFnZSBzdXBwb3J0LgorICAg
ICAgICBCYXNpY2FsbHkgbGFyZ2UgcGFydCBvZiB0aGUgcGF0Y2ggaXMgcG9ydGluZyBmcm9tIERG
RyBjb2RlLiBTaW5jZSBQdXRCeVZhbCBhbHJlYWR5IGVtaXRzIENoZWNrSW5Cb3VuZHMKKyAgICAg
ICAgZm9yIEluQm91bmRzIGNhc2UsIHdlIGRvIG5vdCBoYXZlIE91dE9mQm91bmRzIGNoZWNrIGZv
ciB0aGF0IGNhc2UuCisgICAgICAgIFRoaXMgaXMgdGhlIGxhc3QgY2hhbmdlIGZvciBGVEwgdG8g
c3VwcG9ydCBhbGwgdGhlIHR5cGVzIG9mIERGRyBub2Rlcy4KKworICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29udGlndW91c1B1dEJ5VmFsT3V0T2ZC
b3VuZHMpOgorICAgICAgICBGb3IgY29uc2lzdGVuY3ksIHdlIHVzZSBvcGVyYXRpb25QdXRCeVZh
bFhYWCBhbmQgb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RYWFguCisgICAgICAgIEJ1dCBleGNlcHQg
Zm9yIFNsb3dQdXRBcnJheVN0b3JhZ2UgY2FzZSwgYmFzaWNhbGx5IGl0IGlzIG1lYW5pbmdsZXNz
IHNpbmNlCisgICAgICAgIHdlIGRvIG5vdCBoYXZlIGluZGV4ZWQgYWNjZXNzb3JzLgorCiAyMDE4
LTAyLTIzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ug
TnVtYmVyLmlzSW50ZWdlciBhbiBpbnRyaW5zaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDA3YjM5NWRlOGRlNTk1MjZhMmJmNjE2ZjllNTdlNzA5
NmQ2Y2RiYmQuLjVkYTg1YzRmNGI3MzgxNzE4MTg1NWVkODQ0ODhmODJjNzc1ZmMwNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtODA3LDYgKzgw
NywzOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdChFeGVjU3RhdGUqCiAgICAgICAgIGFycmF5LCBleGVjLCBJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KSwganNWYWx1ZSwgc2xvdCk7CiB9CiAKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRz
U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCBpbnQzMl90IGluZGV4LCBk
b3VibGUgdmFsdWUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBKU1ZhbHVlIGpzVmFsdWUgPSBK
U1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2YWx1ZSk7CisKKyAgICBpZiAoaW5kZXgg
Pj0gMCkgeworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIGpzVmFs
dWUsIDAsIFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYXJyYXksIHRydWUpOworICAgIGFycmF5LT5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb20oZXhlYywgaW5kZXgpLCBqc1ZhbHVlLCBzbG90
KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJy
YXksIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAg
IEpTVmFsdWUganNWYWx1ZSA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIHZhbHVl
KTsKKworICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRl
eChleGVjLCBpbmRleCwganNWYWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChhcnJheSwgZmFsc2UpOworICAgIGFycmF5LT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb20oZXhlYywgaW5kZXgpLCBqc1ZhbHVlLCBzbG90KTsKK30KKwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0KEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmlu
ZGV4IDk4MmQyNmY1N2M5MTVjMWMyMDNhMTI0MGNiODI2YzIxZGM3NGNhOTMuLmE1MjkwYzdlNTcz
YTZhY2EwODc3Yjk0NGE3N2Y0NjU1ZjAyNGE5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xMzEsNiArMTMxLDggQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoRXhlY1N0YXRl
KiwgSlMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFy
cmF5Qm91bmRzTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVj
U3RhdGUqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJy
YXlCb3VuZHNOb25TdHJpY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90IGluZGV4LCBk
b3VibGUgdmFsdWUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgaW50MzJfdCBpbmRleCwgZG91YmxlIHZhbHVlKSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdChFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJs
ZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlW
YWxXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBhOTJiODcxYzNj
OTJlMzEyNTRhOThiMTJlOTJkZTBhOWM3YjMyYTcwLi41YzE3ZjAwZWI4MGM1NTVmYjhiNzBmMGMy
OGZmNGZmYjZhMjcyZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMjA3OSw3ICsyMDc5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUsIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
JiBiYXMKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0
aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCi0gICAgICAgICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0RG91YmxlQnlW
YWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25k
QXJyYXlCb3VuZHNOb25TdHJpY3QsCisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpCisgICAgICAgICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0
QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91
bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmlj
dCkKKyAgICAgICAgICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/
IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3Qg
OiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAg
ICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCA5MjkzNjQ0YWMyNDAyOTkxZDAwMDczNWZhMWE4YTQyNGI1YjMwODEy
Li45NmQ1OTNhNjY2Y2U0M2E2NGY5YzdjNjA5OWE2OWRjMGVlMmNlYTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTMwNzAs
MTcgKzMwNzAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgc3RvcmFnZS51c2UoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KGFycmF5TW9kZS5pc091dE9mQm91bmRzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZSwgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2
YWx1ZVJlZykpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNsb3dDYXNlLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5k
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZh
bHVlUmVnKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRo
aXMsCisgICAgICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KQorICAgICAgICAgICAgICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9u
ZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKKyAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIGJh
c2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMzE1
OSwxNyArMzE1NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBzdG9yYWdlLnVzZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBp
ZiAoIXNsb3dDYXNlcy5lbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gUHV0QnlWYWxEaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0
TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVl
UmVnKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVl
UmVnKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3Qg
PyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIDogKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERp
cmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdCksCisgICAgICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNl
UmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA1ODg4MTQ5YjA4
ZjdlMzU4ZWFhZDY0N2UxN2Y3OTI0ZWQ3ZjRmZjIyLi4xYTNlZGY1MGRhNWFiMjhmOTZjYjliMmVi
ZjEyMGM0OGRlYzBhZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCkBAIC00MjAsNiArNDIwLDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAg
ICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6Cisg
ICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKKyAgICAgICAgY2FzZSBBcnJheTo6U2xv
d1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlU
eXBlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDBlZDg1YTgzM2EwOTk3NGEwMWIxZGRlMTczN2VhNWJlMmNhZjQ4ODguLjMwOWEwOWE4
YjIzYjgyYmMzZmUyZTNlYmIyNDRjZjgxMjg0NTU0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQxOTUsOCArNDE5NSw4IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29udGln
dW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMoCiAgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKQotICAgICAgICAgICAgICAgICAgICA/IG9wZXJhdGlvblB1dEJ5VmFs
QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QKLSAgICAgICAgICAgICAgICAgICAgOiBvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJy
YXlCb3VuZHNTdHJpY3QpCisgICAgICAgICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkg
PT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91
bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmlj
dCksCiAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN0b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29u
dGludWF0aW9uKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5zdG9y
ZTY0KHZhbHVlLCBlbGVtZW50UG9pbnRlcik7CkBAIC00MjIxLDggKzQyMjEsOCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnRpZ3Vv
dXNQdXRCeVZhbE91dE9mQm91bmRzKAogICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCkKLSAgICAgICAgICAgICAgICAgICAgPyBvcGVyYXRpb25QdXREb3VibGVC
eVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0Ci0gICAgICAgICAgICAgICAgICAgIDogb3BlcmF0
aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlv
blB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25Q
dXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgOiAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91
YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dERv
dWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAogICAgICAgICAgICAgICAgICAg
ICBiYXNlLCBzdG9yYWdlLCBpbmRleCwgdmFsdWUsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmVEb3VibGUodmFsdWUsIGVsZW1lbnRQ
b2ludGVyKTsKQEAgLTQyMzcsOCArNDIzNyw4NSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBvdXRlckxhc3ROZXh0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5
U3RvcmFnZToKKyAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZTogeworICAg
ICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShjaGlsZDMpOworCisgICAgICAgICAg
ICBUeXBlZFBvaW50ZXIgZWxlbWVudFBvaW50ZXIgPSBtX291dC5iYXNlSW5kZXgoCisgICAgICAg
ICAgICAgICAgbV9oZWFwcy5BcnJheVN0b3JhZ2VfdmVjdG9yLCBzdG9yYWdlLCBtX291dC56ZXJv
RXh0UHRyKGluZGV4KSwKKyAgICAgICAgICAgICAgICBwcm92ZW5WYWx1ZShjaGlsZDIpKTsKKwor
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKSB7CisgICAgICAg
ICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgZWxlbWVudFBvaW50ZXIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpKSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKFN0
b3JlVG9Ib2xlLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzY0KG1fb3V0LmxvYWQ2NChlbGVt
ZW50UG9pbnRlcikpKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBlbGVt
ZW50UG9pbnRlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBMVmFsdWUgaXNPdXRPZkJvdW5kcyA9IG1fb3V0LmFib3ZlT3JFcXVhbCgKKyAg
ICAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3RvcmFnZSwgbV9o
ZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKSk7CisKKyAgICAgICAgICAgIGF1dG8gc2xvd1Bh
dGhGdW5jdGlvbiA9IGNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKQorICAgICAgICAgICAgICAg
ID8gKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5
Qm91bmRzU3RyaWN0KQorICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZh
bERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KTsKKyAgICAg
ICAgICAgIGlmICghbV9ub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKKyAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwgaXNPdXRPZkJv
dW5kcyk7CisgICAgICAgICAgICAgICAgaXNPdXRPZkJvdW5kcyA9IG1fb3V0LmJvb2xlYW5GYWxz
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5Cb3VuZENhc2Ug
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgaG9sZUNhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90SG9sZUNhc2UgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGVuZ3RoVXBkYXRlQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFuY2goaXNPdXRPZkJv
dW5kcywgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShpbkJvdW5kQ2FzZSkpOworCisgICAgICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBpbkJv
dW5kQ2FzZSk7CisgICAgICAgICAgICB2bUNhbGwoCisgICAgICAgICAgICAgICAgVm9pZCwgbV9v
dXQub3BlcmF0aW9uKHNsb3dQYXRoRnVuY3Rpb24pLAorICAgICAgICAgICAgICAgIG1fY2FsbEZy
YW1lLCBiYXNlLCBpbmRleCwgdmFsdWUpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzU2xvd1B1
dCgpKSB7CisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW5Cb3VuZENhc2UsIG5vdEhv
bGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQobV9v
dXQubG9hZDY0KGVsZW1lbnRQb2ludGVyKSksIHJhcmVseShzbG93Q2FzZSksIHVzdWFsbHkobm90
SG9sZUNhc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaW5Cb3VuZENhc2UsIGhvbGVDYXNlKTsKKyAgICAgICAgICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQuaXNaZXJvNjQobV9vdXQubG9hZDY0KGVsZW1lbnRQb2ludGVyKSksIHJhcmVs
eShob2xlQ2FzZSksIHVzdWFsbHkobm90SG9sZUNhc2UpKTsKKworICAgICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGhvbGVDYXNlLCBsZW5ndGhVcGRhdGVDYXNlKTsKKyAgICAgICAgICAgICAg
ICBtX291dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQobV9vdXQubG9h
ZDMyKHN0b3JhZ2UsIG1faGVhcHMuQXJyYXlTdG9yYWdlX251bVZhbHVlc0luVmVjdG9yKSwgbV9v
dXQuaW50MzJPbmUpLAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBtX2hlYXBzLkFycmF5
U3RvcmFnZV9udW1WYWx1ZXNJblZlY3Rvcik7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAorICAgICAgICAgICAgICAgICAgICBtX291dC5iZWxvdygKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hlYXBzLkJ1dHRl
cmZseV9wdWJsaWNMZW5ndGgpKSwKKyAgICAgICAgICAgICAgICAgICAgdW5zdXJlKG5vdEhvbGVD
YXNlKSwgdW5zdXJlKGxlbmd0aFVwZGF0ZUNhc2UpKTsKKworICAgICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGxlbmd0aFVwZGF0ZUNhc2UsIG5vdEhvbGVDYXNlKTsKKyAgICAgICAgICAgICAg
ICBtX291dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoaW5kZXgsIG1f
b3V0LmludDMyT25lKSwKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSwgbV9oZWFwcy5CdXR0
ZXJmbHlfcHVibGljTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtX291dC5qdW1wKG5vdEhvbGVD
YXNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90SG9s
ZUNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBl
bGVtZW50UG9pbnRlcik7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisK
KyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9
IG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KHR5cGUpKSB7CkBAIC00Mjk4LDYgKzQzNzUsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9k
ZSwgIkJhZCBhcnJheSB0eXBlIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlUHV0QWNjZXNzb3JCeUlkKCkKQEAgLTEz
MDAwLDE0ICsxMzA3OCwxNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBGdW5jdGlv
blR5cGUgc2xvd1BhdGhGdW5jdGlvbiwgTFZhbHVlIGJhc2UsIExWYWx1ZSBzdG9yYWdlLCBMVmFs
dWUgaW5kZXgsIExWYWx1ZSB2YWx1ZSwKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
KQogICAgIHsKLSAgICAgICAgTFZhbHVlIGlzTm90SW5Cb3VuZHMgPSBtX291dC5hYm92ZU9yRXF1
YWwoCi0gICAgICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoc3RvcmFnZSwg
bV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKSk7CiAgICAgICAgIGlmICghbV9ub2RlLT5h
cnJheU1vZGUoKS5pc0luQm91bmRzKCkpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdElu
Qm91bmRzQ2FzZSA9CiAgICAgICAgICAgICAgICAgbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIHBlcmZvcm1TdG9yZSA9CiAgICAgICAgICAgICAgICAgbV9vdXQubmV3
QmxvY2soKTsKICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSBpc05vdEluQm91
bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAorICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5s
b2FkMzJOb25OZWdhdGl2ZShzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgp
KTsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdEluQm91bmRzLCB1bnN1cmUobm90SW5C
b3VuZHNDYXNlKSwgdW5zdXJlKHBlcmZvcm1TdG9yZSkpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RJbkJvdW5k
c0Nhc2UsIHBlcmZvcm1TdG9yZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI2Yjg1NDZjMDZjODcyMTFmMWM0ZDNlZWEwMGZlNTU5NGEw
MTg1MTUuLjU3YTMxMGRjNzk1MDkzNTk4MDVkYTNkMzU5ZmM5ZjFhMTA2MjNmOWEgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTgtMDItMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0ZUTF0gU3VwcG9ydCBQdXRCeVZhbChBcnJheVN0b3JhZ2UvU2xvd1B1dEFy
cmF5U3RvcmFnZSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4Mjk2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RyZXNzL3B1dC1ieS12YWwtYXJyYXktc3RvcmFnZS5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0QXJyYXlTdG9yYWdlSW5Cb3VuZHMpOgorICAgICAg
ICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1vdXQtb2YtYm91bmRzLXNldHRlci5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0SW50MzIuY3JlYXRlQnVpbHRp
bik6CisgICAgICAgIChzZXQgZm9yKToKKyAgICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1zbG93
LXB1dC1hcnJheS1zdG9yYWdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyk6CisKIDIwMTgtMDItMjMgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBOdW1iZXIuaXNJbnRlZ2VyIGFu
IGludHJpbnNpYwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1hcnJheS1z
dG9yYWdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1hcnJheS1zdG9yYWdlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM3ZDI4NGYyYzIzMDIwYzA3ZTlmOGRiNzY0ZmVhMTYyNzdhMjgyMWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWFycmF5LXN0b3JhZ2UuanMK
QEAgLTAsMCArMSw0MCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RBcnJheVN0b3JhZ2VJbkJv
dW5kcyhhcnJheSwgaW5kZXgsIHZhbHVlKQoreworICAgIGFycmF5W2luZGV4XSA9IHZhbHVlOwor
fQorbm9JbmxpbmUodGVzdEFycmF5U3RvcmFnZUluQm91bmRzKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTU7ICsraSkgeworICAgIHZhciBhcnJheSA9IFsxLCAyLCAzLCA0LCA1XTsKKyAgICBl
bnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkpOworICAgIHNob3VsZEJlKGFycmF5WzBdLCAxKTsKKyAg
ICB0ZXN0QXJyYXlTdG9yYWdlSW5Cb3VuZHMoYXJyYXksIDAsIDQyKTsKKyAgICBzaG91bGRCZShh
cnJheVswXSwgNDIpOworfQorZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHZh
ciBhcnJheSA9IFssIDIsIDMsIDRdOworICAgIGVuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7Cisg
ICAgc2hvdWxkQmUoYXJyYXlbMF0sIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoYXJyYXlbMV0s
IDIpOworICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwgMCwgNDIpOworICAgIHRl
c3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwgMSwgNDApOworICAgIHNob3VsZEJlKGFycmF5
WzBdLCA0Mik7CisgICAgc2hvdWxkQmUoYXJyYXlbMV0sIDQwKTsKKyAgICBzaG91bGRCZShhcnJh
eS5sZW5ndGgsIDQpOworICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwgNCwgNDIp
OworICAgIHNob3VsZEJlKGFycmF5WzRdLCA0Mik7CisgICAgc2hvdWxkQmUoYXJyYXkubGVuZ3Ro
LCA1KTsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICB2YXIgYXJyYXkg
PSBbLCAyLCAzLCA0XTsKKyAgICBlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkpOworICAgIHNob3Vs
ZEJlKGFycmF5WzZdLCB1bmRlZmluZWQpOworICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhh
cnJheSwgNiwgNDIpOworICAgIHNob3VsZEJlKGFycmF5Lmxlbmd0aCwgNyk7CisgICAgc2hvdWxk
QmUoYXJyYXlbNl0sIDQyKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12
YWwtZGlyZWN0LW91dC1vZi1ib3VuZHMtc2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5
LXZhbC1kaXJlY3Qtb3V0LW9mLWJvdW5kcy1zZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUxNDAxY2Qw
NTEwZTQ5N2VkMmI0YzUyZWE0NWZhZjJlZjc1OTE1YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LW91dC1vZi1ib3VuZHMtc2V0dGVyLmpzCkBAIC0w
LDAgKzEsMjYgQEAKK3ZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47CisKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCit2YXIgdGVzdEludDMyID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uIChhcnJheSwg
aW5kZXgsIHZhbHVlKSB7CisgICAgQHB1dEJ5VmFsRGlyZWN0KGFycmF5LCBpbmRleCwgdmFsdWUp
OworfSlgKTsKK25vSW5saW5lKHRlc3RJbnQzMik7CisKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShB
cnJheS5wcm90b3R5cGUsIDQyLCB7CisgICAgZ2V0KCkgeworICAgICAgICByZXR1cm4gMzA7Cisg
ICAgfSwKKyAgICBzZXQodmFsdWUpIHsKKyAgICB9Cit9KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU1OyArK2kpIHsKKyAgICB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNCwgNV07CisgICAgc2hvdWxk
QmUoYXJyYXlbNDJdLCAzMCk7CisgICAgdGVzdEludDMyKGFycmF5LCA0MiwgNDIpOworICAgIHNo
b3VsZEJlKGFycmF5WzQyXSwgNDIpOworICAgIHNob3VsZEJlKEFycmF5LnByb3RvdHlwZVs0Ml0s
IDMwKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtc2xvdy1wdXQt
YXJyYXktc3RvcmFnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtc2xvdy1wdXQtYXJy
YXktc3RvcmFnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTEwZmY1YTBjOTI0Zjc1NjVlNDE3ZjIxNWFhN2Fj
OWFhNzg1NjAwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1z
bG93LXB1dC1hcnJheS1zdG9yYWdlLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5j
dGlvbiB0ZXN0QXJyYXlTdG9yYWdlSW5Cb3VuZHMoYXJyYXksIGluZGV4LCB2YWx1ZSkKK3sKKyAg
ICBhcnJheVtpbmRleF0gPSB2YWx1ZTsKK30KK25vSW5saW5lKHRlc3RBcnJheVN0b3JhZ2VJbkJv
dW5kcyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgYXJyYXkg
PSBbMSwgMiwgMywgNCwgNV07CisgICAgdmFyIG9iamVjdCA9IHsgYTogMTAgfTsKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydGllcyhvYmplY3QsIHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAg
ICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5hOyB9LAorICAgICAgICAgICAgc2V0OiBm
dW5jdGlvbih4KSB7IHRoaXMuYSA9IHg7IH0sCisgICAgICAgIH0sCisgICAgfSk7CisgICAgYXJy
YXkuX19wcm90b19fID0gb2JqZWN0OworICAgIGVuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7Cisg
ICAgc2hvdWxkQmUoYXJyYXlbMF0sIDEpOworICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhh
cnJheSwgMCwgNDIpOworICAgIHNob3VsZEJlKGFycmF5WzBdLCA0Mik7Cit9Citmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgdmFyIGFycmF5ID0gWywgMiwgMywgNF07CisgICAg
dmFyIG9iamVjdCA9IHsgYTogMTAgfTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvYmpl
Y3QsIHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gdGhpcy5hOyB9LAorICAgICAgICAgICAgc2V0OiBmdW5jdGlvbih4KSB7IHRoaXMuYSA9IHgg
KyAyMDsgfSwKKyAgICAgICAgfSwKKyAgICB9KTsKKyAgICBhcnJheS5fX3Byb3RvX18gPSBvYmpl
Y3Q7CisgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5KTsKKyAgICBzaG91bGRCZShhcnJheVsw
XSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShhcnJheVsxXSwgMik7CisgICAgdGVzdEFycmF5
U3RvcmFnZUluQm91bmRzKGFycmF5LCAwLCA0Mik7CisgICAgdGVzdEFycmF5U3RvcmFnZUluQm91
bmRzKGFycmF5LCAxLCA0MCk7CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sIDQyKTsKKyAgICBzaG91
bGRCZShhcnJheVsxXSwgNDApOworICAgIHRlc3RBcnJheVN0b3JhZ2VJbkJvdW5kcyhhcnJheSwg
NCwgNDIpOworICAgIHNob3VsZEJlKGFycmF5WzRdLCA0Mik7CisgICAgc2hvdWxkQmUoYXJyYXku
bGVuZ3RoLCA1KTsKK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIg
YXJyYXkgPSBbLCAsIDMsIDRdOworICAgIHZhciBvYmplY3QgPSB7IGE6IDEwIH07CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnRpZXMob2JqZWN0LCB7CisgICAgICAgICIxIjogeworICAgICAgICAg
ICAgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuYTsgfSwKKyAgICAgICAgICAgIHNldDog
ZnVuY3Rpb24oeCkgeyB0aGlzLmEgPSB4ICsgMjA7IH0sCisgICAgICAgIH0sCisgICAgfSk7Cisg
ICAgYXJyYXkuX19wcm90b19fID0gb2JqZWN0OworICAgIGVuc3VyZUFycmF5U3RvcmFnZShhcnJh
eSk7CisgICAgc2hvdWxkQmUoYXJyYXlbMF0sIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoYXJy
YXlbMV0sIDEwKTsKKyAgICBzaG91bGRCZShhcnJheVs2XSwgdW5kZWZpbmVkKTsKKyAgICB0ZXN0
QXJyYXlTdG9yYWdlSW5Cb3VuZHMoYXJyYXksIDYsIDQyKTsKKyAgICB0ZXN0QXJyYXlTdG9yYWdl
SW5Cb3VuZHMoYXJyYXksIDEsIDQyKTsKKyAgICBzaG91bGRCZShhcnJheS5sZW5ndGgsIDcpOwor
ICAgIHNob3VsZEJlKGFycmF5WzFdLCA2Mik7CisgICAgc2hvdWxkQmUoYXJyYXlbNl0sIDQyKTsK
K30K
</data>
<flag name="review"
          id="353343"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>