<?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>180378</bug_id>
          
          <creation_ts>2017-12-04 14:10:33 -0800</creation_ts>
          <short_desc>Update composedPath to match the latest spec</short_desc>
          <delta_ts>2018-09-18 00:47:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1377905</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-12-04 14:10:33 -0800</bug_when>
    <thetext>Change the implementation per https://github.com/whatwg/dom/issues/525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447185</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-01 22:41:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/42843004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457965</commentid>
    <comment_count>2</comment_count>
      <attachid>349272</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-08 18:59:52 -0700</bug_when>
    <thetext>Created attachment 349272
WIP

This is a pretty novel approach. It avoids storing TreeScope or its parent scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457966</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-08 19:02:10 -0700</bug_when>
    <thetext>Attachment 349272 did not pass style-queue:


ERROR: Source/WebCore/dom/EventContext.cpp:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/dom/EventPath.cpp:265:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 3 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>1458905</commentid>
    <comment_count>4</comment_count>
      <attachid>349533</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-12 02:21:40 -0700</bug_when>
    <thetext>Created attachment 349533
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458906</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-12 02:23:29 -0700</bug_when>
    <thetext>Attachment 349533 did not pass style-queue:


ERROR: Source/WebCore/dom/EventContext.cpp:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 6 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>1458907</commentid>
    <comment_count>6</comment_count>
      <attachid>349534</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-12 02:29:40 -0700</bug_when>
    <thetext>Created attachment 349534
Added more change log description</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458908</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-12 02:31:25 -0700</bug_when>
    <thetext>Attachment 349534 did not pass style-queue:


ERROR: Source/WebCore/dom/EventContext.cpp:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 6 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>1459780</commentid>
    <comment_count>8</comment_count>
      <attachid>349534</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-14 10:27:27 -0700</bug_when>
    <thetext>Comment on attachment 349534
Added more change log description

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        This patch makes the check for whether a given node in the event path be included in composedPath
&gt; +        pre-determined at the time of the event dispatching per https://github.com/whatwg/dom/issues/525.
&gt; +        This was a fix for the issue that if an event listener in a closed shadow tree removes a node in the
&gt; +        same tree in the event path, then composedPath called on its shadow host, for example, will include
&gt; +        the removed node since it&apos;s no longer in the closed shadow tree.

At least some of what’s described in the change log here seems like it should be a comment in the code.

Even something like &quot;keeping track of depths allows us to dispatch the events to the right nodes even when ...&quot;.

&gt; Source/WebCore/ChangeLog:41
&gt; +        ancestors) and downwards (i.e. descendents) from the context object and decrease the *allowed depth*

Spelling error: descendants

&gt; Source/WebCore/ChangeLog:47
&gt; +        Note that the depths can be negative when a composed event is dispatched inside a closed shadow tree,
&gt; +        and it gets out of its shadow host.

Do we have a test case that covers this?

&gt; Source/WebCore/dom/EventPath.cpp:114
&gt; +    using MakeEventContext = std::unique_ptr&lt;EventContext&gt; (*)(Node&amp;, EventTarget*, EventTarget*, unsigned closedShadowDepth);

Maybe this should be int instead of unsigned?

&gt; LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-composed-path-after-dom-mutation-expected.txt:3
&gt; -FAIL Event.composedPath() should return the same result even if DOM is mutated (1/2) assert_array_equals: lengths differ, expected 3 got 2
&gt; -FAIL Event.composedPath() should return the same result even if DOM is mutated (2/2) assert_array_equals: lengths differ, expected 5 got 2
&gt; +PASS Event.composedPath() should return the same result even if DOM is mutated (1/2) 
&gt; +PASS Event.composedPath() should return the same result even if DOM is mutated (2/2) 

Is this really enough test coverage for the rather-subtle algorithm? Do we have tests covering all edge cases we can think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460472</commentid>
    <comment_count>9</comment_count>
      <attachid>349534</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-17 19:47:12 -0700</bug_when>
    <thetext>Comment on attachment 349534
Added more change log description

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

&gt;&gt; Source/WebCore/ChangeLog:41
&gt;&gt; +        ancestors) and downwards (i.e. descendents) from the context object and decrease the *allowed depth*
&gt; 
&gt; Spelling error: descendants

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:47
&gt;&gt; +        and it gets out of its shadow host.
&gt; 
&gt; Do we have a test case that covers this?

Yes, I had a bug where I had assumed it to be positive, and a bunch of tests started failing.

&gt;&gt; Source/WebCore/dom/EventPath.cpp:114
&gt;&gt; +    using MakeEventContext = std::unique_ptr&lt;EventContext&gt; (*)(Node&amp;, EventTarget*, EventTarget*, unsigned closedShadowDepth);
&gt; 
&gt; Maybe this should be int instead of unsigned?

Oops, right. Fixed.

&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-composed-path-after-dom-mutation-expected.txt:3
&gt;&gt; +PASS Event.composedPath() should return the same result even if DOM is mutated (2/2) 
&gt; 
&gt; Is this really enough test coverage for the rather-subtle algorithm? Do we have tests covering all edge cases we can think of?

Yes, there are more tests for composed path in complicated shadow trees. e.g.
imported/w3c/web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html
imported/w3c/web-platform-tests/shadow-dom/event-composed-path-with-related-target.html
imported/w3c/web-platform-tests/shadow-dom/event-composed-path.html
These tests are specifically testing when the tree is mutated during event dispatching.
In theory, we could add more tests but I&apos;ve artificially introduced bugs into my code,
and some test always seems to have my bug so we seem to have a pretty decent test coverage as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460478</commentid>
    <comment_count>10</comment_count>
      <attachid>349534</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-17 20:09:32 -0700</bug_when>
    <thetext>Comment on attachment 349534
Added more change log description

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

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        the removed node since it&apos;s no longer in the closed shadow tree.
&gt; 
&gt; At least some of what’s described in the change log here seems like it should be a comment in the code.
&gt; 
&gt; Even something like &quot;keeping track of depths allows us to dispatch the events to the right nodes even when ...&quot;.

Sure, added a comment next to closedShadowDepth as follows:
int closedShadowDepth = 0;
// Depths are used to decided which nodes are excluded in event.composedPath when the tree is mutated during event dispatching.
// They could be negative for nodes outside the shadow tree of the target node.

And then to EventPath::computePathUnclosedToTarget, I added the following comments:
// Any node whose depth computed in EventPath::buildPath is greater than the context object is excluded.
// Because we can exit out of a closed shadow tree and re-enter another closed shadow tree via a slot,
// we decrease the *allowed depth* whenever we moved to a &quot;shallower&quot; (closer-to-document) tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460479</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-17 20:10:29 -0700</bug_when>
    <thetext>Thanks for the review! Anne is incorporating this algorithm into the spec in https://github.com/whatwg/dom/issues/684 so perhaps this code becomes more self-evidently correct once that happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460484</commentid>
    <comment_count>12</comment_count>
      <attachid>349994</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-17 20:41:57 -0700</bug_when>
    <thetext>Created attachment 349994
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460485</commentid>
    <comment_count>13</comment_count>
      <attachid>349994</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-17 20:42:10 -0700</bug_when>
    <thetext>Comment on attachment 349994
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460486</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-17 20:43:15 -0700</bug_when>
    <thetext>Attachment 349994 did not pass style-queue:


ERROR: Source/WebCore/dom/EventContext.cpp:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 6 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>1460530</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-18 00:47:37 -0700</bug_when>
    <thetext>Committed r236103: &lt;https://trac.webkit.org/changeset/236103&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349272</attachid>
            <date>2018-09-08 18:59:52 -0700</date>
            <delta_ts>2018-09-12 02:21:39 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip180378.patch</filename>
            <type>text/plain</type>
            <size>10855</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCShyZXZpc2lvbiAyMzU4MjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsMTAgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXZlbnRDb250ZXh0OjpF
dmVudENvbnRleHQoTm9kZSogbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50
VGFyZ2V0KiB0YXJnZXQpCi0gICAgOiBtX25vZGUobm9kZSkKLSAgICAsIG1fY3VycmVudFRhcmdl
dChjdXJyZW50VGFyZ2V0KQotICAgICwgbV90YXJnZXQodGFyZ2V0KQorRXZlbnRDb250ZXh0OjpF
dmVudENvbnRleHQoTm9kZSogbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50
VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkKKyAgICA6IG1fbm9kZSB7IG5v
ZGUgfQorICAgICwgbV9jdXJyZW50VGFyZ2V0IHsgY3VycmVudFRhcmdldCB9CisgICAgLCBtX3Rh
cmdldCB7IHRhcmdldCB9CisgICAgLCBtX2Nsb3NlZFNoYWRvd0RlcHRoIHsgY2xvc2VkU2hhZG93
RGVwdGggfQogewogICAgIEFTU0VSVCghaXNVbnJlYWNoYWJsZU5vZGUobV90YXJnZXQuZ2V0KCkp
KTsKIH0KQEAgLTY2LDggKzY3LDggQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU1vdXNlT3JG
b2N1c0V2ZW50Q29udGV4dDo6TW91c2VPckZvY3VzRXZlbnRDb250ZXh0KE5vZGUmIG5vZGUsIEV2
ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0KQotICAgIDogRXZl
bnRDb250ZXh0KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQpCitNb3VzZU9yRm9jdXNFdmVu
dENvbnRleHQ6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dChOb2RlJiBub2RlLCBFdmVudFRhcmdl
dCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0Rl
cHRoKQorICAgIDogRXZlbnRDb250ZXh0KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNs
b3NlZFNoYWRvd0RlcHRoKQogewogfQogCkBAIC04Nyw4ICs4OCw4IEBACiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogCi1Ub3VjaEV2ZW50Q29udGV4dDo6VG91Y2hFdmVudENvbnRleHQoTm9k
ZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQp
Ci0gICAgOiBFdmVudENvbnRleHQoJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCkKK1RvdWNo
RXZlbnRDb250ZXh0OjpUb3VjaEV2ZW50Q29udGV4dChOb2RlJiBub2RlLCBFdmVudFRhcmdldCog
Y3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRo
KQorICAgIDogRXZlbnRDb250ZXh0KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3Nl
ZFNoYWRvd0RlcHRoKQogICAgICwgbV90b3VjaGVzKFRvdWNoTGlzdDo6Y3JlYXRlKCkpCiAgICAg
LCBtX3RhcmdldFRvdWNoZXMoVG91Y2hMaXN0OjpjcmVhdGUoKSkKICAgICAsIG1fY2hhbmdlZFRv
dWNoZXMoVG91Y2hMaXN0OjpjcmVhdGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dENvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0
LmgJKHJldmlzaW9uIDIzNTgyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogY2xhc3MgRXZlbnRDb250ZXh0IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFdmVudENvbnRleHQo
Tm9kZSosIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCopOworICAgIEV2
ZW50Q29udGV4dChOb2RlKiwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0
KiwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICB2aXJ0dWFsIH5FdmVudENvbnRleHQoKTsK
IAogICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGUuZ2V0KCk7IH0KQEAgLTQz
LDYgKzQzLDggQEAKICAgICBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudFRhcmdldC5nZXQoKTsgfQogICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQoKSBj
b25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQogCisgICAgaW50IGNsb3NlZFNoYWRvd0Rl
cHRoKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRTaGFkb3dEZXB0aDsgfQorCiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNNb3VzZU9yRm9jdXNFdmVudENvbnRleHQoKSBjb25zdDsKQEAgLTU2LDExICs1OCwxMiBA
QAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX2N1
cnJlbnRUYXJnZXQ7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKKyAgICBpbnQg
bV9jbG9zZWRTaGFkb3dEZXB0aCB7IDAgfTsKIH07CiAKIGNsYXNzIE1vdXNlT3JGb2N1c0V2ZW50
Q29udGV4dCBmaW5hbCA6IHB1YmxpYyBFdmVudENvbnRleHQgewogcHVibGljOgotICAgIE1vdXNl
T3JGb2N1c0V2ZW50Q29udGV4dChOb2RlJiwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2
ZW50VGFyZ2V0Kik7CisgICAgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KE5vZGUmLCBFdmVudFRh
cmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgp
OwogICAgIHZpcnR1YWwgfk1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCgpOwogCiAgICAgTm9kZSog
cmVsYXRlZFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRlZFRhcmdldC5nZXQoKTsgfQpA
QCAtNzcsNyArODAsNyBAQAogCiBjbGFzcyBUb3VjaEV2ZW50Q29udGV4dCBmaW5hbCA6IHB1Ymxp
YyBFdmVudENvbnRleHQgewogcHVibGljOgotICAgIFRvdWNoRXZlbnRDb250ZXh0KE5vZGUmLCBF
dmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqKTsKKyAgICBUb3VjaEV2ZW50
Q29udGV4dChOb2RlJiwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0Kiwg
aW50IGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICB2aXJ0dWFsIH5Ub3VjaEV2ZW50Q29udGV4dCgp
OwogCiAgICAgZW51bSBUb3VjaExpc3RUeXBlIHsgVG91Y2hlcywgVGFyZ2V0VG91Y2hlcywgQ2hh
bmdlZFRvdWNoZXMgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCShyZXZpc2lvbiAy
MzU4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTMgKzM1LDEzIEBACiAKIGNsYXNzIFdpbmRvd0V2ZW50Q29udGV4dCBmaW5hbCA6
IHB1YmxpYyBFdmVudENvbnRleHQgewogcHVibGljOgotICAgIFdpbmRvd0V2ZW50Q29udGV4dChO
b2RlJiwgRE9NV2luZG93JiwgRXZlbnRUYXJnZXQmKTsKKyAgICBXaW5kb3dFdmVudENvbnRleHQo
Tm9kZSYsIERPTVdpbmRvdyYsIEV2ZW50VGFyZ2V0JiwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKTsK
IHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCYpIGNvbnN0IGZpbmFs
OwogfTsKIAotaW5saW5lIFdpbmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KE5v
ZGUmIG5vZGUsIERPTVdpbmRvdyYgY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQmIHRhcmdldCkK
LSAgICA6IEV2ZW50Q29udGV4dCgmbm9kZSwgJmN1cnJlbnRUYXJnZXQsICZ0YXJnZXQpCitpbmxp
bmUgV2luZG93RXZlbnRDb250ZXh0OjpXaW5kb3dFdmVudENvbnRleHQoTm9kZSYgbm9kZSwgRE9N
V2luZG93JiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCYgdGFyZ2V0LCBpbnQgY2xvc2VkU2hh
ZG93RGVwdGgpCisgICAgOiBFdmVudENvbnRleHQoJm5vZGUsICZjdXJyZW50VGFyZ2V0LCAmdGFy
Z2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkKIHsKIH0KIApAQCAtMTExLDE5ICsxMTEsMTkgQEAKIAog
dm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2
ZW50KQogewotICAgIHVzaW5nIE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RXZl
bnRDb250ZXh0PiAoKikoTm9kZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJnZXQqKTsKLSAgICBN
YWtlRXZlbnRDb250ZXh0IG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRU
YXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwg
dGFyZ2V0KTsKKyAgICB1c2luZyBNYWtlRXZlbnRDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEV2
ZW50Q29udGV4dD4gKCopKE5vZGUmLCBFdmVudFRhcmdldCosIEV2ZW50VGFyZ2V0KiwgdW5zaWdu
ZWQgY2xvc2VkU2hhZG93RGVwdGgpOworICAgIE1ha2VFdmVudENvbnRleHQgbWFrZUV2ZW50Q29u
dGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRU
YXJnZXQqIHRhcmdldCwgdW5zaWduZWQgY2xvc2VkU2hhZG93RGVwdGgpIHsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwg
dGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgfTsKICAgICBpZiAoaXM8TW91c2VFdmVu
dD4oZXZlbnQpIHx8IGV2ZW50LmlzRm9jdXNFdmVudCgpKSB7Ci0gICAgICAgIG1ha2VFdmVudENv
bnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50
VGFyZ2V0KiB0YXJnZXQpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4o
bm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KTsKKyAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9
IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQq
IHRhcmdldCwgdW5zaWduZWQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxF
dmVudENvbnRleHQ+IHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNl
T3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRT
aGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgaWYgKGlzPFRvdWNoRXZlbnQ+KGV2ZW50KSkgewotICAgICAgICBtYWtlRXZlbnRDb250
ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRh
cmdldCogdGFyZ2V0KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3Vy
cmVudFRhcmdldCwgdGFyZ2V0KTsKKyAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2Rl
JiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwg
dW5zaWduZWQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRl
eHQ+IHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoRXZlbnRDb250
ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAg
ICAgICAgfTsKICAgICB9CiAjZW5kaWYKQEAgLTEzMCw5ICsxMzAsMTAgQEAKIAogICAgIE5vZGUq
IG5vZGUgPSBub2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50KCZvcmlnaW5hbFRhcmdldCk7CiAgICAg
Tm9kZSogdGFyZ2V0ID0gbm9kZSA/IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpu
b2RlKSA6IG51bGxwdHI7CisgICAgaW50IGNsb3NlZFNoYWRvd0RlcHRoID0gMDsKICAgICB3aGls
ZSAobm9kZSkgewogICAgICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICAgICAgbV9wYXRoLmFw
cGVuZChtYWtlRXZlbnRDb250ZXh0KCpub2RlLCBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRS
dWxlcygqbm9kZSksIHRhcmdldCkpOworICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlRXZl
bnRDb250ZXh0KCpub2RlLCBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygqbm9kZSks
IHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKIAogICAgICAgICAgICAgaWYgKGlzPFNoYWRv
d1Jvb3Q+KCpub2RlKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0NCw3ICsxNDUsNyBA
QAogICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRv
dyA9IGRvd25jYXN0PERvY3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdpbmRvd0V2ZW50
Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2luZG93RXZlbnRDb250ZXh0
Pigqbm9kZSwgKndpbmRvdywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNTMsNiArMTU0LDggQEAKICAgICAgICAgICAgIGF1dG8qIHNoYWRvd1Jvb3RPZlBhcmVu
dCA9IHBhcmVudC0+c2hhZG93Um9vdCgpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNoYWRv
d1Jvb3RPZlBhcmVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogYXNzaWduZWRTbG90
ID0gc2hhZG93Um9vdE9mUGFyZW50LT5maW5kQXNzaWduZWRTbG90KCpub2RlKSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoc2hhZG93Um9vdE9mUGFyZW50LT5tb2RlKCkgIT0gU2hhZG93Um9v
dE1vZGU6Ok9wZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWRTaGFkb3dEZXB0aCsr
OwogICAgICAgICAgICAgICAgICAgICAvLyBub2RlIGlzIGFzc2lnbmVkIHRvIGEgc2xvdC4gQ29u
dGludWUgZGlzcGF0Y2hpbmcgdGhlIGV2ZW50IGF0IHRoaXMgc2xvdC4KICAgICAgICAgICAgICAg
ICAgICAgcGFyZW50ID0gYXNzaWduZWRTbG90OwogICAgICAgICAgICAgICAgIH0KQEAgLTE2NSw2
ICsxNjgsOCBAQAogICAgICAgICBpZiAoIXNob3VsZEV2ZW50Q3Jvc3NTaGFkb3dCb3VuZGFyeShl
dmVudCwgc2hhZG93Um9vdCwgb3JpZ2luYWxUYXJnZXQpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBub2RlID0gc2hhZG93Um9vdC5ob3N0KCk7CisgICAgICAgIGlmIChzaGFkb3dSb290
Lm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6T3BlbikKKyAgICAgICAgICAgIGNsb3NlZFNoYWRv
d0RlcHRoLS07CiAgICAgICAgIGlmIChleGl0aW5nU2hhZG93VHJlZU9mVGFyZ2V0KQogICAgICAg
ICAgICAgdGFyZ2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwog
ICAgIH0KQEAgLTI1NCwyOSArMjU5LDQ0IEBACiBWZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBh
dGg6OmNvbXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldChjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0
KSBjb25zdAogewogICAgIFZlY3RvcjxFdmVudFRhcmdldCo+IHBhdGg7Ci0gICAgcGF0aC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fcGF0aC5zaXplKCkpOwotICAgIGNvbnN0IE5vZGUqIHRhcmdl
dE5vZGUgPSBudWxscHRyOwotICAgIGlmIChpczxOb2RlPih0YXJnZXQpKQotICAgICAgICB0YXJn
ZXROb2RlID0gJmRvd25jYXN0PE5vZGU+KHRhcmdldCk7Ci0gICAgZWxzZSBpZiAoaXM8RE9NV2lu
ZG93Pih0YXJnZXQpKSB7Ci0gICAgICAgIHRhcmdldE5vZGUgPSBkb3duY2FzdDxET01XaW5kb3c+
KHRhcmdldCkuZG9jdW1lbnQoKTsKLSAgICAgICAgQVNTRVJUKHRhcmdldE5vZGUpOwotICAgIH0K
LSAgICBmb3IgKGF1dG8mIGNvbnRleHQgOiBtX3BhdGgpIHsKLSAgICAgICAgYXV0byogY3VycmVu
dFRhcmdldCA9IGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKTsKLSAgICAgICAgaWYgKCFpczxOb2Rl
PihjdXJyZW50VGFyZ2V0KSB8fCAhdGFyZ2V0Tm9kZSB8fCAhdGFyZ2V0Tm9kZS0+aXNDbG9zZWRT
aGFkb3dIaWRkZW4oZG93bmNhc3Q8Tm9kZT4oKmN1cnJlbnRUYXJnZXQpKSkKLSAgICAgICAgICAg
IHBhdGgudW5jaGVja2VkQXBwZW5kKGN1cnJlbnRUYXJnZXQpOwotICAgIH0KKyAgICBhdXRvIHBh
dGhTaXplID0gbV9wYXRoLnNpemUoKTsKKyAgICBwYXRoLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
cGF0aFNpemUpOworCisgICAgYXV0byBjdXJyZW50VGFyZ2V0SW5kZXggPSBtX3BhdGguZmluZE1h
dGNoaW5nKFsmdGFyZ2V0XSAoYXV0byYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC0+Y3VycmVu
dFRhcmdldCgpID09ICZ0YXJnZXQ7IH0pOworICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRUYXJn
ZXRJbmRleCAhPSBub3RGb3VuZCk7CisgICAgYXV0byBjdXJyZW50VGFyZ2V0RGVwdGggPSBtX3Bh
dGhbY3VycmVudFRhcmdldEluZGV4XS0+Y2xvc2VkU2hhZG93RGVwdGgoKTsKKworICAgIGF1dG8g
YXBwZW5kVGFyZ2V0V2l0aExlc3NlckRlcHRoID0gWyZwYXRoXSAoY29uc3QgRXZlbnRDb250ZXh0
JiBjdXJyZW50Q29udGV4dCwgaW50JiBjdXJyZW50RGVwdGhBbGxvd2VkKSB7CisgICAgICAgIGF1
dG8gZGVwdGggPSBjdXJyZW50Q29udGV4dC5jbG9zZWRTaGFkb3dEZXB0aCgpOworICAgICAgICBi
b29sIGNvbnRleHRJc0luc2lkZUlubmVyU2hhZG93VHJlZSA9IGRlcHRoID4gY3VycmVudERlcHRo
QWxsb3dlZDsKKyAgICAgICAgaWYgKGNvbnRleHRJc0luc2lkZUlubmVyU2hhZG93VHJlZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYm9vbCBtb3ZlZE91dE9mU2hhZG93VHJlZSA9IGRl
cHRoIDwgY3VycmVudERlcHRoQWxsb3dlZDsKKyAgICAgICAgaWYgKG1vdmVkT3V0T2ZTaGFkb3dU
cmVlKQorICAgICAgICAgICAgY3VycmVudERlcHRoQWxsb3dlZCA9IGRlcHRoOworICAgICAgICBw
YXRoLnVuY2hlY2tlZEFwcGVuZChjdXJyZW50Q29udGV4dC5jdXJyZW50VGFyZ2V0KCkpOworICAg
IH07CisKKyAgICBhdXRvIGN1cnJlbnREZXB0aEFsbG93ZWQgPSBjdXJyZW50VGFyZ2V0RGVwdGg7
CisgICAgZm9yIChpbnQgaSA9IGN1cnJlbnRUYXJnZXRJbmRleDsgaSA+PSAwOyAtLWkpCisgICAg
ICAgIGFwcGVuZFRhcmdldFdpdGhMZXNzZXJEZXB0aCgqbV9wYXRoW2ldLCBjdXJyZW50RGVwdGhB
bGxvd2VkKTsKKyAgICBwYXRoLnJldmVyc2UoKTsKKworICAgIGN1cnJlbnREZXB0aEFsbG93ZWQg
PSBjdXJyZW50VGFyZ2V0RGVwdGg7CisgICAgZm9yICh1bnNpZ25lZCBpID0gY3VycmVudFRhcmdl
dEluZGV4ICsgMTsgaSA8IHBhdGhTaXplOyArK2kpCisgICAgICAgIGFwcGVuZFRhcmdldFdpdGhM
ZXNzZXJEZXB0aCgqbV9wYXRoW2ldLCBjdXJyZW50RGVwdGhBbGxvd2VkKTsKKwogICAgIHJldHVy
biBwYXRoOwogfQogCiBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RWxlbWVudCo+
JiB0YXJnZXRzKQogeworICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHdyb25nLiBX
aHkgYXJlIHdlIG5vdCBmaXJpbmcgZXZlbnRzIGluIHRoZSBjbG9zZWQgc2hhZG93IHRyZWVzPwog
ICAgIGZvciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykgewogICAgICAgICBBU1NFUlQodGFyZ2V0
KTsKICAgICAgICAgTm9kZSogb3JpZ2luID0gKnRhcmdldHMuYmVnaW4oKTsKICAgICAgICAgaWYg
KCF0YXJnZXQtPmlzQ2xvc2VkU2hhZG93SGlkZGVuKCpvcmlnaW4pKQotICAgICAgICAgICAgbV9w
YXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQs
IG9yaWdpbikpOworICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2
ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkpOwogICAgIH0KIH0KIApAQCAt
Mjg1LDcgKzMwNSw3IEBACiAgICAgZm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRzKSB7CiAgICAg
ICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRhcmdldCkpOwot
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0PihudWxs
cHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCkpKTsKKyAgICAgICAgbV9wYXRoLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5i
ZWdpbigpLCAwKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349533</attachid>
            <date>2018-09-12 02:21:40 -0700</date>
            <delta_ts>2018-09-12 02:29:39 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-180378-20180912022140.patch</filename>
            <type>text/plain</type>
            <size>17022</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDE4LTA5LTEyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSBjb21wb3NlZFBhdGgg
dG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyODQzMDA0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggbWFrZXMgdGhlIGNoZWNrIGZvciB3aGV0aGVyIGEgZ2l2ZW4gbm9kZSBpbiB0aGUgZXZl
bnQgcGF0aCBiZSBpbmNsdWRlZCBpbiBjb21wb3NlZFBhdGgKKyAgICAgICAgcHJlLWRldGVybWlu
ZWQgYXQgdGhlIHRpbWUgb2YgdGhlIGV2ZW50IGRpc3BhdGNoaW5nIHBlciBodHRwczovL2dpdGh1
Yi5jb20vd2hhdHdnL2RvbS9pc3N1ZXMvNTI1LgorICAgICAgICBUaGlzIHdhcyBhIGZpeCBmb3Ig
dGhlIGlzc3VlIHRoYXQgaWYgYW4gZXZlbnQgbGlzdGVuZXIgaW4gYSBjbG9zZWQgc2hhZG93IHRy
ZWUgcmVtb3ZlcyBhIG5vZGUgaW4gdGhlCisgICAgICAgIHNhbWUgdHJlZSBpbiB0aGUgZXZlbnQg
cGF0aCwgdGhlbiBjb21wb3NlZFBhdGggY2FsbGVkIG9uIGl0cyBzaGFkb3cgaG9zdCwgZm9yIGV4
YW1wbGUsIHdpbGwgaW5jbHVkZQorICAgICAgICB0aGUgcmVtb3ZlZCBub2RlIHNpbmNlIGl0J3Mg
bm8gbG9uZ2VyIGluIHRoZSBjbG9zZWQgc2hhZG93IHRyZWUuCisKKyAgICAgICAgTmFpdmVseSwg
aW1wbGVtZW50aW5nIHRoaXMgYmVoYXZpb3Igd291bGQgcmVxdWlyZSByZW1lbWJlcmluZyB0aGUg
b3JpZ2luYWwgZG9jdW1lbnQgb3Igc2hhZG93IHJvb3QKKyAgICAgICAgb2YgZWFjaCBub2RlIGlu
IHRoZSBldmVudCBwYXRoIGFzIHdlbGwgYXMgaXRzIHBhcmVudCBzaGFkb3cgcm9vdCwgb3Igd29y
c2Ugd2hpY2ggbm9kZSBpcyBkaXNjbG9zZWQKKyAgICAgICAgdG8gZXZlcnkgb3RoZXIgbm9kZSBh
dCB0aGUgdGltZSBvZiBjb21wdXRpbmcgdGhlIGV2ZW50IHBhdGguCisKKyAgICAgICAgVGhpcyBw
YXRjaCB0YWtlcyBhIG1vcmUgbm92ZWwgYW5kIGVmZmljaWVudCBhcHByb2FjaCB0byBpbXBsZW1l
bnQgdGhlIG5ldyBiZWhhdmlvciBieSBhZGRpbmcgYSBzaW5nbGUKKyAgICAgICAgaW50ZWdlciBp
bmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgY2xvc2VkLW1vZGUgc2hhZG93IHJvb3QgYW5jZXN0b3Jz
IG9mIGVhY2ggbm9kZSBpbiB0aGUgZXZlbnQgcGF0aC4KKyAgICAgICAgSW4gY29tcHV0ZVBhdGhV
bmNsb3NlZFRvVGFyZ2V0LCBhbnkgbm9kZSB3aG9zZSAqZGVwdGgqIGlzIGdyZWF0ZXIgdGhhbiB0
aGUgY29udGV4dCBvYmplY3QgaXMgZXhjbHVkZWQuCisKKyAgICAgICAgQ29uc2lkZXIgdGhlIGZv
bGxvd2luZyBleGFtcGxlOgorICAgICAgICBkaXYgLS0tLS0tLSBTaGFkb3dSb290IChjbG9zZWQp
CisgICAgICAgICAgKy0gc3BhbiAgICAgKy0gc2xvdAorICAgICAgICBJZiBhbiBldmVudCBpcyBk
aXNwYXRjaGVkIG9uIHNwYW4sIHRoZW4gdGhlIGV2ZW50IHBhdGggd291bGQgYmUgW3NwYW4sIHNs
b3QsIFNoYWRvd1Jvb3QsIGRpdl0uIFRoZW4KKyAgICAgICAgdGhlIHZhbHVlcyBvZiBpbnRlZ2Vy
cyBhc3NpZ25lZCB0byBlYWNoIG5vZGUgd291bGQgYmU6IFswLCAxLCAxLCAwXSByZXNwZWN0aXZl
bHkuIFdoZW4gY29tcG9zZWRQYXRoCisgICAgICAgIGlzIGNhbGxlZCBvbiBzcGFuIG9yIGRpdiwg
c2xvdCBhbmQgU2hhZG93Um9vdCBhcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGhhdmUgYSBncmVh
dGVyICpkZXB0aCogdmFsdWUuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgdGhpcyBzaW1wbGlz
dGljIHNvbHV0aW9uIGRvZXNuJ3Qgd29yayB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzaGFkb3cg
cm9vdHMgb2YgdGhlIHNhbWUKKyAgICAgICAgZGVwdGggdGhyb3VnaCB3aGljaCBhbiBldmVudCBp
cyBkaXNwYXRjaGVkIGFzIGluOgorICAgICAgICBzZWN0aW9uIC0tIFNoYWRvd1Jvb3QgKGNsb3Nl
ZCwgU1IyKQorICAgICAgICAgIHwgICAgICAgICAgKy0gc2xvdCAoczIpCisgICAgICAgICAgK2Rp
diAtLS0tLS0gU2hhZG93Um9vdCAoY2xvc2VkLCBTUjEpCisgICAgICAgICAgICArLSBzcGFuICAg
ICArLSBzbG90IChzMSkKKyAgICAgICAgSWYgYW4gZXZlbnQgaXMgZGlzcGF0Y2hlZCBvbiBzcGFu
LCB0aGUgZXZlbnQgcGF0aCB3b3VsZCBiZSBbc3BhbiwgczEsIFNSMSwgZGl2LCBzMiwgU1IyLCBz
ZWN0aW9uXS4KKyAgICAgICAgVGhlIHZhbHVlcyBvZiBpbnRlZ2VycyBhc3NpZ25lZCBhcmU6IFsw
LCAxLCAxLCAwLCAxLCAxLCAwXSByZXNwZWN0aXZlbHkuIFdoZW4gY29tcG9zZWRQYXRoIGlzIGNh
bGxlZAorICAgICAgICBvbiBTUjEsIHRoZSBzaW1wbGlzdGljIGFwcHJvYWNoIHdvdWxkIGluY2x1
ZGUgczIgYW5kIFNSMiwgd2hpY2ggd291bGQgYmUgd3JvbmcuCisKKyAgICAgICAgVG8gYWNjb3Vu
dCBmb3IgdGhpcyBjYXNlLCBpbiBjb21wdXRlUGF0aFVuY2xvc2VkVG9UYXJnZXQsIHdlIHRyYXZl
cnNlIHRoZSBldmVudCBwYXRoIHVwd2FyZHMgKGkuZS4KKyAgICAgICAgYW5jZXN0b3JzKSBhbmQg
ZG93bndhcmRzIChpLmUuIGRlc2NlbmRlbnRzKSBmcm9tIHRoZSBjb250ZXh0IG9iamVjdCBhbmQg
ZGVjcmVhc2UgdGhlICphbGxvd2VkIGRlcHRoKgorICAgICAgICBvZiBzaGFkb3cgdHJlZXMgd2hl
biB3ZSB0cmF2ZXJzZSBvdXQgb2YgYSBzaGFkb3cgdHJlZSBpbiBlaXRoZXIgZGlyZWN0aW9uLiBX
aGVuIHRyYXZlcnNpbmcgdXB3YXJkcywKKyAgICAgICAgdGhlcmVmb3JlLCBtb3Zpbmcgb3V0IG9m
IGEgc2hhZG93IHJvb3QgdG8gaXRzIGhvc3Qgd291bGQgd291bGQgZGVjcmVhc2UgdGhlIGFsbG93
ZWQgZGVwdGguIFdoZW4KKyAgICAgICAgdHJhdmVyc2luZyBkb3dhcmRzLCBtb3ZpbmcgZnJvbSBh
IHNsb3QgZWxlbWVudCB0byBpdHMgYXNzaWduZWQgbm9kZSB3b3VsZCBkZWNyZWFzZSB0aGUgYWxs
b3dlZCBkZXB0aC4KKworICAgICAgICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NoYWRvdy1kb20vZXZlbnQtY29tcG9zZWQtcGF0aC1hZnRlci1kb20tbXV0YXRpb24uaHRt
bAorCisgICAgICAgICogZG9tL0V2ZW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudENvbnRleHQ6OkV2ZW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZU9yRm9j
dXNFdmVudENvbnRleHQ6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hFdmVudENvbnRleHQpOgorICAgICAgICAqIGRv
bS9FdmVudENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Q29udGV4dDo6Y2xvc2Vk
U2hhZG93RGVwdGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRXZlbnRQYXRoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldpbmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQYXRoKTogQ29tcHV0ZSB0aGUg
Y2xvc2VkIHNoYWRvdyB0cmVlJ3MgZGVwdGhzIGZvciBlYWNoIG5vZGUgaW4gdGhlIHBhdGguCisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlUGF0aFVuY2xvc2VkVG9UYXJnZXQgY29uc3QpOiBJbXBs
ZW1lbnRlZCB0aGUgYWZvcmVtZW50aW9uZWQgYWxnb3JpdGhtLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRQYXRoOjpFdmVudFBhdGgpOgorCiAyMDE4LTA5LTExICBCYXN1a2UgU3V6dWtpICA8QmFz
dWtlLlN1enVraUBzb255LmNvbT4KIAogICAgICAgICBbQ3VybF0gV2ViSW5zcGVjdG9yIGRvZXNu
J3QgZGlzcGxheSByZXF1ZXN0IGhlYWRlcnMgYWRkZWQgZHVyaW5nIHByb2Nlc3NpbmcuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAkocmV2aXNpb24gMjM1OTMwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEw
ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV2ZW50Q29udGV4dDo6RXZlbnRD
b250ZXh0KE5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdl
dCogdGFyZ2V0KQotICAgIDogbV9ub2RlKG5vZGUpCi0gICAgLCBtX2N1cnJlbnRUYXJnZXQoY3Vy
cmVudFRhcmdldCkKLSAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK0V2ZW50Q29udGV4dDo6RXZlbnRD
b250ZXh0KE5vZGUqIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdl
dCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpCisgICAgOiBtX25vZGUgeyBub2RlIH0K
KyAgICAsIG1fY3VycmVudFRhcmdldCB7IGN1cnJlbnRUYXJnZXQgfQorICAgICwgbV90YXJnZXQg
eyB0YXJnZXQgfQorICAgICwgbV9jbG9zZWRTaGFkb3dEZXB0aCB7IGNsb3NlZFNoYWRvd0RlcHRo
IH0KIHsKICAgICBBU1NFUlQoIWlzVW5yZWFjaGFibGVOb2RlKG1fdGFyZ2V0LmdldCgpKSk7CiB9
CkBAIC02Niw4ICs2Nyw4IEBAIGJvb2wgRXZlbnRDb250ZXh0Ojppc1RvdWNoRXZlbnRDb250ZXh0
KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6TW91
c2VPckZvY3VzRXZlbnRDb250ZXh0KE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFy
Z2V0LCBFdmVudFRhcmdldCogdGFyZ2V0KQotICAgIDogRXZlbnRDb250ZXh0KCZub2RlLCBjdXJy
ZW50VGFyZ2V0LCB0YXJnZXQpCitNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ6Ok1vdXNlT3JGb2N1
c0V2ZW50Q29udGV4dChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZl
bnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKQorICAgIDogRXZlbnRDb250
ZXh0KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKQogewog
fQogCkBAIC04Nyw4ICs4OCw4IEBAIGJvb2wgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0Ojppc01v
dXNlT3IKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKLVRvdWNoRXZlbnRDb250ZXh0OjpU
b3VjaEV2ZW50Q29udGV4dChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwg
RXZlbnRUYXJnZXQqIHRhcmdldCkKLSAgICA6IEV2ZW50Q29udGV4dCgmbm9kZSwgY3VycmVudFRh
cmdldCwgdGFyZ2V0KQorVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoRXZlbnRDb250ZXh0KE5vZGUm
IG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBp
bnQgY2xvc2VkU2hhZG93RGVwdGgpCisgICAgOiBFdmVudENvbnRleHQoJm5vZGUsIGN1cnJlbnRU
YXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpCiAgICAgLCBtX3RvdWNoZXMoVG91Y2hM
aXN0OjpjcmVhdGUoKSkKICAgICAsIG1fdGFyZ2V0VG91Y2hlcyhUb3VjaExpc3Q6OmNyZWF0ZSgp
KQogICAgICwgbV9jaGFuZ2VkVG91Y2hlcyhUb3VjaExpc3Q6OmNyZWF0ZSgpKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudENvbnRleHQuaAkocmV2aXNpb24gMjM1OTMwKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTUgQEAg
Y2xhc3MgVG91Y2hMaXN0OwogY2xhc3MgRXZlbnRDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFdmVudENvbnRleHQoTm9kZSosIEV2ZW50VGFyZ2V0
KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCopOworICAgIEV2ZW50Q29udGV4dChOb2RlKiwg
RXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiwgaW50IGNsb3NlZFNoYWRv
d0RlcHRoKTsKICAgICB2aXJ0dWFsIH5FdmVudENvbnRleHQoKTsKIAogICAgIE5vZGUqIG5vZGUo
KSBjb25zdCB7IHJldHVybiBtX25vZGUuZ2V0KCk7IH0KICAgICBFdmVudFRhcmdldCogY3VycmVu
dFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRhcmdldC5nZXQoKTsgfQogICAgIEV2
ZW50VGFyZ2V0KiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQogCisg
ICAgaW50IGNsb3NlZFNoYWRvd0RlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRTaGFkb3dE
ZXB0aDsgfQorCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50JikgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZU9yRm9jdXNFdmVudENvbnRleHQoKSBjb25z
dDsKQEAgLTU2LDExICs1OCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9k
ZTsKICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fY3VycmVudFRhcmdldDsKICAgICBSZWZQdHI8
RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OworICAgIGludCBtX2Nsb3NlZFNoYWRvd0RlcHRoIHsgMCB9
OwogfTsKIAogY2xhc3MgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0IGZpbmFsIDogcHVibGljIEV2
ZW50Q29udGV4dCB7CiBwdWJsaWM6Ci0gICAgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KE5vZGUm
LCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqKTsKKyAgICBNb3VzZU9y
Rm9jdXNFdmVudENvbnRleHQoTm9kZSYsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVu
dFRhcmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgdmlydHVhbCB+TW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0KCk7CiAKICAgICBOb2RlKiByZWxhdGVkVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWxhdGVkVGFyZ2V0LmdldCgpOyB9CkBAIC03Nyw3ICs4MCw3IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFRvdWNoRXZlbnRDb250ZXh0IGZpbmFsIDogcHVibGljIEV2ZW50Q29udGV4dCB7
CiBwdWJsaWM6Ci0gICAgVG91Y2hFdmVudENvbnRleHQoTm9kZSYsIEV2ZW50VGFyZ2V0KiBjdXJy
ZW50VGFyZ2V0LCBFdmVudFRhcmdldCopOworICAgIFRvdWNoRXZlbnRDb250ZXh0KE5vZGUmLCBF
dmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hhZG93
RGVwdGgpOwogICAgIHZpcnR1YWwgflRvdWNoRXZlbnRDb250ZXh0KCk7CiAKICAgICBlbnVtIFRv
dWNoTGlzdFR5cGUgeyBUb3VjaGVzLCBUYXJnZXRUb3VjaGVzLCBDaGFuZ2VkVG91Y2hlcyB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAJKHJldmlzaW9uIDIzNTkzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyArMzUs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXaW5kb3dFdmVudENvbnRleHQgZmlu
YWwgOiBwdWJsaWMgRXZlbnRDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBXaW5kb3dFdmVudENvbnRl
eHQoTm9kZSYsIERPTVdpbmRvdyYsIEV2ZW50VGFyZ2V0Jik7CisgICAgV2luZG93RXZlbnRDb250
ZXh0KE5vZGUmLCBET01XaW5kb3cmLCBFdmVudFRhcmdldCYsIGludCBjbG9zZWRTaGFkb3dEZXB0
aCk7CiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQmKSBjb25zdCBm
aW5hbDsKIH07CiAKLWlubGluZSBXaW5kb3dFdmVudENvbnRleHQ6OldpbmRvd0V2ZW50Q29udGV4
dChOb2RlJiBub2RlLCBET01XaW5kb3cmIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0JiB0YXJn
ZXQpCi0gICAgOiBFdmVudENvbnRleHQoJm5vZGUsICZjdXJyZW50VGFyZ2V0LCAmdGFyZ2V0KQor
aW5saW5lIFdpbmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KE5vZGUmIG5vZGUs
IERPTVdpbmRvdyYgY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQmIHRhcmdldCwgaW50IGNsb3Nl
ZFNoYWRvd0RlcHRoKQorICAgIDogRXZlbnRDb250ZXh0KCZub2RlLCAmY3VycmVudFRhcmdldCwg
JnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpCiB7CiB9CiAKQEAgLTExMSwyOCArMTExLDI5IEBA
IEV2ZW50UGF0aDo6RXZlbnRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2UKIAogdm9pZCBFdmVudFBh
dGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogewotICAg
IHVzaW5nIE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAo
KikoTm9kZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJnZXQqKTsKLSAgICBNYWtlRXZlbnRDb250
ZXh0IG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJl
bnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KTsKKyAg
ICB1c2luZyBNYWtlRXZlbnRDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4g
KCopKE5vZGUmLCBFdmVudFRhcmdldCosIEV2ZW50VGFyZ2V0KiwgdW5zaWduZWQgY2xvc2VkU2hh
ZG93RGVwdGgpOworICAgIE1ha2VFdmVudENvbnRleHQgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChO
b2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdl
dCwgdW5zaWduZWQgY2xvc2VkU2hhZG93RGVwdGgpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9z
ZWRTaGFkb3dEZXB0aCk7CiAgICAgfTsKICAgICBpZiAoaXM8TW91c2VFdmVudD4oZXZlbnQpIHx8
IGV2ZW50LmlzRm9jdXNFdmVudCgpKSB7Ci0gICAgICAgIG1ha2VFdmVudENvbnRleHQgPSBbXSAo
Tm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJn
ZXQpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVu
dFRhcmdldCwgdGFyZ2V0KTsKKyAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBu
b2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgdW5z
aWduZWQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+
IHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50
Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7
CiAgICAgICAgIH07CiAgICAgfQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKGlz
PFRvdWNoRXZlbnQ+KGV2ZW50KSkgewotICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5v
ZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwg
dGFyZ2V0KTsKKyAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVu
dFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgdW5zaWduZWQgY2xv
c2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoRXZlbnRDb250ZXh0Pihub2RlLCBj
dXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAg
ICB9CiAjZW5kaWYKIAogICAgIE5vZGUqIG5vZGUgPSBub2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50
KCZvcmlnaW5hbFRhcmdldCk7CiAgICAgTm9kZSogdGFyZ2V0ID0gbm9kZSA/IGV2ZW50VGFyZ2V0
UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKSA6IG51bGxwdHI7CisgICAgaW50IGNsb3NlZFNo
YWRvd0RlcHRoID0gMDsKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICB3aGlsZSAobm9kZSkg
ewotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlRXZlbnRDb250ZXh0KCpub2RlLCBldmVu
dFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygqbm9kZSksIHRhcmdldCkpOworICAgICAgICAg
ICAgbV9wYXRoLmFwcGVuZChtYWtlRXZlbnRDb250ZXh0KCpub2RlLCBldmVudFRhcmdldFJlc3Bl
Y3RpbmdUYXJnZXRSdWxlcygqbm9kZSksIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKIAog
ICAgICAgICAgICAgaWYgKGlzPFNoYWRvd1Jvb3Q+KCpub2RlKSkKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTE0NCw3ICsxNDUsNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUm
IG9yaWdpbmFsCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAodGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0
byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpub2RlKS5kb21XaW5kb3coKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2lu
ZG93RXZlbnRDb250ZXh0Pigqbm9kZSwgKndpbmRvdywgKnRhcmdldCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dFdmVu
dENvbnRleHQ+KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTE1Myw2ICsxNTQsOCBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5v
ZGUmIG9yaWdpbmFsCiAgICAgICAgICAgICBhdXRvKiBzaGFkb3dSb290T2ZQYXJlbnQgPSBwYXJl
bnQtPnNoYWRvd1Jvb3QoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzaGFkb3dSb290T2ZQ
YXJlbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGFzc2lnbmVkU2xvdCA9IHNoYWRv
d1Jvb3RPZlBhcmVudC0+ZmluZEFzc2lnbmVkU2xvdCgqbm9kZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHNoYWRvd1Jvb3RPZlBhcmVudC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpP
cGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkU2hhZG93RGVwdGgrKzsKICAgICAg
ICAgICAgICAgICAgICAgLy8gbm9kZSBpcyBhc3NpZ25lZCB0byBhIHNsb3QuIENvbnRpbnVlIGRp
c3BhdGNoaW5nIHRoZSBldmVudCBhdCB0aGlzIHNsb3QuCiAgICAgICAgICAgICAgICAgICAgIHBh
cmVudCA9IGFzc2lnbmVkU2xvdDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjUsNiArMTY4LDgg
QEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbAogICAgICAgICBpZiAo
IXNob3VsZEV2ZW50Q3Jvc3NTaGFkb3dCb3VuZGFyeShldmVudCwgc2hhZG93Um9vdCwgb3JpZ2lu
YWxUYXJnZXQpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBub2RlID0gc2hhZG93Um9v
dC5ob3N0KCk7CisgICAgICAgIGlmIChzaGFkb3dSb290Lm1vZGUoKSAhPSBTaGFkb3dSb290TW9k
ZTo6T3BlbikKKyAgICAgICAgICAgIGNsb3NlZFNoYWRvd0RlcHRoLS07CiAgICAgICAgIGlmIChl
eGl0aW5nU2hhZG93VHJlZU9mVGFyZ2V0KQogICAgICAgICAgICAgdGFyZ2V0ID0gZXZlbnRUYXJn
ZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwogICAgIH0KQEAgLTI1NCwyOSArMjU5LDQ5
IEBAIHZvaWQgRXZlbnRQYXRoOjpyZXRhcmdldFRvdWNoTGlzdHMoY29uc3QKIFZlY3RvcjxFdmVu
dFRhcmdldCo+IEV2ZW50UGF0aDo6Y29tcHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0KGNvbnN0IEV2
ZW50VGFyZ2V0JiB0YXJnZXQpIGNvbnN0CiB7CiAgICAgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4gcGF0
aDsKLSAgICBwYXRoLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9wYXRoLnNpemUoKSk7Ci0gICAg
Y29uc3QgTm9kZSogdGFyZ2V0Tm9kZSA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPE5vZGU+KHRhcmdl
dCkpCi0gICAgICAgIHRhcmdldE5vZGUgPSAmZG93bmNhc3Q8Tm9kZT4odGFyZ2V0KTsKLSAgICBl
bHNlIGlmIChpczxET01XaW5kb3c+KHRhcmdldCkpIHsKLSAgICAgICAgdGFyZ2V0Tm9kZSA9IGRv
d25jYXN0PERPTVdpbmRvdz4odGFyZ2V0KS5kb2N1bWVudCgpOwotICAgICAgICBBU1NFUlQodGFy
Z2V0Tm9kZSk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fcGF0aCkgewotICAg
ICAgICBhdXRvKiBjdXJyZW50VGFyZ2V0ID0gY29udGV4dC0+Y3VycmVudFRhcmdldCgpOwotICAg
ICAgICBpZiAoIWlzPE5vZGU+KGN1cnJlbnRUYXJnZXQpIHx8ICF0YXJnZXROb2RlIHx8ICF0YXJn
ZXROb2RlLT5pc0Nsb3NlZFNoYWRvd0hpZGRlbihkb3duY2FzdDxOb2RlPigqY3VycmVudFRhcmdl
dCkpKQotICAgICAgICAgICAgcGF0aC51bmNoZWNrZWRBcHBlbmQoY3VycmVudFRhcmdldCk7Ci0g
ICAgfQorICAgIGF1dG8gcGF0aFNpemUgPSBtX3BhdGguc2l6ZSgpOworICAgIFJFTEVBU0VfQVNT
RVJUKHBhdGhTaXplKTsKKyAgICBwYXRoLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGF0aFNpemUp
OworCisgICAgYXV0byBjdXJyZW50VGFyZ2V0SW5kZXggPSBtX3BhdGguZmluZE1hdGNoaW5nKFsm
dGFyZ2V0XSAoYXV0byYgY29udGV4dCkgeworICAgICAgICByZXR1cm4gY29udGV4dC0+Y3VycmVu
dFRhcmdldCgpID09ICZ0YXJnZXQ7CisgICAgfSk7CisgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVu
dFRhcmdldEluZGV4ICE9IG5vdEZvdW5kKTsKKyAgICBhdXRvIGN1cnJlbnRUYXJnZXREZXB0aCA9
IG1fcGF0aFtjdXJyZW50VGFyZ2V0SW5kZXhdLT5jbG9zZWRTaGFkb3dEZXB0aCgpOworCisgICAg
YXV0byBhcHBlbmRUYXJnZXRXaXRoTGVzc2VyRGVwdGggPSBbJnBhdGhdIChjb25zdCBFdmVudENv
bnRleHQmIGN1cnJlbnRDb250ZXh0LCBpbnQmIGN1cnJlbnREZXB0aEFsbG93ZWQpIHsKKyAgICAg
ICAgYXV0byBkZXB0aCA9IGN1cnJlbnRDb250ZXh0LmNsb3NlZFNoYWRvd0RlcHRoKCk7CisgICAg
ICAgIGJvb2wgY29udGV4dElzSW5zaWRlSW5uZXJTaGFkb3dUcmVlID0gZGVwdGggPiBjdXJyZW50
RGVwdGhBbGxvd2VkOworICAgICAgICBpZiAoY29udGV4dElzSW5zaWRlSW5uZXJTaGFkb3dUcmVl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBib29sIG1vdmVkT3V0T2ZTaGFkb3dUcmVl
ID0gZGVwdGggPCBjdXJyZW50RGVwdGhBbGxvd2VkOworICAgICAgICBpZiAobW92ZWRPdXRPZlNo
YWRvd1RyZWUpCisgICAgICAgICAgICBjdXJyZW50RGVwdGhBbGxvd2VkID0gZGVwdGg7CisgICAg
ICAgIHBhdGgudW5jaGVja2VkQXBwZW5kKGN1cnJlbnRDb250ZXh0LmN1cnJlbnRUYXJnZXQoKSk7
CisgICAgfTsKKworICAgIGF1dG8gY3VycmVudERlcHRoQWxsb3dlZCA9IGN1cnJlbnRUYXJnZXRE
ZXB0aDsKKyAgICBhdXRvIGkgPSBjdXJyZW50VGFyZ2V0SW5kZXg7CisgICAgZG8geworICAgICAg
ICBhcHBlbmRUYXJnZXRXaXRoTGVzc2VyRGVwdGgoKm1fcGF0aFtpXSwgY3VycmVudERlcHRoQWxs
b3dlZCk7CisgICAgfSB3aGlsZSAoaS0tKTsKKyAgICBwYXRoLnJldmVyc2UoKTsKKworICAgIGN1
cnJlbnREZXB0aEFsbG93ZWQgPSBjdXJyZW50VGFyZ2V0RGVwdGg7CisgICAgZm9yIChhdXRvIGkg
PSBjdXJyZW50VGFyZ2V0SW5kZXggKyAxOyBpIDwgcGF0aFNpemU7ICsraSkKKyAgICAgICAgYXBw
ZW5kVGFyZ2V0V2l0aExlc3NlckRlcHRoKCptX3BhdGhbaV0sIGN1cnJlbnREZXB0aEFsbG93ZWQp
OworICAgIAogICAgIHJldHVybiBwYXRoOwogfQogCiBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiB0YXJnZXRzKQogeworICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0
aW9uIHNlZW1zIHdyb25nLiBXaHkgYXJlIHdlIG5vdCBmaXJpbmcgZXZlbnRzIGluIHRoZSBjbG9z
ZWQgc2hhZG93IHRyZWVzPwogICAgIGZvciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykgewogICAg
ICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgTm9kZSogb3JpZ2luID0gKnRhcmdldHMuYmVn
aW4oKTsKICAgICAgICAgaWYgKCF0YXJnZXQtPmlzQ2xvc2VkU2hhZG93SGlkZGVuKCpvcmlnaW4p
KQotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4
dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbikpOworICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkp
OwogICAgIH0KIH0KIApAQCAtMjg1LDcgKzMxMCw3IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKGNv
bnN0IFZlY3RvcjxFdmVudFQKICAgICBmb3IgKGF1dG8qIHRhcmdldCA6IHRhcmdldHMpIHsKICAg
ICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgIEFTU0VSVCghaXM8Tm9kZT4odGFyZ2V0KSk7
Ci0gICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KG51
bGxwdHIsIHRhcmdldCwgKnRhcmdldHMuYmVnaW4oKSkpOworICAgICAgICBtX3BhdGguYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRz
LmJlZ2luKCksIDApKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM1OTMyKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA5LTEyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSBjb21wb3NlZFBhdGgg
dG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyODQzMDA0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFz
ZWxpbmVkIHRoZSB0ZXN0IG5vdyB0aGF0IGFsbCB0ZXN0IGNhc2VzIHBhc3MuCisKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9ldmVudC1jb21wb3NlZC1wYXRoLWFmdGVy
LWRvbS1tdXRhdGlvbi1leHBlY3RlZC50eHQ6CisKIDIwMTgtMDktMTEgIEFsaSBKdW1hICA8YWp1
bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtJbnRlcnNlY3Rpb25PYnNlcnZlcl0gVXBkYXRl
IFdQVHMgdG8gdGhlIGxhdGVzdCB1cHN0cmVhbSB2ZXJzaW9uCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZXZlbnQtY29tcG9zZWQt
cGF0aC1hZnRlci1kb20tbXV0YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbS9ldmVudC1j
b21wb3NlZC1wYXRoLWFmdGVyLWRvbS1tdXRhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIz
NTkzMCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hh
ZG93LWRvbS9ldmVudC1jb21wb3NlZC1wYXRoLWFmdGVyLWRvbS1tdXRhdGlvbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACiAKLUZBSUwgRXZlbnQuY29tcG9zZWRQ
YXRoKCkgc2hvdWxkIHJldHVybiB0aGUgc2FtZSByZXN1bHQgZXZlbiBpZiBET00gaXMgbXV0YXRl
ZCAoMS8yKSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMyBn
b3QgMgotRkFJTCBFdmVudC5jb21wb3NlZFBhdGgoKSBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHJl
c3VsdCBldmVuIGlmIERPTSBpcyBtdXRhdGVkICgyLzIpIGFzc2VydF9hcnJheV9lcXVhbHM6IGxl
bmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdvdCAyCitQQVNTIEV2ZW50LmNvbXBvc2VkUGF0aCgp
IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgcmVzdWx0IGV2ZW4gaWYgRE9NIGlzIG11dGF0ZWQgKDEv
MikgCitQQVNTIEV2ZW50LmNvbXBvc2VkUGF0aCgpIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgcmVz
dWx0IGV2ZW4gaWYgRE9NIGlzIG11dGF0ZWQgKDIvMikgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349534</attachid>
            <date>2018-09-12 02:29:40 -0700</date>
            <delta_ts>2018-09-17 20:41:55 -0700</delta_ts>
            <desc>Added more change log description</desc>
            <filename>bug-180378-20180912022939.patch</filename>
            <type>text/plain</type>
            <size>17398</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE4LTA5LTEyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSBjb21wb3NlZFBhdGgg
dG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyODQzMDA0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggbWFrZXMgdGhlIGNoZWNrIGZvciB3aGV0aGVyIGEgZ2l2ZW4gbm9kZSBpbiB0aGUgZXZl
bnQgcGF0aCBiZSBpbmNsdWRlZCBpbiBjb21wb3NlZFBhdGgKKyAgICAgICAgcHJlLWRldGVybWlu
ZWQgYXQgdGhlIHRpbWUgb2YgdGhlIGV2ZW50IGRpc3BhdGNoaW5nIHBlciBodHRwczovL2dpdGh1
Yi5jb20vd2hhdHdnL2RvbS9pc3N1ZXMvNTI1LgorICAgICAgICBUaGlzIHdhcyBhIGZpeCBmb3Ig
dGhlIGlzc3VlIHRoYXQgaWYgYW4gZXZlbnQgbGlzdGVuZXIgaW4gYSBjbG9zZWQgc2hhZG93IHRy
ZWUgcmVtb3ZlcyBhIG5vZGUgaW4gdGhlCisgICAgICAgIHNhbWUgdHJlZSBpbiB0aGUgZXZlbnQg
cGF0aCwgdGhlbiBjb21wb3NlZFBhdGggY2FsbGVkIG9uIGl0cyBzaGFkb3cgaG9zdCwgZm9yIGV4
YW1wbGUsIHdpbGwgaW5jbHVkZQorICAgICAgICB0aGUgcmVtb3ZlZCBub2RlIHNpbmNlIGl0J3Mg
bm8gbG9uZ2VyIGluIHRoZSBjbG9zZWQgc2hhZG93IHRyZWUuCisKKyAgICAgICAgTmFpdmVseSwg
aW1wbGVtZW50aW5nIHRoaXMgYmVoYXZpb3Igd291bGQgcmVxdWlyZSByZW1lbWJlcmluZyB0aGUg
b3JpZ2luYWwgZG9jdW1lbnQgb3Igc2hhZG93IHJvb3QKKyAgICAgICAgb2YgZWFjaCBub2RlIGlu
IHRoZSBldmVudCBwYXRoIGFzIHdlbGwgYXMgaXRzIHBhcmVudCBzaGFkb3cgcm9vdCwgb3Igd29y
c2Ugd2hpY2ggbm9kZSBpcyBkaXNjbG9zZWQKKyAgICAgICAgdG8gZXZlcnkgb3RoZXIgbm9kZSBh
dCB0aGUgdGltZSBvZiBjb21wdXRpbmcgdGhlIGV2ZW50IHBhdGguCisKKyAgICAgICAgVGhpcyBw
YXRjaCB0YWtlcyBhIG1vcmUgbm92ZWwgYW5kIGVmZmljaWVudCBhcHByb2FjaCB0byBpbXBsZW1l
bnQgdGhlIG5ldyBiZWhhdmlvciBieSBhZGRpbmcgYSBzaW5nbGUKKyAgICAgICAgaW50ZWdlciBp
bmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgY2xvc2VkLW1vZGUgc2hhZG93IHJvb3QgYW5jZXN0b3Jz
IG9mIGVhY2ggbm9kZSBpbiB0aGUgZXZlbnQgcGF0aC4KKyAgICAgICAgSW4gY29tcHV0ZVBhdGhV
bmNsb3NlZFRvVGFyZ2V0LCBhbnkgbm9kZSB3aG9zZSAqZGVwdGgqIGlzIGdyZWF0ZXIgdGhhbiB0
aGUgY29udGV4dCBvYmplY3QgaXMgZXhjbHVkZWQuCisKKyAgICAgICAgQ29uc2lkZXIgdGhlIGZv
bGxvd2luZyBleGFtcGxlOgorICAgICAgICBkaXYgLS0tLS0tLSBTaGFkb3dSb290IChjbG9zZWQp
CisgICAgICAgICAgKy0gc3BhbiAgICAgKy0gc2xvdAorICAgICAgICBJZiBhbiBldmVudCBpcyBk
aXNwYXRjaGVkIG9uIHNwYW4sIHRoZW4gdGhlIGV2ZW50IHBhdGggd291bGQgYmUgW3NwYW4sIHNs
b3QsIFNoYWRvd1Jvb3QsIGRpdl0uIFRoZW4KKyAgICAgICAgdGhlIHZhbHVlcyBvZiBpbnRlZ2Vy
cyBhc3NpZ25lZCB0byBlYWNoIG5vZGUgd291bGQgYmU6IFswLCAxLCAxLCAwXSByZXNwZWN0aXZl
bHkuIFdoZW4gY29tcG9zZWRQYXRoCisgICAgICAgIGlzIGNhbGxlZCBvbiBzcGFuIG9yIGRpdiwg
c2xvdCBhbmQgU2hhZG93Um9vdCBhcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGhhdmUgYSBncmVh
dGVyICpkZXB0aCogdmFsdWUuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgdGhpcyBzaW1wbGlz
dGljIHNvbHV0aW9uIGRvZXNuJ3Qgd29yayB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzaGFkb3cg
cm9vdHMgb2YgdGhlIHNhbWUKKyAgICAgICAgZGVwdGggdGhyb3VnaCB3aGljaCBhbiBldmVudCBp
cyBkaXNwYXRjaGVkIGFzIGluOgorICAgICAgICBzZWN0aW9uIC0tIFNoYWRvd1Jvb3QgKGNsb3Nl
ZCwgU1IyKQorICAgICAgICAgIHwgICAgICAgICAgKy0gc2xvdCAoczIpCisgICAgICAgICAgK2Rp
diAtLS0tLS0gU2hhZG93Um9vdCAoY2xvc2VkLCBTUjEpCisgICAgICAgICAgICArLSBzcGFuICAg
ICArLSBzbG90IChzMSkKKyAgICAgICAgSWYgYW4gZXZlbnQgaXMgZGlzcGF0Y2hlZCBvbiBzcGFu
LCB0aGUgZXZlbnQgcGF0aCB3b3VsZCBiZSBbc3BhbiwgczEsIFNSMSwgZGl2LCBzMiwgU1IyLCBz
ZWN0aW9uXS4KKyAgICAgICAgVGhlIHZhbHVlcyBvZiBpbnRlZ2VycyBhc3NpZ25lZCBhcmU6IFsw
LCAxLCAxLCAwLCAxLCAxLCAwXSByZXNwZWN0aXZlbHkuIFdoZW4gY29tcG9zZWRQYXRoIGlzIGNh
bGxlZAorICAgICAgICBvbiBTUjEsIHRoZSBzaW1wbGlzdGljIGFwcHJvYWNoIHdvdWxkIGluY2x1
ZGUgczIgYW5kIFNSMiwgd2hpY2ggd291bGQgYmUgd3JvbmcuCisKKyAgICAgICAgVG8gYWNjb3Vu
dCBmb3IgdGhpcyBjYXNlLCBpbiBjb21wdXRlUGF0aFVuY2xvc2VkVG9UYXJnZXQsIHdlIHRyYXZl
cnNlIHRoZSBldmVudCBwYXRoIHVwd2FyZHMgKGkuZS4KKyAgICAgICAgYW5jZXN0b3JzKSBhbmQg
ZG93bndhcmRzIChpLmUuIGRlc2NlbmRlbnRzKSBmcm9tIHRoZSBjb250ZXh0IG9iamVjdCBhbmQg
ZGVjcmVhc2UgdGhlICphbGxvd2VkIGRlcHRoKgorICAgICAgICBvZiBzaGFkb3cgdHJlZXMgd2hl
biB3ZSB0cmF2ZXJzZSBvdXQgb2YgYSBzaGFkb3cgdHJlZSBpbiBlaXRoZXIgZGlyZWN0aW9uLiBX
aGVuIHRyYXZlcnNpbmcgdXB3YXJkcywKKyAgICAgICAgdGhlcmVmb3JlLCBtb3Zpbmcgb3V0IG9m
IGEgc2hhZG93IHJvb3QgdG8gaXRzIGhvc3Qgd291bGQgd291bGQgZGVjcmVhc2UgdGhlIGFsbG93
ZWQgZGVwdGguIFdoZW4KKyAgICAgICAgdHJhdmVyc2luZyBkb3dhcmRzLCBtb3ZpbmcgZnJvbSBh
IHNsb3QgZWxlbWVudCB0byBpdHMgYXNzaWduZWQgbm9kZSB3b3VsZCBkZWNyZWFzZSB0aGUgYWxs
b3dlZCBkZXB0aC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIGRlcHRocyBjYW4gYmUgbmVnYXRp
dmUgd2hlbiBhIGNvbXBvc2VkIGV2ZW50IGlzIGRpc3BhdGNoZWQgaW5zaWRlIGEgY2xvc2VkIHNo
YWRvdyB0cmVlLAorICAgICAgICBhbmQgaXQgZ2V0cyBvdXQgb2YgaXRzIHNoYWRvdyBob3N0Lgor
CisgICAgICAgIFVuZm9ydHVuYXRlbHksIHRoZSBsYXRlc3QgRE9NIHNwZWNpZmljYXRpb24gaGFz
IGEgYnVnIGFuZCBkb2Vzbid0IG1hdGNoIHRoZSBiZWhhdmlvciBvZiBDaHJvbWUuIFRoaXMKKyAg
ICAgICAgcGF0Y2ggcHJvcG9zZXMgYSBuZXcgYWxnb3JpdGhtIHdoaWNoIGNhbiBiZSBhZG9wdGVk
IGluIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvZG9tL2lzc3Vlcy82ODQuCisKKyAgICAgICAg
VGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2V2ZW50LWNv
bXBvc2VkLXBhdGgtYWZ0ZXItZG9tLW11dGF0aW9uLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVu
dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRDb250ZXh0OjpFdmVudENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VPckZvY3VzRXZlbnRDb250ZXh0OjpNb3VzZU9y
Rm9jdXNFdmVudENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudENvbnRleHQ6
OlRvdWNoRXZlbnRDb250ZXh0KToKKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6OmNsb3NlZFNoYWRvd0RlcHRoIGNvbnN0KTogQWRk
ZWQuCisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5k
b3dFdmVudENvbnRleHQ6OldpbmRvd0V2ZW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFBhdGg6OmJ1aWxkUGF0aCk6IENvbXB1dGUgdGhlIGNsb3NlZCBzaGFkb3cgdHJlZSdzIGRl
cHRocyBmb3IgZWFjaCBub2RlIGluIHRoZSBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0
ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0IGNvbnN0KTogSW1wbGVtZW50ZWQgdGhlIGFmb3JlbWVudGlv
bmVkIGFsZ29yaXRobS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToK
KwogMjAxOC0wOS0xMSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CiAK
ICAgICAgICAgW0N1cmxdIFdlYkluc3BlY3RvciBkb2Vzbid0IGRpc3BsYXkgcmVxdWVzdCBoZWFk
ZXJzIGFkZGVkIGR1cmluZyBwcm9jZXNzaW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29u
dGV4dC5jcHAJKHJldmlzaW9uIDIzNTkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1FdmVudENvbnRleHQ6OkV2ZW50Q29udGV4dChOb2RlKiBub2RlLCBFdmVu
dFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCkKLSAgICA6IG1fbm9k
ZShub2RlKQotICAgICwgbV9jdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpCi0gICAgLCBtX3Rh
cmdldCh0YXJnZXQpCitFdmVudENvbnRleHQ6OkV2ZW50Q29udGV4dChOb2RlKiBub2RlLCBFdmVu
dFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNo
YWRvd0RlcHRoKQorICAgIDogbV9ub2RlIHsgbm9kZSB9CisgICAgLCBtX2N1cnJlbnRUYXJnZXQg
eyBjdXJyZW50VGFyZ2V0IH0KKyAgICAsIG1fdGFyZ2V0IHsgdGFyZ2V0IH0KKyAgICAsIG1fY2xv
c2VkU2hhZG93RGVwdGggeyBjbG9zZWRTaGFkb3dEZXB0aCB9CiB7CiAgICAgQVNTRVJUKCFpc1Vu
cmVhY2hhYmxlTm9kZShtX3RhcmdldC5nZXQoKSkpOwogfQpAQCAtNjYsOCArNjcsOCBAQCBib29s
IEV2ZW50Q29udGV4dDo6aXNUb3VjaEV2ZW50Q29udGV4dCgpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1Nb3VzZU9yRm9jdXNFdmVudENvbnRleHQ6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dChO
b2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdl
dCkKLSAgICA6IEV2ZW50Q29udGV4dCgmbm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KQorTW91
c2VPckZvY3VzRXZlbnRDb250ZXh0OjpNb3VzZU9yRm9jdXNFdmVudENvbnRleHQoTm9kZSYgbm9k
ZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBj
bG9zZWRTaGFkb3dEZXB0aCkKKyAgICA6IEV2ZW50Q29udGV4dCgmbm9kZSwgY3VycmVudFRhcmdl
dCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkKIHsKIH0KIApAQCAtODcsOCArODgsOCBAQCBi
b29sIE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6aXNNb3VzZU9yCiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogCi1Ub3VjaEV2ZW50Q29udGV4dDo6VG91Y2hFdmVudENvbnRleHQoTm9kZSYg
bm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCi0g
ICAgOiBFdmVudENvbnRleHQoJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCkKK1RvdWNoRXZl
bnRDb250ZXh0OjpUb3VjaEV2ZW50Q29udGV4dChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3Vy
cmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKQor
ICAgIDogRXZlbnRDb250ZXh0KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNo
YWRvd0RlcHRoKQogICAgICwgbV90b3VjaGVzKFRvdWNoTGlzdDo6Y3JlYXRlKCkpCiAgICAgLCBt
X3RhcmdldFRvdWNoZXMoVG91Y2hMaXN0OjpjcmVhdGUoKSkKICAgICAsIG1fY2hhbmdlZFRvdWNo
ZXMoVG91Y2hMaXN0OjpjcmVhdGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgJ
KHJldmlzaW9uIDIzNTkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTMgKzM2LDE1IEBAIGNsYXNzIFRvdWNoTGlzdDsKIGNsYXNz
IEV2ZW50Q29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgRXZlbnRDb250ZXh0KE5vZGUqLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRU
YXJnZXQqKTsKKyAgICBFdmVudENvbnRleHQoTm9kZSosIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFy
Z2V0LCBFdmVudFRhcmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgdmlydHVhbCB+
RXZlbnRDb250ZXh0KCk7CiAKICAgICBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2Rl
LmdldCgpOyB9CiAgICAgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRUYXJnZXQuZ2V0KCk7IH0KICAgICBFdmVudFRhcmdldCogdGFyZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KIAorICAgIGludCBjbG9zZWRTaGFkb3dEZXB0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkU2hhZG93RGVwdGg7IH0KKwogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29s
IGlzTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCkgY29uc3Q7CkBAIC01NiwxMSArNTgsMTIgQEAg
cHJvdGVjdGVkOgogICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUmVmUHRyPEV2ZW50VGFy
Z2V0PiBtX2N1cnJlbnRUYXJnZXQ7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsK
KyAgICBpbnQgbV9jbG9zZWRTaGFkb3dEZXB0aCB7IDAgfTsKIH07CiAKIGNsYXNzIE1vdXNlT3JG
b2N1c0V2ZW50Q29udGV4dCBmaW5hbCA6IHB1YmxpYyBFdmVudENvbnRleHQgewogcHVibGljOgot
ICAgIE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dChOb2RlJiwgRXZlbnRUYXJnZXQqIGN1cnJlbnRU
YXJnZXQsIEV2ZW50VGFyZ2V0Kik7CisgICAgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KE5vZGUm
LCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hh
ZG93RGVwdGgpOwogICAgIHZpcnR1YWwgfk1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCgpOwogCiAg
ICAgTm9kZSogcmVsYXRlZFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRlZFRhcmdldC5n
ZXQoKTsgfQpAQCAtNzcsNyArODAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBUb3VjaEV2ZW50Q29u
dGV4dCBmaW5hbCA6IHB1YmxpYyBFdmVudENvbnRleHQgewogcHVibGljOgotICAgIFRvdWNoRXZl
bnRDb250ZXh0KE5vZGUmLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQq
KTsKKyAgICBUb3VjaEV2ZW50Q29udGV4dChOb2RlJiwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJn
ZXQsIEV2ZW50VGFyZ2V0KiwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICB2aXJ0dWFsIH5U
b3VjaEV2ZW50Q29udGV4dCgpOwogCiAgICAgZW51bSBUb3VjaExpc3RUeXBlIHsgVG91Y2hlcywg
VGFyZ2V0VG91Y2hlcywgQ2hhbmdlZFRvdWNoZXMgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBh
dGguY3BwCShyZXZpc2lvbiAyMzU5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgV2luZG93RXZlbnRDb250ZXh0IGZpbmFsIDogcHVibGljIEV2ZW50Q29udGV4
dCB7CiBwdWJsaWM6Ci0gICAgV2luZG93RXZlbnRDb250ZXh0KE5vZGUmLCBET01XaW5kb3cmLCBF
dmVudFRhcmdldCYpOworICAgIFdpbmRvd0V2ZW50Q29udGV4dChOb2RlJiwgRE9NV2luZG93Jiwg
RXZlbnRUYXJnZXQmLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpOwogcHJpdmF0ZToKICAgICB2b2lk
IGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50JikgY29uc3QgZmluYWw7CiB9OwogCi1pbmxpbmUgV2lu
ZG93RXZlbnRDb250ZXh0OjpXaW5kb3dFdmVudENvbnRleHQoTm9kZSYgbm9kZSwgRE9NV2luZG93
JiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCYgdGFyZ2V0KQotICAgIDogRXZlbnRDb250ZXh0
KCZub2RlLCAmY3VycmVudFRhcmdldCwgJnRhcmdldCkKK2lubGluZSBXaW5kb3dFdmVudENvbnRl
eHQ6OldpbmRvd0V2ZW50Q29udGV4dChOb2RlJiBub2RlLCBET01XaW5kb3cmIGN1cnJlbnRUYXJn
ZXQsIEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkKKyAgICA6IEV2
ZW50Q29udGV4dCgmbm9kZSwgJmN1cnJlbnRUYXJnZXQsICZ0YXJnZXQsIGNsb3NlZFNoYWRvd0Rl
cHRoKQogewogfQogCkBAIC0xMTEsMjggKzExMSwyOSBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChO
b2RlJiBvcmlnaW5hbFRhcmdlCiAKIHZvaWQgRXZlbnRQYXRoOjpidWlsZFBhdGgoTm9kZSYgb3Jp
Z2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKIHsKLSAgICB1c2luZyBNYWtlRXZlbnRDb250ZXh0
ID0gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gKCopKE5vZGUmLCBFdmVudFRhcmdldCos
IEV2ZW50VGFyZ2V0Kik7Ci0gICAgTWFrZUV2ZW50Q29udGV4dCBtYWtlRXZlbnRDb250ZXh0ID0g
W10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCog
dGFyZ2V0KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4o
Jm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCk7CisgICAgdXNpbmcgTWFrZUV2ZW50Q29udGV4
dCA9IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShOb2RlJiwgRXZlbnRUYXJnZXQq
LCBFdmVudFRhcmdldCosIHVuc2lnbmVkIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAgICBNYWtlRXZl
bnRDb250ZXh0IG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQq
IGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIHVuc2lnbmVkIGNsb3NlZFNoYWRv
d0RlcHRoKSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4o
Jm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIH07
CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKSkg
ewotICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0
KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8
RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb3Vz
ZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCk7CisgICAg
ICAgIG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJl
bnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIHVuc2lnbmVkIGNsb3NlZFNoYWRvd0RlcHRo
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRU
YXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9OwogICAgIH0KICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChpczxUb3VjaEV2ZW50PihldmVudCkpIHsK
LSAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCog
Y3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCkgLT4gc3RkOjp1bmlxdWVfcHRyPEV2
ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hF
dmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCk7CisgICAgICAgIG1ha2VF
dmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQs
IEV2ZW50VGFyZ2V0KiB0YXJnZXQsIHVuc2lnbmVkIGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6
OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBj
bG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2VuZGlmCiAKICAgICBOb2Rl
KiBub2RlID0gbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudCgmb3JpZ2luYWxUYXJnZXQpOwogICAg
IE5vZGUqIHRhcmdldCA9IG5vZGUgPyBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygq
bm9kZSkgOiBudWxscHRyOworICAgIGludCBjbG9zZWRTaGFkb3dEZXB0aCA9IDA7CiAgICAgd2hp
bGUgKG5vZGUpIHsKICAgICAgICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgICAgIG1fcGF0aC5h
cHBlbmQobWFrZUV2ZW50Q29udGV4dCgqbm9kZSwgZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0
UnVsZXMoKm5vZGUpLCB0YXJnZXQpKTsKKyAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZUV2
ZW50Q29udGV4dCgqbm9kZSwgZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUp
LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CiAKICAgICAgICAgICAgIGlmIChpczxTaGFk
b3dSb290Pigqbm9kZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDQsNyArMTQ1LDcg
QEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbAogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERv
Y3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUs
ICp3aW5kb3csICp0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhdGgu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2luZG93RXZlbnRDb250ZXh0Pigqbm9kZSwgKndpbmRv
dywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTMsNiArMTU0
LDggQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbAogICAgICAgICAg
ICAgYXV0byogc2hhZG93Um9vdE9mUGFyZW50ID0gcGFyZW50LT5zaGFkb3dSb290KCk7CiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoc2hhZG93Um9vdE9mUGFyZW50KSkgewogICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBhc3NpZ25lZFNsb3QgPSBzaGFkb3dSb290T2ZQYXJlbnQtPmZpbmRBc3Np
Z25lZFNsb3QoKm5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGFkb3dSb290T2ZQ
YXJlbnQtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6T3BlbikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNsb3NlZFNoYWRvd0RlcHRoKys7CiAgICAgICAgICAgICAgICAgICAgIC8vIG5vZGUg
aXMgYXNzaWduZWQgdG8gYSBzbG90LiBDb250aW51ZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQgYXQg
dGhpcyBzbG90LgogICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBhc3NpZ25lZFNsb3Q7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMTY1LDYgKzE2OCw4IEBAIHZvaWQgRXZlbnRQYXRoOjpidWls
ZFBhdGgoTm9kZSYgb3JpZ2luYWwKICAgICAgICAgaWYgKCFzaG91bGRFdmVudENyb3NzU2hhZG93
Qm91bmRhcnkoZXZlbnQsIHNoYWRvd1Jvb3QsIG9yaWdpbmFsVGFyZ2V0KSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgbm9kZSA9IHNoYWRvd1Jvb3QuaG9zdCgpOworICAgICAgICBpZiAo
c2hhZG93Um9vdC5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6Ok9wZW4pCisgICAgICAgICAgICBj
bG9zZWRTaGFkb3dEZXB0aC0tOwogICAgICAgICBpZiAoZXhpdGluZ1NoYWRvd1RyZWVPZlRhcmdl
dCkKICAgICAgICAgICAgIHRhcmdldCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVz
KCpub2RlKTsKICAgICB9CkBAIC0yNTQsMjkgKzI1OSw0OSBAQCB2b2lkIEV2ZW50UGF0aDo6cmV0
YXJnZXRUb3VjaExpc3RzKGNvbnN0CiBWZWN0b3I8RXZlbnRUYXJnZXQqPiBFdmVudFBhdGg6OmNv
bXB1dGVQYXRoVW5jbG9zZWRUb1RhcmdldChjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KSBjb25z
dAogewogICAgIFZlY3RvcjxFdmVudFRhcmdldCo+IHBhdGg7Ci0gICAgcGF0aC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG1fcGF0aC5zaXplKCkpOwotICAgIGNvbnN0IE5vZGUqIHRhcmdldE5vZGUg
PSBudWxscHRyOwotICAgIGlmIChpczxOb2RlPih0YXJnZXQpKQotICAgICAgICB0YXJnZXROb2Rl
ID0gJmRvd25jYXN0PE5vZGU+KHRhcmdldCk7Ci0gICAgZWxzZSBpZiAoaXM8RE9NV2luZG93Pih0
YXJnZXQpKSB7Ci0gICAgICAgIHRhcmdldE5vZGUgPSBkb3duY2FzdDxET01XaW5kb3c+KHRhcmdl
dCkuZG9jdW1lbnQoKTsKLSAgICAgICAgQVNTRVJUKHRhcmdldE5vZGUpOwotICAgIH0KLSAgICBm
b3IgKGF1dG8mIGNvbnRleHQgOiBtX3BhdGgpIHsKLSAgICAgICAgYXV0byogY3VycmVudFRhcmdl
dCA9IGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKTsKLSAgICAgICAgaWYgKCFpczxOb2RlPihjdXJy
ZW50VGFyZ2V0KSB8fCAhdGFyZ2V0Tm9kZSB8fCAhdGFyZ2V0Tm9kZS0+aXNDbG9zZWRTaGFkb3dI
aWRkZW4oZG93bmNhc3Q8Tm9kZT4oKmN1cnJlbnRUYXJnZXQpKSkKLSAgICAgICAgICAgIHBhdGgu
dW5jaGVja2VkQXBwZW5kKGN1cnJlbnRUYXJnZXQpOwotICAgIH0KKyAgICBhdXRvIHBhdGhTaXpl
ID0gbV9wYXRoLnNpemUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChwYXRoU2l6ZSk7CisgICAgcGF0
aC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhdGhTaXplKTsKKworICAgIGF1dG8gY3VycmVudFRh
cmdldEluZGV4ID0gbV9wYXRoLmZpbmRNYXRjaGluZyhbJnRhcmdldF0gKGF1dG8mIGNvbnRleHQp
IHsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmN1cnJlbnRUYXJnZXQoKSA9PSAmdGFyZ2V0Owor
ICAgIH0pOworICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRUYXJnZXRJbmRleCAhPSBub3RGb3Vu
ZCk7CisgICAgYXV0byBjdXJyZW50VGFyZ2V0RGVwdGggPSBtX3BhdGhbY3VycmVudFRhcmdldElu
ZGV4XS0+Y2xvc2VkU2hhZG93RGVwdGgoKTsKKworICAgIGF1dG8gYXBwZW5kVGFyZ2V0V2l0aExl
c3NlckRlcHRoID0gWyZwYXRoXSAoY29uc3QgRXZlbnRDb250ZXh0JiBjdXJyZW50Q29udGV4dCwg
aW50JiBjdXJyZW50RGVwdGhBbGxvd2VkKSB7CisgICAgICAgIGF1dG8gZGVwdGggPSBjdXJyZW50
Q29udGV4dC5jbG9zZWRTaGFkb3dEZXB0aCgpOworICAgICAgICBib29sIGNvbnRleHRJc0luc2lk
ZUlubmVyU2hhZG93VHJlZSA9IGRlcHRoID4gY3VycmVudERlcHRoQWxsb3dlZDsKKyAgICAgICAg
aWYgKGNvbnRleHRJc0luc2lkZUlubmVyU2hhZG93VHJlZSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgYm9vbCBtb3ZlZE91dE9mU2hhZG93VHJlZSA9IGRlcHRoIDwgY3VycmVudERlcHRo
QWxsb3dlZDsKKyAgICAgICAgaWYgKG1vdmVkT3V0T2ZTaGFkb3dUcmVlKQorICAgICAgICAgICAg
Y3VycmVudERlcHRoQWxsb3dlZCA9IGRlcHRoOworICAgICAgICBwYXRoLnVuY2hlY2tlZEFwcGVu
ZChjdXJyZW50Q29udGV4dC5jdXJyZW50VGFyZ2V0KCkpOworICAgIH07CisKKyAgICBhdXRvIGN1
cnJlbnREZXB0aEFsbG93ZWQgPSBjdXJyZW50VGFyZ2V0RGVwdGg7CisgICAgYXV0byBpID0gY3Vy
cmVudFRhcmdldEluZGV4OworICAgIGRvIHsKKyAgICAgICAgYXBwZW5kVGFyZ2V0V2l0aExlc3Nl
ckRlcHRoKCptX3BhdGhbaV0sIGN1cnJlbnREZXB0aEFsbG93ZWQpOworICAgIH0gd2hpbGUgKGkt
LSk7CisgICAgcGF0aC5yZXZlcnNlKCk7CisKKyAgICBjdXJyZW50RGVwdGhBbGxvd2VkID0gY3Vy
cmVudFRhcmdldERlcHRoOworICAgIGZvciAoYXV0byBpID0gY3VycmVudFRhcmdldEluZGV4ICsg
MTsgaSA8IHBhdGhTaXplOyArK2kpCisgICAgICAgIGFwcGVuZFRhcmdldFdpdGhMZXNzZXJEZXB0
aCgqbV9wYXRoW2ldLCBjdXJyZW50RGVwdGhBbGxvd2VkKTsKKyAgICAKICAgICByZXR1cm4gcGF0
aDsKIH0KIAogRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgdGFy
Z2V0cykKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzZWVtcyB3cm9uZy4gV2h5IGFy
ZSB3ZSBub3QgZmlyaW5nIGV2ZW50cyBpbiB0aGUgY2xvc2VkIHNoYWRvdyB0cmVlcz8KICAgICBm
b3IgKGF1dG8qIHRhcmdldCA6IHRhcmdldHMpIHsKICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAg
ICAgICAgIE5vZGUqIG9yaWdpbiA9ICp0YXJnZXRzLmJlZ2luKCk7CiAgICAgICAgIGlmICghdGFy
Z2V0LT5pc0Nsb3NlZFNoYWRvd0hpZGRlbigqb3JpZ2luKSkKLSAgICAgICAgICAgIG1fcGF0aC5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KHRhcmdldCwgdGFyZ2V0LCBvcmln
aW4pKTsKKyAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENv
bnRleHQ+KHRhcmdldCwgdGFyZ2V0LCBvcmlnaW4sIDApKTsKICAgICB9CiB9CiAKQEAgLTI4NSw3
ICszMTAsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RXZlbnRUCiAgICAg
Zm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRzKSB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwog
ICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRhcmdldCkpOwotICAgICAgICBtX3BhdGguYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRz
LmJlZ2luKCkpKTsKKyAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpLCAwKSk7CiAgICAgfQog
fQogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTkzMikK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxOC0wOS0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KKworICAgICAgICBVcGRhdGUgY29tcG9zZWRQYXRoIHRvIG1hdGNoIHRoZSBsYXRlc3Qgc3Bl
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzc4
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Mjg0MzAwND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lZCB0aGUgdGVzdCBub3cgdGhh
dCBhbGwgdGVzdCBjYXNlcyBwYXNzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3No
YWRvdy1kb20vZXZlbnQtY29tcG9zZWQtcGF0aC1hZnRlci1kb20tbXV0YXRpb24tZXhwZWN0ZWQu
dHh0OgorCiAyMDE4LTA5LTExICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbSW50ZXJzZWN0aW9uT2JzZXJ2ZXJdIFVwZGF0ZSBXUFRzIHRvIHRoZSBsYXRlc3QgdXBz
dHJlYW0gdmVyc2lvbgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zaGFkb3ctZG9tL2V2ZW50LWNvbXBvc2VkLXBhdGgtYWZ0ZXItZG9tLW11dGF0aW9u
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZXZlbnQtY29tcG9zZWQtcGF0aC1hZnRlci1kb20t
bXV0YXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMzU5MzApCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20vZXZlbnQtY29tcG9zZWQt
cGF0aC1hZnRlci1kb20tbXV0YXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQgKzEsNCBAQAogCi1GQUlMIEV2ZW50LmNvbXBvc2VkUGF0aCgpIHNob3VsZCByZXR1cm4gdGhl
IHNhbWUgcmVzdWx0IGV2ZW4gaWYgRE9NIGlzIG11dGF0ZWQgKDEvMikgYXNzZXJ0X2FycmF5X2Vx
dWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDMgZ290IDIKLUZBSUwgRXZlbnQuY29tcG9z
ZWRQYXRoKCkgc2hvdWxkIHJldHVybiB0aGUgc2FtZSByZXN1bHQgZXZlbiBpZiBET00gaXMgbXV0
YXRlZCAoMi8yKSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQg
NSBnb3QgMgorUEFTUyBFdmVudC5jb21wb3NlZFBhdGgoKSBzaG91bGQgcmV0dXJuIHRoZSBzYW1l
IHJlc3VsdCBldmVuIGlmIERPTSBpcyBtdXRhdGVkICgxLzIpIAorUEFTUyBFdmVudC5jb21wb3Nl
ZFBhdGgoKSBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHJlc3VsdCBldmVuIGlmIERPTSBpcyBtdXRh
dGVkICgyLzIpIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349994</attachid>
            <date>2018-09-17 20:41:57 -0700</date>
            <delta_ts>2018-09-17 20:42:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-180378-20180917204157.patch</filename>
            <type>text/plain</type>
            <size>17949</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjA5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE4LTA5LTEyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSBjb21wb3NlZFBhdGgg
dG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyODQzMDA0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggbWFrZXMgdGhlIGNoZWNrIGZvciB3aGV0aGVyIGEgZ2l2ZW4gbm9kZSBpbiB0aGUgZXZlbnQg
cGF0aCBiZSBpbmNsdWRlZCBpbiBjb21wb3NlZFBhdGgKKyAgICAgICAgcHJlLWRldGVybWluZWQg
YXQgdGhlIHRpbWUgb2YgdGhlIGV2ZW50IGRpc3BhdGNoaW5nIHBlciBodHRwczovL2dpdGh1Yi5j
b20vd2hhdHdnL2RvbS9pc3N1ZXMvNTI1LgorICAgICAgICBUaGlzIHdhcyBhIGZpeCBmb3IgdGhl
IGlzc3VlIHRoYXQgaWYgYW4gZXZlbnQgbGlzdGVuZXIgaW4gYSBjbG9zZWQgc2hhZG93IHRyZWUg
cmVtb3ZlcyBhIG5vZGUgaW4gdGhlCisgICAgICAgIHNhbWUgdHJlZSBpbiB0aGUgZXZlbnQgcGF0
aCwgdGhlbiBjb21wb3NlZFBhdGggY2FsbGVkIG9uIGl0cyBzaGFkb3cgaG9zdCwgZm9yIGV4YW1w
bGUsIHdpbGwgaW5jbHVkZQorICAgICAgICB0aGUgcmVtb3ZlZCBub2RlIHNpbmNlIGl0J3Mgbm8g
bG9uZ2VyIGluIHRoZSBjbG9zZWQgc2hhZG93IHRyZWUuCisKKyAgICAgICAgTmFpdmVseSwgaW1w
bGVtZW50aW5nIHRoaXMgYmVoYXZpb3Igd291bGQgcmVxdWlyZSByZW1lbWJlcmluZyB0aGUgb3Jp
Z2luYWwgZG9jdW1lbnQgb3Igc2hhZG93IHJvb3QKKyAgICAgICAgb2YgZWFjaCBub2RlIGluIHRo
ZSBldmVudCBwYXRoIGFzIHdlbGwgYXMgaXRzIHBhcmVudCBzaGFkb3cgcm9vdCwgb3Igd29yc2Ug
d2hpY2ggbm9kZSBpcyBkaXNjbG9zZWQKKyAgICAgICAgdG8gZXZlcnkgb3RoZXIgbm9kZSBhdCB0
aGUgdGltZSBvZiBjb21wdXRpbmcgdGhlIGV2ZW50IHBhdGguCisKKyAgICAgICAgVGhpcyBwYXRj
aCB0YWtlcyBhIG1vcmUgbm92ZWwgYW5kIGVmZmljaWVudCBhcHByb2FjaCB0byBpbXBsZW1lbnQg
dGhlIG5ldyBiZWhhdmlvciBieSBhZGRpbmcgYSBzaW5nbGUKKyAgICAgICAgaW50ZWdlciBpbmRp
Y2F0aW5nIHRoZSBudW1iZXIgb2YgY2xvc2VkLW1vZGUgc2hhZG93IHJvb3QgYW5jZXN0b3JzIG9m
IGVhY2ggbm9kZSBpbiB0aGUgZXZlbnQgcGF0aC4KKyAgICAgICAgSW4gY29tcHV0ZVBhdGhVbmNs
b3NlZFRvVGFyZ2V0LCBhbnkgbm9kZSB3aG9zZSAqZGVwdGgqIGlzIGdyZWF0ZXIgdGhhbiB0aGUg
Y29udGV4dCBvYmplY3QgaXMgZXhjbHVkZWQuCisKKyAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxv
d2luZyBleGFtcGxlOgorICAgICAgICBkaXYgLS0tLS0tLSBTaGFkb3dSb290IChjbG9zZWQpCisg
ICAgICAgICAgKy0gc3BhbiAgICAgKy0gc2xvdAorICAgICAgICBJZiBhbiBldmVudCBpcyBkaXNw
YXRjaGVkIG9uIHNwYW4sIHRoZW4gdGhlIGV2ZW50IHBhdGggd291bGQgYmUgW3NwYW4sIHNsb3Qs
IFNoYWRvd1Jvb3QsIGRpdl0uIFRoZW4KKyAgICAgICAgdGhlIHZhbHVlcyBvZiBpbnRlZ2VycyBh
c3NpZ25lZCB0byBlYWNoIG5vZGUgd291bGQgYmU6IFswLCAxLCAxLCAwXSByZXNwZWN0aXZlbHku
IFdoZW4gY29tcG9zZWRQYXRoCisgICAgICAgIGlzIGNhbGxlZCBvbiBzcGFuIG9yIGRpdiwgc2xv
dCBhbmQgU2hhZG93Um9vdCBhcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGhhdmUgYSBncmVhdGVy
ICpkZXB0aCogdmFsdWUuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgdGhpcyBzaW1wbGlzdGlj
IHNvbHV0aW9uIGRvZXNuJ3Qgd29yayB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzaGFkb3cgcm9v
dHMgb2YgdGhlIHNhbWUKKyAgICAgICAgZGVwdGggdGhyb3VnaCB3aGljaCBhbiBldmVudCBpcyBk
aXNwYXRjaGVkIGFzIGluOgorICAgICAgICBzZWN0aW9uIC0tIFNoYWRvd1Jvb3QgKGNsb3NlZCwg
U1IyKQorICAgICAgICAgIHwgICAgICAgICAgKy0gc2xvdCAoczIpCisgICAgICAgICAgK2RpdiAt
LS0tLS0gU2hhZG93Um9vdCAoY2xvc2VkLCBTUjEpCisgICAgICAgICAgICArLSBzcGFuICAgICAr
LSBzbG90IChzMSkKKyAgICAgICAgSWYgYW4gZXZlbnQgaXMgZGlzcGF0Y2hlZCBvbiBzcGFuLCB0
aGUgZXZlbnQgcGF0aCB3b3VsZCBiZSBbc3BhbiwgczEsIFNSMSwgZGl2LCBzMiwgU1IyLCBzZWN0
aW9uXS4KKyAgICAgICAgVGhlIHZhbHVlcyBvZiBpbnRlZ2VycyBhc3NpZ25lZCBhcmU6IFswLCAx
LCAxLCAwLCAxLCAxLCAwXSByZXNwZWN0aXZlbHkuIFdoZW4gY29tcG9zZWRQYXRoIGlzIGNhbGxl
ZAorICAgICAgICBvbiBTUjEsIHRoZSBzaW1wbGlzdGljIGFwcHJvYWNoIHdvdWxkIGluY2x1ZGUg
czIgYW5kIFNSMiwgd2hpY2ggd291bGQgYmUgd3JvbmcuCisKKyAgICAgICAgVG8gYWNjb3VudCBm
b3IgdGhpcyBjYXNlLCBpbiBjb21wdXRlUGF0aFVuY2xvc2VkVG9UYXJnZXQsIHdlIHRyYXZlcnNl
IHRoZSBldmVudCBwYXRoIHVwd2FyZHMgKGkuZS4KKyAgICAgICAgYW5jZXN0b3JzKSBhbmQgZG93
bndhcmRzIChpLmUuIGRlc2NlbmRhbnRzKSBmcm9tIHRoZSBjb250ZXh0IG9iamVjdCBhbmQgZGVj
cmVhc2UgdGhlICphbGxvd2VkIGRlcHRoKgorICAgICAgICBvZiBzaGFkb3cgdHJlZXMgd2hlbiB3
ZSB0cmF2ZXJzZSBvdXQgb2YgYSBzaGFkb3cgdHJlZSBpbiBlaXRoZXIgZGlyZWN0aW9uLiBXaGVu
IHRyYXZlcnNpbmcgdXB3YXJkcywKKyAgICAgICAgdGhlcmVmb3JlLCBtb3Zpbmcgb3V0IG9mIGEg
c2hhZG93IHJvb3QgdG8gaXRzIGhvc3Qgd291bGQgd291bGQgZGVjcmVhc2UgdGhlIGFsbG93ZWQg
ZGVwdGguIFdoZW4KKyAgICAgICAgdHJhdmVyc2luZyBkb3dhcmRzLCBtb3ZpbmcgZnJvbSBhIHNs
b3QgZWxlbWVudCB0byBpdHMgYXNzaWduZWQgbm9kZSB3b3VsZCBkZWNyZWFzZSB0aGUgYWxsb3dl
ZCBkZXB0aC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIGRlcHRocyBjYW4gYmUgbmVnYXRpdmUg
d2hlbiBhIGNvbXBvc2VkIGV2ZW50IGlzIGRpc3BhdGNoZWQgaW5zaWRlIGEgY2xvc2VkIHNoYWRv
dyB0cmVlLAorICAgICAgICBhbmQgaXQgZ2V0cyBvdXQgb2YgaXRzIHNoYWRvdyBob3N0LgorCisg
ICAgICAgIFVuZm9ydHVuYXRlbHksIHRoZSBsYXRlc3QgRE9NIHNwZWNpZmljYXRpb24gaGFzIGEg
YnVnIGFuZCBkb2Vzbid0IG1hdGNoIHRoZSBiZWhhdmlvciBvZiBDaHJvbWUuIFRoaXMKKyAgICAg
ICAgcGF0Y2ggcHJvcG9zZXMgYSBuZXcgYWxnb3JpdGhtIHdoaWNoIGNhbiBiZSBhZG9wdGVkIGlu
IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvZG9tL2lzc3Vlcy82ODQuCisKKyAgICAgICAgVGVz
dDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2V2ZW50LWNvbXBv
c2VkLXBhdGgtYWZ0ZXItZG9tLW11dGF0aW9uLmh0bWwKKworICAgICAgICAqIGRvbS9FdmVudENv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRDb250ZXh0OjpFdmVudENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6TW91c2VPckZvY3VzRXZlbnRDb250ZXh0OjpNb3VzZU9yRm9j
dXNFdmVudENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudENvbnRleHQ6OlRv
dWNoRXZlbnRDb250ZXh0KToKKyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudENvbnRleHQ6OmNsb3NlZFNoYWRvd0RlcHRoIGNvbnN0KTogQWRkZWQu
CisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dF
dmVudENvbnRleHQ6OldpbmRvd0V2ZW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFBhdGg6OmJ1aWxkUGF0aCk6IENvbXB1dGUgdGhlIGNsb3NlZCBzaGFkb3cgdHJlZSdzIGRlcHRo
cyBmb3IgZWFjaCBub2RlIGluIHRoZSBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVBh
dGhVbmNsb3NlZFRvVGFyZ2V0IGNvbnN0KTogSW1wbGVtZW50ZWQgdGhlIGFmb3JlbWVudGlvbmVk
IGFsZ29yaXRobS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKwog
MjAxOC0wOS0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgSEVWQyBjb2RlYyB0eXBlcyBpbiBNZWRpYSBDYXBhYmlsaXRpZXMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCShyZXZpc2lvbiAyMzYwOTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTAgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXZlbnRDb250ZXh0OjpFdmVu
dENvbnRleHQoTm9kZSogbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFy
Z2V0KiB0YXJnZXQpCi0gICAgOiBtX25vZGUobm9kZSkKLSAgICAsIG1fY3VycmVudFRhcmdldChj
dXJyZW50VGFyZ2V0KQotICAgICwgbV90YXJnZXQodGFyZ2V0KQorRXZlbnRDb250ZXh0OjpFdmVu
dENvbnRleHQoTm9kZSogbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFy
Z2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkKKyAgICA6IG1fbm9kZSB7IG5vZGUg
fQorICAgICwgbV9jdXJyZW50VGFyZ2V0IHsgY3VycmVudFRhcmdldCB9CisgICAgLCBtX3Rhcmdl
dCB7IHRhcmdldCB9CisgICAgLCBtX2Nsb3NlZFNoYWRvd0RlcHRoIHsgY2xvc2VkU2hhZG93RGVw
dGggfQogewogICAgIEFTU0VSVCghaXNVbnJlYWNoYWJsZU5vZGUobV90YXJnZXQuZ2V0KCkpKTsK
IH0KQEAgLTY2LDggKzY3LDggQEAgYm9vbCBFdmVudENvbnRleHQ6OmlzVG91Y2hFdmVudENvbnRl
eHQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTW91c2VPckZvY3VzRXZlbnRDb250ZXh0OjpN
b3VzZU9yRm9jdXNFdmVudENvbnRleHQoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRU
YXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCi0gICAgOiBFdmVudENvbnRleHQoJm5vZGUsIGN1
cnJlbnRUYXJnZXQsIHRhcmdldCkKK01vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6TW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0KE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBF
dmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpCisgICAgOiBFdmVudENv
bnRleHQoJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpCiB7
CiB9CiAKQEAgLTg3LDggKzg4LDggQEAgYm9vbCBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ6Omlz
TW91c2VPcgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAotVG91Y2hFdmVudENvbnRleHQ6
OlRvdWNoRXZlbnRDb250ZXh0KE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0
LCBFdmVudFRhcmdldCogdGFyZ2V0KQotICAgIDogRXZlbnRDb250ZXh0KCZub2RlLCBjdXJyZW50
VGFyZ2V0LCB0YXJnZXQpCitUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hFdmVudENvbnRleHQoTm9k
ZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQs
IGludCBjbG9zZWRTaGFkb3dEZXB0aCkKKyAgICA6IEV2ZW50Q29udGV4dCgmbm9kZSwgY3VycmVu
dFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkKICAgICAsIG1fdG91Y2hlcyhUb3Vj
aExpc3Q6OmNyZWF0ZSgpKQogICAgICwgbV90YXJnZXRUb3VjaGVzKFRvdWNoTGlzdDo6Y3JlYXRl
KCkpCiAgICAgLCBtX2NoYW5nZWRUb3VjaGVzKFRvdWNoTGlzdDo6Y3JlYXRlKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCShyZXZpc2lvbiAyMzYwOTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxMyBA
QCBjbGFzcyBFdmVudENvbnRleHQgewogcHVibGljOgogICAgIHVzaW5nIEV2ZW50SW52b2tlUGhh
c2UgPSBFdmVudFRhcmdldDo6RXZlbnRJbnZva2VQaGFzZTsKIAotICAgIEV2ZW50Q29udGV4dChO
b2RlKiwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0Kik7CisgICAgRXZl
bnRDb250ZXh0KE5vZGUqLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQq
LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIHZpcnR1YWwgfkV2ZW50Q29udGV4dCgpOwog
CiAgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsgfQogICAgIEV2
ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGFyZ2V0
LmdldCgpOyB9CiAgICAgRXZlbnRUYXJnZXQqIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFy
Z2V0LmdldCgpOyB9CisgICAgaW50IGNsb3NlZFNoYWRvd0RlcHRoKCkgY29uc3QgeyByZXR1cm4g
bV9jbG9zZWRTaGFkb3dEZXB0aDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZl
bnRzKEV2ZW50JiwgRXZlbnRJbnZva2VQaGFzZSkgY29uc3Q7CiAKQEAgLTU4LDExICs1OSwxMiBA
QCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8RXZlbnRU
YXJnZXQ+IG1fY3VycmVudFRhcmdldDsKICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0
OworICAgIGludCBtX2Nsb3NlZFNoYWRvd0RlcHRoIHsgMCB9OwogfTsKIAogY2xhc3MgTW91c2VP
ckZvY3VzRXZlbnRDb250ZXh0IGZpbmFsIDogcHVibGljIEV2ZW50Q29udGV4dCB7CiBwdWJsaWM6
Ci0gICAgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KE5vZGUmLCBFdmVudFRhcmdldCogY3VycmVu
dFRhcmdldCwgRXZlbnRUYXJnZXQqKTsKKyAgICBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQoTm9k
ZSYsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCosIGludCBjbG9zZWRT
aGFkb3dEZXB0aCk7CiAgICAgdmlydHVhbCB+TW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCk7CiAK
ICAgICBOb2RlKiByZWxhdGVkVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGVkVGFyZ2V0
LmdldCgpOyB9CkBAIC03OSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFRvdWNoRXZlbnRD
b250ZXh0IGZpbmFsIDogcHVibGljIEV2ZW50Q29udGV4dCB7CiBwdWJsaWM6Ci0gICAgVG91Y2hF
dmVudENvbnRleHQoTm9kZSYsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdl
dCopOworICAgIFRvdWNoRXZlbnRDb250ZXh0KE5vZGUmLCBFdmVudFRhcmdldCogY3VycmVudFRh
cmdldCwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIHZpcnR1YWwg
flRvdWNoRXZlbnRDb250ZXh0KCk7CiAKICAgICBlbnVtIFRvdWNoTGlzdFR5cGUgeyBUb3VjaGVz
LCBUYXJnZXRUb3VjaGVzLCBDaGFuZ2VkVG91Y2hlcyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50UGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
UGF0aC5jcHAJKHJldmlzaW9uIDIzNjA5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBh
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXaW5kb3dFdmVudENvbnRleHQgZmluYWwgOiBwdWJsaWMgRXZlbnRDb250
ZXh0IHsKIHB1YmxpYzoKLSAgICBXaW5kb3dFdmVudENvbnRleHQoTm9kZSYsIERPTVdpbmRvdyYs
IEV2ZW50VGFyZ2V0Jik7CisgICAgV2luZG93RXZlbnRDb250ZXh0KE5vZGUmLCBET01XaW5kb3cm
LCBFdmVudFRhcmdldCYsIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiBwcml2YXRlOgogICAgIHZv
aWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQmLCBFdmVudEludm9rZVBoYXNlKSBjb25zdCBmaW5h
bDsKIH07CiAKLWlubGluZSBXaW5kb3dFdmVudENvbnRleHQ6OldpbmRvd0V2ZW50Q29udGV4dChO
b2RlJiBub2RlLCBET01XaW5kb3cmIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0JiB0YXJnZXQp
Ci0gICAgOiBFdmVudENvbnRleHQoJm5vZGUsICZjdXJyZW50VGFyZ2V0LCAmdGFyZ2V0KQoraW5s
aW5lIFdpbmRvd0V2ZW50Q29udGV4dDo6V2luZG93RXZlbnRDb250ZXh0KE5vZGUmIG5vZGUsIERP
TVdpbmRvdyYgY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQmIHRhcmdldCwgaW50IGNsb3NlZFNo
YWRvd0RlcHRoKQorICAgIDogRXZlbnRDb250ZXh0KCZub2RlLCAmY3VycmVudFRhcmdldCwgJnRh
cmdldCwgY2xvc2VkU2hhZG93RGVwdGgpCiB7CiB9CiAKQEAgLTExMSwyOCArMTExLDMxIEBAIEV2
ZW50UGF0aDo6RXZlbnRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2UKIAogdm9pZCBFdmVudFBhdGg6
OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogewotICAgIHVz
aW5nIE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAoKiko
Tm9kZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJnZXQqKTsKLSAgICBNYWtlRXZlbnRDb250ZXh0
IG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRU
YXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KTsKKyAgICB1
c2luZyBNYWtlRXZlbnRDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gKCop
KE5vZGUmLCBFdmVudFRhcmdldCosIEV2ZW50VGFyZ2V0KiwgaW50IGNsb3NlZFNoYWRvd0RlcHRo
KTsKKyAgICBNYWtlRXZlbnRDb250ZXh0IG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9k
ZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBj
bG9zZWRTaGFkb3dEZXB0aCkgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFdmVu
dENvbnRleHQ+KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRo
KTsKICAgICB9OwogICAgIGlmIChpczxNb3VzZUV2ZW50PihldmVudCkgfHwgZXZlbnQuaXNGb2N1
c0V2ZW50KCkpIHsKLSAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBF
dmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCkgLT4gc3RkOjp1
bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJn
ZXQpOworICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFy
Z2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93
RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3Vy
cmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAg
fQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKGlzPFRvdWNoRXZlbnQ+KGV2ZW50
KSkgewotICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFy
Z2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0KSAtPiBzdGQ6OnVuaXF1ZV9w
dHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
b3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KTsKKyAgICAgICAg
bWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRh
cmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6
OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBj
bG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2VuZGlmCiAKICAgICBOb2Rl
KiBub2RlID0gbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudCgmb3JpZ2luYWxUYXJnZXQpOwogICAg
IE5vZGUqIHRhcmdldCA9IG5vZGUgPyBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygq
bm9kZSkgOiBudWxscHRyOworICAgIGludCBjbG9zZWRTaGFkb3dEZXB0aCA9IDA7CisgICAgLy8g
RGVwdGhzIGFyZSB1c2VkIHRvIGRlY2lkZWQgd2hpY2ggbm9kZXMgYXJlIGV4Y2x1ZGVkIGluIGV2
ZW50LmNvbXBvc2VkUGF0aCB3aGVuIHRoZSB0cmVlIGlzIG11dGF0ZWQgZHVyaW5nIGV2ZW50IGRp
c3BhdGNoaW5nLgorICAgIC8vIFRoZXkgY291bGQgYmUgbmVnYXRpdmUgZm9yIG5vZGVzIG91dHNp
ZGUgdGhlIHNoYWRvdyB0cmVlIG9mIHRoZSB0YXJnZXQgbm9kZS4KICAgICB3aGlsZSAobm9kZSkg
ewogICAgICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtl
RXZlbnRDb250ZXh0KCpub2RlLCBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygqbm9k
ZSksIHRhcmdldCkpOworICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlRXZlbnRDb250ZXh0
KCpub2RlLCBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygqbm9kZSksIHRhcmdldCwg
Y2xvc2VkU2hhZG93RGVwdGgpKTsKIAogICAgICAgICAgICAgaWYgKGlzPFNoYWRvd1Jvb3Q+KCpu
b2RlKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0NCw3ICsxNDcsNyBAQCB2b2lkIEV2
ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsCiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVCh0YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpu
b2RlKS5kb21XaW5kb3coKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhdGguYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2luZG93RXZlbnRDb250ZXh0Pigqbm9kZSwgKndpbmRvdywg
KnRhcmdldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0
LCBjbG9zZWRTaGFkb3dEZXB0aCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1Myw2ICsxNTYsOCBAQCB2b2lk
IEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsCiAgICAgICAgICAgICBhdXRvKiBz
aGFkb3dSb290T2ZQYXJlbnQgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKTsKICAgICAgICAgICAgIGlm
IChVTkxJS0VMWShzaGFkb3dSb290T2ZQYXJlbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGFzc2lnbmVkU2xvdCA9IHNoYWRvd1Jvb3RPZlBhcmVudC0+ZmluZEFzc2lnbmVkU2xvdCgq
bm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1Jvb3RPZlBhcmVudC0+bW9k
ZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpPcGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgY2xv
c2VkU2hhZG93RGVwdGgrKzsKICAgICAgICAgICAgICAgICAgICAgLy8gbm9kZSBpcyBhc3NpZ25l
ZCB0byBhIHNsb3QuIENvbnRpbnVlIGRpc3BhdGNoaW5nIHRoZSBldmVudCBhdCB0aGlzIHNsb3Qu
CiAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGFzc2lnbmVkU2xvdDsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xNjUsNiArMTcwLDggQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2Rl
JiBvcmlnaW5hbAogICAgICAgICBpZiAoIXNob3VsZEV2ZW50Q3Jvc3NTaGFkb3dCb3VuZGFyeShl
dmVudCwgc2hhZG93Um9vdCwgb3JpZ2luYWxUYXJnZXQpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBub2RlID0gc2hhZG93Um9vdC5ob3N0KCk7CisgICAgICAgIGlmIChzaGFkb3dSb290
Lm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6T3BlbikKKyAgICAgICAgICAgIGNsb3NlZFNoYWRv
d0RlcHRoLS07CiAgICAgICAgIGlmIChleGl0aW5nU2hhZG93VHJlZU9mVGFyZ2V0KQogICAgICAg
ICAgICAgdGFyZ2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUpOwog
ICAgIH0KQEAgLTI1MSwzMiArMjU4LDU1IEBAIHZvaWQgRXZlbnRQYXRoOjpyZXRhcmdldFRvdWNo
TGlzdHMoY29uc3QKICNlbmRpZgogCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2Rv
bS1ldmVudC1jb21wb3NlZHBhdGgKKy8vIEFueSBub2RlIHdob3NlIGRlcHRoIGNvbXB1dGVkIGlu
IEV2ZW50UGF0aDo6YnVpbGRQYXRoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY29udGV4dCBvYmplY3Qg
aXMgZXhjbHVkZWQuCisvLyBCZWNhdXNlIHdlIGNhbiBleGl0IG91dCBvZiBhIGNsb3NlZCBzaGFk
b3cgdHJlZSBhbmQgcmUtZW50ZXIgYW5vdGhlciBjbG9zZWQgc2hhZG93IHRyZWUgdmlhIGEgc2xv
dCwKKy8vIHdlIGRlY3JlYXNlIHRoZSAqYWxsb3dlZCBkZXB0aCogd2hlbmV2ZXIgd2UgbW92ZWQg
dG8gYSAic2hhbGxvd2VyIiAoY2xvc2VyLXRvLWRvY3VtZW50KSB0cmVlLgogVmVjdG9yPEV2ZW50
VGFyZ2V0Kj4gRXZlbnRQYXRoOjpjb21wdXRlUGF0aFVuY2xvc2VkVG9UYXJnZXQoY29uc3QgRXZl
bnRUYXJnZXQmIHRhcmdldCkgY29uc3QKIHsKICAgICBWZWN0b3I8RXZlbnRUYXJnZXQqPiBwYXRo
OwotICAgIHBhdGgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3BhdGguc2l6ZSgpKTsKLSAgICBj
b25zdCBOb2RlKiB0YXJnZXROb2RlID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0
KSkKLSAgICAgICAgdGFyZ2V0Tm9kZSA9ICZkb3duY2FzdDxOb2RlPih0YXJnZXQpOwotICAgIGVs
c2UgaWYgKGlzPERPTVdpbmRvdz4odGFyZ2V0KSkgewotICAgICAgICB0YXJnZXROb2RlID0gZG93
bmNhc3Q8RE9NV2luZG93Pih0YXJnZXQpLmRvY3VtZW50KCk7Ci0gICAgICAgIEFTU0VSVCh0YXJn
ZXROb2RlKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiBjb250ZXh0IDogbV9wYXRoKSB7Ci0gICAg
ICAgIGF1dG8qIGN1cnJlbnRUYXJnZXQgPSBjb250ZXh0LT5jdXJyZW50VGFyZ2V0KCk7Ci0gICAg
ICAgIGlmICghaXM8Tm9kZT4oY3VycmVudFRhcmdldCkgfHwgIXRhcmdldE5vZGUgfHwgIXRhcmdl
dE5vZGUtPmlzQ2xvc2VkU2hhZG93SGlkZGVuKGRvd25jYXN0PE5vZGU+KCpjdXJyZW50VGFyZ2V0
KSkpCi0gICAgICAgICAgICBwYXRoLnVuY2hlY2tlZEFwcGVuZChjdXJyZW50VGFyZ2V0KTsKLSAg
ICB9CisgICAgYXV0byBwYXRoU2l6ZSA9IG1fcGF0aC5zaXplKCk7CisgICAgUkVMRUFTRV9BU1NF
UlQocGF0aFNpemUpOworICAgIHBhdGgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwYXRoU2l6ZSk7
CisKKyAgICBhdXRvIGN1cnJlbnRUYXJnZXRJbmRleCA9IG1fcGF0aC5maW5kTWF0Y2hpbmcoWyZ0
YXJnZXRdIChhdXRvJiBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiBjb250ZXh0LT5jdXJyZW50
VGFyZ2V0KCkgPT0gJnRhcmdldDsKKyAgICB9KTsKKyAgICBSRUxFQVNFX0FTU0VSVChjdXJyZW50
VGFyZ2V0SW5kZXggIT0gbm90Rm91bmQpOworICAgIGF1dG8gY3VycmVudFRhcmdldERlcHRoID0g
bV9wYXRoW2N1cnJlbnRUYXJnZXRJbmRleF0tPmNsb3NlZFNoYWRvd0RlcHRoKCk7CisKKyAgICBh
dXRvIGFwcGVuZFRhcmdldFdpdGhMZXNzZXJEZXB0aCA9IFsmcGF0aF0gKGNvbnN0IEV2ZW50Q29u
dGV4dCYgY3VycmVudENvbnRleHQsIGludCYgY3VycmVudERlcHRoQWxsb3dlZCkgeworICAgICAg
ICBhdXRvIGRlcHRoID0gY3VycmVudENvbnRleHQuY2xvc2VkU2hhZG93RGVwdGgoKTsKKyAgICAg
ICAgYm9vbCBjb250ZXh0SXNJbnNpZGVJbm5lclNoYWRvd1RyZWUgPSBkZXB0aCA+IGN1cnJlbnRE
ZXB0aEFsbG93ZWQ7CisgICAgICAgIGlmIChjb250ZXh0SXNJbnNpZGVJbm5lclNoYWRvd1RyZWUp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgbW92ZWRPdXRPZlNoYWRvd1RyZWUg
PSBkZXB0aCA8IGN1cnJlbnREZXB0aEFsbG93ZWQ7CisgICAgICAgIGlmIChtb3ZlZE91dE9mU2hh
ZG93VHJlZSkKKyAgICAgICAgICAgIGN1cnJlbnREZXB0aEFsbG93ZWQgPSBkZXB0aDsKKyAgICAg
ICAgcGF0aC51bmNoZWNrZWRBcHBlbmQoY3VycmVudENvbnRleHQuY3VycmVudFRhcmdldCgpKTsK
KyAgICB9OworCisgICAgYXV0byBjdXJyZW50RGVwdGhBbGxvd2VkID0gY3VycmVudFRhcmdldERl
cHRoOworICAgIGF1dG8gaSA9IGN1cnJlbnRUYXJnZXRJbmRleDsKKyAgICBkbyB7CisgICAgICAg
IGFwcGVuZFRhcmdldFdpdGhMZXNzZXJEZXB0aCgqbV9wYXRoW2ldLCBjdXJyZW50RGVwdGhBbGxv
d2VkKTsKKyAgICB9IHdoaWxlIChpLS0pOworICAgIHBhdGgucmV2ZXJzZSgpOworCisgICAgY3Vy
cmVudERlcHRoQWxsb3dlZCA9IGN1cnJlbnRUYXJnZXREZXB0aDsKKyAgICBmb3IgKGF1dG8gaSA9
IGN1cnJlbnRUYXJnZXRJbmRleCArIDE7IGkgPCBwYXRoU2l6ZTsgKytpKQorICAgICAgICBhcHBl
bmRUYXJnZXRXaXRoTGVzc2VyRGVwdGgoKm1fcGF0aFtpXSwgY3VycmVudERlcHRoQWxsb3dlZCk7
CisgICAgCiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKIEV2ZW50UGF0aDo6RXZlbnRQYXRoKGNvbnN0
IFZlY3RvcjxFbGVtZW50Kj4mIHRhcmdldHMpCiB7CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rp
b24gc2VlbXMgd3JvbmcuIFdoeSBhcmUgd2Ugbm90IGZpcmluZyBldmVudHMgaW4gdGhlIGNsb3Nl
ZCBzaGFkb3cgdHJlZXM/CiAgICAgZm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRzKSB7CiAgICAg
ICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBvcmlnaW4gPSAqdGFyZ2V0cy5iZWdp
bigpOwogICAgICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRTaGFkb3dIaWRkZW4oKm9yaWdpbikp
Ci0gICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0
Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luKSk7CisgICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7
CiAgICAgfQogfQogCkBAIC0yODUsNyArMzE1LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29u
c3QgVmVjdG9yPEV2ZW50VAogICAgIGZvciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykgewogICAg
ICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKCFpczxOb2RlPih0YXJnZXQpKTsK
LSAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4obnVs
bHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpKSk7CisgICAgICAgIG1fcGF0aC5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdldHMu
YmVnaW4oKSwgMCkpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMzYwOTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDktMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXBkYXRlIGNvbXBvc2VkUGF0aCB0
byBtYXRjaCB0aGUgbGF0ZXN0IHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDM3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDI4NDMwMDQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmViYXNlbGlu
ZWQgdGhlIHRlc3Qgbm93IHRoYXQgYWxsIHRlc3QgY2FzZXMgcGFzcy4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2V2ZW50LWNvbXBvc2VkLXBhdGgtYWZ0ZXItZG9t
LW11dGF0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxOC0wOS0xNSAgUm9iIEJ1aXMgIDxyYnVpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2Io
KSBzaG91bGQgY3JlYXRlIGEgQmxvYiB3aXRoIHR5cGUgZm9yIGVtcHR5IHJlc3BvbnNlCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20v
ZXZlbnQtY29tcG9zZWQtcGF0aC1hZnRlci1kb20tbXV0YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2hh
ZG93LWRvbS9ldmVudC1jb21wb3NlZC1wYXRoLWFmdGVyLWRvbS1tdXRhdGlvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDIzNjA5OSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2hhZG93LWRvbS9ldmVudC1jb21wb3NlZC1wYXRoLWFmdGVyLWRvbS1tdXRh
dGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACiAKLUZBSUwg
RXZlbnQuY29tcG9zZWRQYXRoKCkgc2hvdWxkIHJldHVybiB0aGUgc2FtZSByZXN1bHQgZXZlbiBp
ZiBET00gaXMgbXV0YXRlZCAoMS8yKSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgMyBnb3QgMgotRkFJTCBFdmVudC5jb21wb3NlZFBhdGgoKSBzaG91bGQgcmV0
dXJuIHRoZSBzYW1lIHJlc3VsdCBldmVuIGlmIERPTSBpcyBtdXRhdGVkICgyLzIpIGFzc2VydF9h
cnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCA1IGdvdCAyCitQQVNTIEV2ZW50
LmNvbXBvc2VkUGF0aCgpIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgcmVzdWx0IGV2ZW4gaWYgRE9N
IGlzIG11dGF0ZWQgKDEvMikgCitQQVNTIEV2ZW50LmNvbXBvc2VkUGF0aCgpIHNob3VsZCByZXR1
cm4gdGhlIHNhbWUgcmVzdWx0IGV2ZW4gaWYgRE9NIGlzIG11dGF0ZWQgKDIvMikgCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>