<?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>205990</bug_id>
          
          <creation_ts>2020-01-08 22:29:16 -0800</creation_ts>
          <short_desc>A partially selected RTL text is placed at a wrong vertical position if it has a vertical initial advance</short_desc>
          <delta_ts>2020-01-21 18:02:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1604523</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 22:29:16 -0800</bug_when>
    <thetext>[HarfBuzz] A partially selected RTL text is placed at a wrong vertical position if it has a vertical initial advance

GTK port, trunk@254184

1. Go to https://ar.wikipedia.org/wiki/%D8%B3%D9%88%D8%B1%D8%A9_%D8%A7%D9%84%D8%A5%D8%AE%D9%84%D8%A7%D8%B5
2. Select a text which has Arabic diacritics by drugging mouse cursor slowly

You can observe glyphs are dancing vertically.

This issue still happens even after r254190 fixing other initial advance bug (Bug 118221).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604524</commentid>
    <comment_count>1</comment_count>
      <attachid>387194</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 22:30:03 -0800</bug_when>
    <thetext>Created attachment 387194
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604525</commentid>
    <comment_count>2</comment_count>
      <attachid>387195</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 22:32:06 -0800</bug_when>
    <thetext>Created attachment 387195
[screenshot] GTK port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604530</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 23:29:08 -0800</bug_when>
    <thetext>I put a break point at the end of FontCascade::getGlyphsAndAdvancesForComplexText,
and observed &apos;glyphBuffer&apos; variable.

When drawing only latter 3 glyphs of &quot;&amp;#x642;&amp;#x64F; &quot;.

(gdb) p glyphBuffer.size()
$22 = 3
(gdb) p *glyphBuffer.glyphs(0)@3
$23 = {3, 1400, 1387}
(gdb) p *glyphBuffer.advances(0)@3
$24 = {{m_width = 21.53125, m_height = 3.90625}, {m_width = 0.46875, m_height = -3.90625}, {m_width = 62, m_height = -0}}
(gdb) p glyphBuffer.initialAdvance()
$25 = (const WebCore::GlyphBufferAdvance &amp;) @0x7ffe17333190: {m_width = -0.46875, m_height = -3.90625}

When drawing all 5 glyphs,

(gdb) p glyphBuffer.size()
$26 = 5
(gdb) p *glyphBuffer.glyphs(0)@5
$28 = {1400, 1387, 3, 1400, 1387}
(gdb) p *glyphBuffer.advances(0)@5
$29 = {{m_width = 0.46875, m_height = -3.90625}, {m_width = 62, m_height = -0}, {m_width = 21.53125, m_height = 3.90625}, {m_width = 0.46875, m_height = -3.90625}, {m_width = 62, m_height = -0}}
(gdb) p glyphBuffer.initialAdvance()
$30 = (const WebCore::GlyphBufferAdvance &amp;) @0x7ffe17332cd0: {m_width = -0.46875, m_height = -3.90625}

The glyph 1400 is painted on y=-3.90625 for the all glyphs case, but y=0 for latter 3 glyphs case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604533</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 23:51:15 -0800</bug_when>
    <thetext>This issue will happen for WinCairo port if it&apos;d use ComplexTextController by applying the patch of Bug 204884.

All 5 glyphs painting case:

glyphs: 757 981 3 757 981
initial advance: 9.0 4.0
advances: (-9,4) (47,0) (31,-4) (-9,4) (47,0)

Only latter 3 glyphs painting case:

glyphs: 3 757 981
initial advance: 9.0 4.0
advances: (31,-4) (-9,4) (47,0)

The glyph 757 is painted at y=4 for the first case,
and y=0 for the second case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604538</commentid>
    <comment_count>5</comment_count>
      <attachid>387197</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 23:56:40 -0800</bug_when>
    <thetext>Created attachment 387197
[Screenshot] WinCairo port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604553</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-09 02:16:38 -0800</bug_when>
    <thetext>FontCascade::getGlyphsAndAdvancesForComplexText is calculating
initialAdvance by subtracting RTL text&apos;s advances from totalWidth.

It should do same for y-axis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604554</commentid>
    <comment_count>7</comment_count>
      <attachid>387203</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-09 02:18:10 -0800</bug_when>
    <thetext>Created attachment 387203
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604560</commentid>
    <comment_count>8</comment_count>
      <attachid>387207</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-09 02:48:14 -0800</bug_when>
    <thetext>Created attachment 387207
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604563</commentid>
    <comment_count>9</comment_count>
      <attachid>387209</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-09 03:01:07 -0800</bug_when>
    <thetext>Created attachment 387209
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604565</commentid>
    <comment_count>10</comment_count>
      <attachid>387210</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-09 03:12:33 -0800</bug_when>
    <thetext>Created attachment 387210
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604566</commentid>
    <comment_count>11</comment_count>
      <attachid>387211</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-09 03:14:02 -0800</bug_when>
    <thetext>Created attachment 387211
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604996</commentid>
    <comment_count>12</comment_count>
      <attachid>387310</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-09 20:19:27 -0800</bug_when>
    <thetext>Created attachment 387310
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605014</commentid>
    <comment_count>13</comment_count>
      <attachid>387314</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-09 22:34:43 -0800</bug_when>
    <thetext>Created attachment 387314
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607866</commentid>
    <comment_count>14</comment_count>
      <attachid>388011</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-16 21:53:25 -0800</bug_when>
    <thetext>Created attachment 388011
Patch to add a test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607920</commentid>
    <comment_count>15</comment_count>
      <attachid>388019</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-17 01:19:36 -0800</bug_when>
    <thetext>Created attachment 388019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607921</commentid>
    <comment_count>16</comment_count>
      <attachid>388020</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-17 01:22:42 -0800</bug_when>
    <thetext>Created attachment 388020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607922</commentid>
    <comment_count>17</comment_count>
      <attachid>388021</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-17 01:24:47 -0800</bug_when>
    <thetext>Created attachment 388021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607923</commentid>
    <comment_count>18</comment_count>
      <attachid>388022</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-17 01:26:19 -0800</bug_when>
    <thetext>Created attachment 388022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608641</commentid>
    <comment_count>19</comment_count>
      <attachid>388209</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-20 00:17:05 -0800</bug_when>
    <thetext>Created attachment 388209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608797</commentid>
    <comment_count>20</comment_count>
      <attachid>388209</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-20 10:25:14 -0800</bug_when>
    <thetext>Comment on attachment 388209
Patch

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

Looks like the Windows build failed — I couldn&apos;t find the error message in the EWS results, though. I retried so maybe it will succeed without any further changes.

&gt; Source/WebCore/platform/graphics/ComplexTextController.h:68
&gt; +    float totalWidth() const { return m_totalAdvance.width(); }

Are there any uses of this outside the class? Can this be a private member function instead? Or maybe we can just write m_totalAdvance.width() at each of the two call sites. I’d like to cut down on proliferation of functions that do nearly the same thing.

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:292
&gt; +    FloatPoint oldStartPoint(startPoint);

I suggest that instead of this, we write:

    float oldStartX = startPoint.x();

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:1438
&gt; +    FloatPoint startPoint(point);

Style wise, I think this is nicer with an &quot;=&quot;, but not sure everyone else will agree.

&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:66
&gt; +    operator FloatSize() const { return FloatSize(width(), height()); }

I think it’s a little risky to add an operator that does a lossy conversion from doubles to floats, implicitly and silently. Normally we would like conversions that narrow to be named function calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608904</commentid>
    <comment_count>21</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-20 17:58:16 -0800</bug_when>
    <thetext>Thank you very much for the review.

(In reply to Darin Adler from comment #20)
&gt; Looks like the Windows build failed — I couldn&apos;t find the error message in
&gt; the EWS results, though. I retried so maybe it will succeed without any
&gt; further changes.

compile-webkit-tot actually reported the following error:

&gt; Could NOT find interface definition for Node in ./dom/Node.idl at /home/buildbot/worker/Windows-EWS/build/Source/WebCore/bindings/scripts/CodeGenerator.pm line 502.

I think preprocessor.pm, run by Cygin perl, was failing to spawn gcc as a child process.
Bug 84274 is the past attempt to fix the issue.
AppleWin should use Win32 Perl as well as WinCairo does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608905</commentid>
    <comment_count>22</comment_count>
      <attachid>388209</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-20 18:33:50 -0800</bug_when>
    <thetext>Comment on attachment 388209
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ComplexTextController.h:68
&gt;&gt; +    float totalWidth() const { return m_totalAdvance.width(); }
&gt; 
&gt; Are there any uses of this outside the class? Can this be a private member function instead? Or maybe we can just write m_totalAdvance.width() at each of the two call sites. I’d like to cut down on proliferation of functions that do nearly the same thing.

totalAdvance() is used in FontCascade.
Will remove totalWidth().

&gt;&gt; Source/WebCore/platform/graphics/FontCascade.cpp:292
&gt;&gt; +    FloatPoint oldStartPoint(startPoint);
&gt; 
&gt; I suggest that instead of this, we write:
&gt; 
&gt;     float oldStartX = startPoint.x();

Will fix.

&gt;&gt; Source/WebCore/platform/graphics/FontCascade.cpp:1438
&gt;&gt; +    FloatPoint startPoint(point);
&gt; 
&gt; Style wise, I think this is nicer with an &quot;=&quot;, but not sure everyone else will agree.

Will fix.

&gt;&gt; Source/WebCore/platform/graphics/GlyphBuffer.h:66
&gt;&gt; +    operator FloatSize() const { return FloatSize(width(), height()); }
&gt; 
&gt; I think it’s a little risky to add an operator that does a lossy conversion from doubles to floats, implicitly and silently. Normally we would like conversions that narrow to be named function calls.

I&apos;m going to add
inline FloatSize toFloatSize(const GlyphBufferAdvance&amp; a)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608910</commentid>
    <comment_count>23</comment_count>
      <attachid>388271</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-20 19:03:49 -0800</bug_when>
    <thetext>Created attachment 388271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608918</commentid>
    <comment_count>24</comment_count>
      <attachid>388274</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-20 19:51:08 -0800</bug_when>
    <thetext>Created attachment 388274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609000</commentid>
    <comment_count>25</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-21 05:50:27 -0800</bug_when>
    <thetext>I&apos;m going to land this patch if nobody objects for a few day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609098</commentid>
    <comment_count>26</comment_count>
      <attachid>388274</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-21 09:51:30 -0800</bug_when>
    <thetext>Comment on attachment 388274
Patch

Looks good. I agree you should land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609416</commentid>
    <comment_count>27</comment_count>
      <attachid>388274</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-21 18:01:16 -0800</bug_when>
    <thetext>Comment on attachment 388274
Patch

Clearing flags on attachment: 388274

Committed r254898: &lt;https://trac.webkit.org/changeset/254898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609417</commentid>
    <comment_count>28</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-21 18:01:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609418</commentid>
    <comment_count>29</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-21 18:02:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/58782109&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>387194</attachid>
            <date>2020-01-08 22:30:03 -0800</date>
            <delta_ts>2020-01-08 22:30:03 -0800</delta_ts>
            <desc>test case</desc>
            <filename>a.html</filename>
            <type>text/html</type>
            <size>192</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxtZXRhIGNoYXJzZXQ9dXRmLTg+CiAgPHN0eWxlPgog
ICAgc3BhbiB7Cglmb250LWZhbWlseTogQXJpYWw7Cglmb250LXNpemU6IDUwMCU7CgliYWNrZ3Jv
dW5kOiBwaW5rOwogICAgfQogIDwvc3R5bGU+Cgo8c3Bhbj4gIAomI3g2NDI7JiN4NjRGOwomI3g2
NDI7JiN4NjRGOwo8L3NwYW4+ICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>387195</attachid>
            <date>2020-01-08 22:32:06 -0800</date>
            <delta_ts>2020-01-08 22:32:06 -0800</delta_ts>
            <desc>[screenshot] GTK port</desc>
            <filename>Screenshot_2020-01-09_15-31-01.png</filename>
            <type>image/png</type>
            <size>31788</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">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
7peU2GuMTjjBenyHhvzmSkt0qG9CsVbn5KtdaqK+3+jWmN6pKkiL0durs1W4aKdsNikuOVk9B3dU
QnyUvvzVrSiXTfnb8tQ/sVhpiZGtr8t39ftFOqM0sfdlmr9mllb/+rXSOqYqvzJXxRVuRfoTdd3Q
f8q2p0tw1TQ/tVvuWlvwHJw2fL/bqnffDQQC+jb7c1V6ffL57QpzRSuvoFSJ6qgeSf3ktDlb3WOq
bXfr2e7u2RUVFbr44ovrbFENBAJ7r9V95erBQdep6kbelOuGHQ6HSktLFR4eLrfb3eDt2Gw2hYeH
q7S0VC6XKyTHP1gteXl5zVpLY0VEROiaa67Rc889p61bt8rhcOjHH39UQUHB3sHUmmJ3C7WtxqBn
LpdDXk/l3q7wRbm5sttqzvNss9uafJIhKipaTzz5WKPus9m9WUt2vi13oEBOh0P2PZ9DZcrRjtKX
5fMHFKY42W1mc4f7/X6Fh4fvGVRmn1tPe0iSdPOci9XOsbsbZ6BsnaZd/XbQ7S0u7qTz7rhHN1xU
a97Z9pP02Gt+/eeR6Xrj9iv0eJlDyd2GaPzlz2t60Z067f5aG0ocrwffeEadH3pCc994RAvcYWrf
Y5QmPvCiOs48Xjd/24Dr/YqW6/u1u8flXvbWNC2ra50j43XRnkAtZ09d/eLrin/kIU1/6z/6vNip
xMN665Rb7tT1vx9eLcymaOwFp+uX2V/r07c+1Y5dRfKGJ6pTz6G67L4/6MqJA1TjdKx7oz5/8WF9
WuBRWFyy0rsO1sTbb9Hvzxuu9rXPrTRm3QbXa6WrJv93msrve0xz7rhEL5e7lNz1CJ065TnNDX9K
I6+u1TU06gTd/tT18tzzut687xbNiOuk8x85Xyf0DLassfsYpr+/OVOZ/31Sb3zypqbNK5ViUtR5
wHiNaco4NaHg6qUpr76rns9P00vvfqTp3+xQsTdc8ek9dcQxZ2hkIy513I/V8eveV+NOSNJLn07X
p68WqtIZq+T0bhp62b/12OTTVdVbuVP/wUqKXKa+A7rU2Gz6MUer+31L9GvEeI0/pnp36jAdPe4Y
hc37QO7DxmhM7fOVjX2s7cfr3plna+2/H9BLj8/ShoKA2nUepPPuuHH/z4I6xB71d/1n6hKd8+Sd
uu7Zgfq/KRZz9QZ5DdZ5DBw9dMXLs9Xp6cf1wrzX9djsQvmjO6jX8Ml65LqpmtCjEcM9N/gzyaMv
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
AAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAA
AACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMA
AAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQA
AAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1
AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBA
DQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABgg
UAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAG
CNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACA
AQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAA
YIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAA
ABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAA
AAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAA
AACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMA
AAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQA
AAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1
AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBA
DQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABgg
UAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAG
CNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACA
AQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAA
YIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAA
ABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAA
AAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAA
AACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMA
AAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQA
AAAAABggUAMAAAAAYIBADQAAAACAAQI1AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAQI1
AAAAAAAGCNQAAAAAABggUAMAAAAAYIBADQAAAACAAafVgiVLljRnHQAAAAAAtCl2SfL7/S1dBwAA
AAAAbUJVhrZL0o7/b7+OTRiGoSCAnqINvIC301DazoUqgzcQSWVImcLgJLzXfvh37e37rWUAAADg
V5wb+pEkY4yMMW4tBAAAAN/ufT+XJGmtPWutWdc1y7Kk1npZ2Jzzsl8AAADwqau37XEc2bYtc870
3ks5j62152VJAAAA8Kd67yVJXuJATdR2+CE7AAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>387197</attachid>
            <date>2020-01-08 23:56:40 -0800</date>
            <delta_ts>2020-01-08 23:56:40 -0800</delta_ts>
            <desc>[Screenshot] WinCairo port</desc>
            <filename>wincairo.png</filename>
            <type>image/png</type>
            <size>13081</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">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
IaSW/OI7/x+gkTk19ZtbjQAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387203</attachid>
            <date>2020-01-09 02:18:10 -0800</date>
            <delta_ts>2020-01-09 02:49:08 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>11902</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDgzNDdjOWZiMGMyLi41ODE1ZGE4MTI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0
aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAo
aCA8IDApCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFk
anVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0g
dHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgp
KSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5h
bGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJX
aWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkp
OworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQs
IG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChGb250Q2FzY2FkZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAh
dHJlYXRBc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAg
ICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtODExLDcgKzgxMSw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0
aWFsQWR2YW5jZUhvcml6b250YWxseShtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90
YWxXaWR0aCArPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3RvdGFsQWR2YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBA
IC04MjksNyArODI5LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBo
c0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uu
d2lkdGgoKTsKKyAgICAgICAgICAgIG1fdG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVt
cGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAg
ICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRF
bXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIyNTYuLjA3NjAxZjQ4MGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2Yg
ZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1lZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0Zh
cigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxXaWR0aDsgfQorICAgIGZsb2F0IHRvdGFsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZS53aWR0aCgpOyB9CisgICAgRmxvYXRT
aXplIHRvdGFsQWRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEFkdmFuY2U7IH0KIAogICAg
IGZsb2F0IG1pbkdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyByZXR1cm4gbV9taW5HbHlwaEJv
dW5kaW5nQm94WDsgfQogICAgIGZsb2F0IG1heEdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhHbHlwaEJvdW5kaW5nQm94WDsgfQpAQCAtMjE1LDcgKzIxNiw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVyIHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fZW5kIHsgMCB9OwogCi0gICAgZmxvYXQgbV90b3RhbFdpZHRoIHsgMCB9OworICAgIEZsb2F0
U2l6ZSBtX3RvdGFsQWR2YW5jZTsKICAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9udW1HbHlwaHNTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJl
bnRSdW4geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKaW5kZXggMWE2ZjczYTgyMzkuLmQzOTllYmZkZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNzcsMTAg
KzI3NywxMCBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4m
JiBmb250U2VsZWN0b3IpIGNvbnN0CiAgICAgbV9yZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVx
dWlyZXNTaGFwaW5nKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRl
eHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAorRmxv
YXRTaXplIEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBh
dGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAogewogICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXgpCi0gICAgICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOworICAgICAgICByZXR1cm4geyBnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIp
LCAwIH07CiAgICAgcmV0dXJuIGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOwogfQogCkBAIC0yODgsMTQgKzI4OCwxNCBAQCBmbG9h
dCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1
ZU9yKHJ1bi5sZW5ndGgoKSk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxv
YXQgc3RhcnRYID0gcG9pbnQueCgpICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1
biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAg
RmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQgKyBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29k
ZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVy
KTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBH
aXZlIHVwLgogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIC8vIERyYXcgdGhlIGdseXBoIGJ1ZmZlciBub3cgYXQgdGhlIHN0YXJ0aW5nIHBvaW50
IHJldHVybmVkIGluIHN0YXJ0WC4KLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCBw
b2ludC55KCkpOworICAgIEZsb2F0UG9pbnQgb2xkU3RhcnRQb2ludChzdGFydFBvaW50KTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIoY29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbik7Ci0gICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRY
OworICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIG9sZFN0YXJ0UG9pbnQueCgpOwogfQogCiB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29u
c3QKQEAgLTMyMSw3ICszMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICBj
b2RlUGF0aFRvVXNlID0gQ29tcGxleDsKICAgICAKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKLSAgICBmbG9hdCBzdGFydFggPSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhUb1Vz
ZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhU
b1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpKTsKICAgICAvLyBXZSBj
b3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBHaXZlIHVwLgogICAgIGlm
IChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzMx
LDcgKzMzMSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxh
eUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsK
ICAgICB9KTsKICAgICAKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9p
bnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgcmV0dXJuIGRpc3BsYXlMaXN0Owog
fQpAQCAtMTM5OCw5ICsxMzk3LDkgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmUKIH0KIAogI2lm
ICFQTEFURk9STShXSU4pIHx8IFVTRShESVJFQ1QyRCkKLWZsb2F0IEZvbnRDYXNjYWRlOjpnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVt
cGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9y
VGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGZsb2F0IGlu
aXRpYWxBZHZhbmNlOworICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZTsKIAogICAgIENvbXBs
ZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4sIGZhbHNlLCAwLCBmb3JUZXh0
RW1waGFzaXMpOwogICAgIEdseXBoQnVmZmVyIGR1bW15R2x5cGhCdWZmZXI7CkBAIC0xNDA4LDIx
ICsxNDA3LDIxIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNv
bXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgY29udHJvbGxlci5hZHZh
bmNlKHRvLCAmZ2x5cGhCdWZmZXIpOwogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAocnVuLnJ0
bCgpKSB7CiAgICAgICAgIC8vIEV4cGxvaXQgdGhlIGZhY3QgdGhhdCB0aGUgc3VtIG9mIHRoZSBw
YWludCBhZHZhbmNlcyBpcyBlcXVhbCB0bwogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlv
dXQgYWR2YW5jZXMuCi0gICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbFdp
ZHRoKCk7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkYW5jZSgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhCdWZmZXIu
YWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBkdW1t
eUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2Ug
LT0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFs
QWR2YW5jZSAtPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgICAgIGdseXBoQnVmZmVy
LnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBp
bml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgp
OworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZmZXIu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUdseXBoQnVm
ZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0g
ZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGluaXRp
YWxBZHZhbmNlOwpAQCAtMTQ1NSw5ICsxNDU0LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSAr
IGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgcG9pbnQueSgpICsgZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CiAjZWxzZQotICAgIC8vIEZJWE1FOiBX
aHkgZG8gd2Ugc3VidHJhY3QgdGhlIGluaXRpYWwgYWR2YW5jZSdzIGhlaWdodCBidXQgbm90IGl0
cyB3aWR0aD8/PwotICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGxpbmUgYWJvdmUgZnJvbSBXaW5k
b3dzIGluc3RlYWQuCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSwgcG9pbnQu
eSgpIC0gZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CisgICAgRmxvYXRQ
b2ludCBzdGFydFBvaW50KHBvaW50KTsKICNlbmRpZgogICAgIGZsb2F0IG5leHRYID0gc3RhcnRQ
b2ludC54KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKTsKICAgICBmbG9hdCBu
ZXh0WSA9IHN0YXJ0UG9pbnQueSgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLmhlaWdodCgp
OwpAQCAtMTY2NCwxMiArMTY2MSwxMiBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZv
ckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogdm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25z
dAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IGluaXRpYWxBZHZh
bmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBn
bHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0g
Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1
ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBo
QnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2lu
dC55KCkpKTsKKyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFy
aywgcG9pbnQgKyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0
YXRlIHsKQEAgLTE4MDcsNyArMTgwNCw3IEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVz
Rm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBp
ZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAgICAgICAgZGVsdGFY
ID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgp
LCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7
CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAgICAgaWYgKCFnbHlw
aEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDg5N2NkOTc4Zjg0
Li5mNTBiN2NkNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
bnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1w
aGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCwgY29u
c3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYpIGNv
bnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0
IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25z
dDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgogICAgIGZs
b2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFy
a3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJv
b2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxvYXQgZ2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JU
ZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNBbmRBZHZhbmNlc0Zv
ckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykg
Y29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogICAgIGZsb2F0
IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAg
IGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9h
dCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387207</attachid>
            <date>2020-01-09 02:48:14 -0800</date>
            <delta_ts>2020-01-09 03:01:07 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>14122</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDgzNDdjOWZiMGMyLi41ODE1ZGE4MTI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0
aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAo
aCA8IDApCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFk
anVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0g
dHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgp
KSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5h
bGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJX
aWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkp
OworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQs
IG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChGb250Q2FzY2FkZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAh
dHJlYXRBc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAg
ICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtODExLDcgKzgxMSw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0
aWFsQWR2YW5jZUhvcml6b250YWxseShtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90
YWxXaWR0aCArPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3RvdGFsQWR2YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBA
IC04MjksNyArODI5LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBo
c0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uu
d2lkdGgoKTsKKyAgICAgICAgICAgIG1fdG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVt
cGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAg
ICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRF
bXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIyNTYuLjA3NjAxZjQ4MGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2Yg
ZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1lZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0Zh
cigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxXaWR0aDsgfQorICAgIGZsb2F0IHRvdGFsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZS53aWR0aCgpOyB9CisgICAgRmxvYXRT
aXplIHRvdGFsQWRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEFkdmFuY2U7IH0KIAogICAg
IGZsb2F0IG1pbkdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyByZXR1cm4gbV9taW5HbHlwaEJv
dW5kaW5nQm94WDsgfQogICAgIGZsb2F0IG1heEdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhHbHlwaEJvdW5kaW5nQm94WDsgfQpAQCAtMjE1LDcgKzIxNiw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVyIHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fZW5kIHsgMCB9OwogCi0gICAgZmxvYXQgbV90b3RhbFdpZHRoIHsgMCB9OworICAgIEZsb2F0
U2l6ZSBtX3RvdGFsQWR2YW5jZTsKICAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9udW1HbHlwaHNTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJl
bnRSdW4geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKaW5kZXggMWE2ZjczYTgyMzkuLmQzOTllYmZkZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNzcsMTAg
KzI3NywxMCBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4m
JiBmb250U2VsZWN0b3IpIGNvbnN0CiAgICAgbV9yZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVx
dWlyZXNTaGFwaW5nKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRl
eHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAorRmxv
YXRTaXplIEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBh
dGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAogewogICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXgpCi0gICAgICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOworICAgICAgICByZXR1cm4geyBnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIp
LCAwIH07CiAgICAgcmV0dXJuIGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOwogfQogCkBAIC0yODgsMTQgKzI4OCwxNCBAQCBmbG9h
dCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1
ZU9yKHJ1bi5sZW5ndGgoKSk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxv
YXQgc3RhcnRYID0gcG9pbnQueCgpICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1
biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAg
RmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQgKyBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29k
ZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVy
KTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBH
aXZlIHVwLgogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIC8vIERyYXcgdGhlIGdseXBoIGJ1ZmZlciBub3cgYXQgdGhlIHN0YXJ0aW5nIHBvaW50
IHJldHVybmVkIGluIHN0YXJ0WC4KLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCBw
b2ludC55KCkpOworICAgIEZsb2F0UG9pbnQgb2xkU3RhcnRQb2ludChzdGFydFBvaW50KTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIoY29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbik7Ci0gICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRY
OworICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIG9sZFN0YXJ0UG9pbnQueCgpOwogfQogCiB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29u
c3QKQEAgLTMyMSw3ICszMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICBj
b2RlUGF0aFRvVXNlID0gQ29tcGxleDsKICAgICAKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKLSAgICBmbG9hdCBzdGFydFggPSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhUb1Vz
ZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhU
b1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpKTsKICAgICAvLyBXZSBj
b3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBHaXZlIHVwLgogICAgIGlm
IChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzMx
LDcgKzMzMSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxh
eUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsK
ICAgICB9KTsKICAgICAKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9p
bnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgcmV0dXJuIGRpc3BsYXlMaXN0Owog
fQpAQCAtMTM5OCw5ICsxMzk3LDkgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmUKIH0KIAogI2lm
ICFQTEFURk9STShXSU4pIHx8IFVTRShESVJFQ1QyRCkKLWZsb2F0IEZvbnRDYXNjYWRlOjpnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVt
cGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9y
VGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGZsb2F0IGlu
aXRpYWxBZHZhbmNlOworICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZTsKIAogICAgIENvbXBs
ZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4sIGZhbHNlLCAwLCBmb3JUZXh0
RW1waGFzaXMpOwogICAgIEdseXBoQnVmZmVyIGR1bW15R2x5cGhCdWZmZXI7CkBAIC0xNDA4LDIx
ICsxNDA3LDIxIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNv
bXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgY29udHJvbGxlci5hZHZh
bmNlKHRvLCAmZ2x5cGhCdWZmZXIpOwogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAocnVuLnJ0
bCgpKSB7CiAgICAgICAgIC8vIEV4cGxvaXQgdGhlIGZhY3QgdGhhdCB0aGUgc3VtIG9mIHRoZSBw
YWludCBhZHZhbmNlcyBpcyBlcXVhbCB0bwogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlv
dXQgYWR2YW5jZXMuCi0gICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbFdp
ZHRoKCk7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkYW5jZSgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhCdWZmZXIu
YWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBkdW1t
eUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2Ug
LT0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFs
QWR2YW5jZSAtPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgICAgIGdseXBoQnVmZmVy
LnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBp
bml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgp
OworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZmZXIu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUdseXBoQnVm
ZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0g
ZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGluaXRp
YWxBZHZhbmNlOwpAQCAtMTQ1NSw5ICsxNDU0LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSAr
IGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgcG9pbnQueSgpICsgZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CiAjZWxzZQotICAgIC8vIEZJWE1FOiBX
aHkgZG8gd2Ugc3VidHJhY3QgdGhlIGluaXRpYWwgYWR2YW5jZSdzIGhlaWdodCBidXQgbm90IGl0
cyB3aWR0aD8/PwotICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGxpbmUgYWJvdmUgZnJvbSBXaW5k
b3dzIGluc3RlYWQuCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSwgcG9pbnQu
eSgpIC0gZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CisgICAgRmxvYXRQ
b2ludCBzdGFydFBvaW50KHBvaW50KTsKICNlbmRpZgogICAgIGZsb2F0IG5leHRYID0gc3RhcnRQ
b2ludC54KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKTsKICAgICBmbG9hdCBu
ZXh0WSA9IHN0YXJ0UG9pbnQueSgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLmhlaWdodCgp
OwpAQCAtMTY2NCwxMiArMTY2MSwxMiBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZv
ckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogdm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25z
dAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IGluaXRpYWxBZHZh
bmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBn
bHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0g
Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1
ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBo
QnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2lu
dC55KCkpKTsKKyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFy
aywgcG9pbnQgKyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0
YXRlIHsKQEAgLTE4MDcsNyArMTgwNCw3IEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVz
Rm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBp
ZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAgICAgICAgZGVsdGFY
ID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgp
LCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7
CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAgICAgaWYgKCFnbHlw
aEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDg5N2NkOTc4Zjg0
Li5mNTBiN2NkNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
bnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1w
aGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCwgY29u
c3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYpIGNv
bnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0
IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25z
dDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgogICAgIGZs
b2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFy
a3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJv
b2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxvYXQgZ2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JU
ZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNBbmRBZHZhbmNlc0Zv
ckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykg
Y29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogICAgIGZsb2F0
IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAg
IGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9h
dCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCA3YjU2YTM3YzI4
My4uOTU4Zjk5MmRmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAor
ICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIHsgcmV0dXJuIHsgd2lkdGgoKSwgaGVpZ2h0KCkgfTsg
fQorCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHbHlwaEJ1
ZmZlckFkdmFuY2U+IGRlY29kZShEZWNvZGVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcAppbmRleCAxY2FhODAyMmUyNi4uODBmMzIx
MmM2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFdpbi5jcHAKQEAgLTY5LDEyICs2OSwxMiBAQCB2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxl
Y3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZQogICAg
IHNlbGVjdGlvblJlY3Quc2V0V2lkdGgoYWZ0ZXJXaWR0aCAtIGJlZm9yZVdpZHRoKTsKIH0KIAot
ZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXIm
IGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0
CitGbG9hdFNpemUgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRl
eHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhC
dWZmZXImIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMp
IGNvbnN0CiB7CiAgICAgaWYgKGZvclRleHRFbXBoYXNpcykgewogICAgICAgICAvLyBGSVhNRTog
QWRkIGZvclRleHRFbXBoYXNpcyBwYXJlbWV0ZXIgdG8gVW5pc2NyaWJlQ29udHJvbGxlciBhbmQg
dXNlIGl0LgogICAgICAgICBMT0dfRVJST1IoIk5vdCBpbXBsZW1lbnRlZCBmb3IgdGV4dCBlbXBo
YXNpcy4iKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CiAgICAgVW5pc2NyaWJlQ29udHJvbGxlciBjb250cm9sbGVyKHRoaXMsIHJ1bik7CkBAIC04Myw3
ICs4Myw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBs
ZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgY29udHJvbGxlci5hZHZhbmNl
KHRvLCAmZ2x5cGhCdWZmZXIpOwogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBmbG9hdCBhZnRlcldp
ZHRoID0gY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgZmxv
YXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCB1bnNpZ24KICAgICAgICAgY29udHJvbGxlci5hZHZhbmNlKHJ1bi5sZW5n
dGgoKSk7CiAgICAgICAgIHJldHVybiBjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSAtIGFmdGVy
V2lkdGg7CiAgICAgfQotICAgIHJldHVybiBiZWZvcmVXaWR0aDsKKyAgICByZXR1cm4geyBiZWZv
cmVXaWR0aCwgMCB9OwogfQogCiBmbG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvckNvbXBs
ZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNr
Rm9udHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387209</attachid>
            <date>2020-01-09 03:01:07 -0800</date>
            <delta_ts>2020-01-09 03:12:33 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>14129</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDgzNDdjOWZiMGMyLi41ODE1ZGE4MTI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0
aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAo
aCA8IDApCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFk
anVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0g
dHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgp
KSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5h
bGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJX
aWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkp
OworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQs
IG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChGb250Q2FzY2FkZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAh
dHJlYXRBc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAg
ICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtODExLDcgKzgxMSw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0
aWFsQWR2YW5jZUhvcml6b250YWxseShtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90
YWxXaWR0aCArPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3RvdGFsQWR2YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBA
IC04MjksNyArODI5LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBo
c0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uu
d2lkdGgoKTsKKyAgICAgICAgICAgIG1fdG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVt
cGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAg
ICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRF
bXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIyNTYuLjA3NjAxZjQ4MGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2Yg
ZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1lZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0Zh
cigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxXaWR0aDsgfQorICAgIGZsb2F0IHRvdGFsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZS53aWR0aCgpOyB9CisgICAgRmxvYXRT
aXplIHRvdGFsQWRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEFkdmFuY2U7IH0KIAogICAg
IGZsb2F0IG1pbkdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyByZXR1cm4gbV9taW5HbHlwaEJv
dW5kaW5nQm94WDsgfQogICAgIGZsb2F0IG1heEdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhHbHlwaEJvdW5kaW5nQm94WDsgfQpAQCAtMjE1LDcgKzIxNiw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVyIHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fZW5kIHsgMCB9OwogCi0gICAgZmxvYXQgbV90b3RhbFdpZHRoIHsgMCB9OworICAgIEZsb2F0
U2l6ZSBtX3RvdGFsQWR2YW5jZTsKICAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9udW1HbHlwaHNTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJl
bnRSdW4geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKaW5kZXggMWE2ZjczYTgyMzkuLmQzOTllYmZkZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNzcsMTAg
KzI3NywxMCBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4m
JiBmb250U2VsZWN0b3IpIGNvbnN0CiAgICAgbV9yZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVx
dWlyZXNTaGFwaW5nKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRl
eHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAorRmxv
YXRTaXplIEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBh
dGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAogewogICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXgpCi0gICAgICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOworICAgICAgICByZXR1cm4geyBnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIp
LCAwIH07CiAgICAgcmV0dXJuIGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOwogfQogCkBAIC0yODgsMTQgKzI4OCwxNCBAQCBmbG9h
dCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1
ZU9yKHJ1bi5sZW5ndGgoKSk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxv
YXQgc3RhcnRYID0gcG9pbnQueCgpICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1
biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAg
RmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQgKyBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29k
ZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVy
KTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBH
aXZlIHVwLgogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIC8vIERyYXcgdGhlIGdseXBoIGJ1ZmZlciBub3cgYXQgdGhlIHN0YXJ0aW5nIHBvaW50
IHJldHVybmVkIGluIHN0YXJ0WC4KLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCBw
b2ludC55KCkpOworICAgIEZsb2F0UG9pbnQgb2xkU3RhcnRQb2ludChzdGFydFBvaW50KTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIoY29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbik7Ci0gICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRY
OworICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIG9sZFN0YXJ0UG9pbnQueCgpOwogfQogCiB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29u
c3QKQEAgLTMyMSw3ICszMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICBj
b2RlUGF0aFRvVXNlID0gQ29tcGxleDsKICAgICAKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKLSAgICBmbG9hdCBzdGFydFggPSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhUb1Vz
ZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhU
b1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpKTsKICAgICAvLyBXZSBj
b3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBHaXZlIHVwLgogICAgIGlm
IChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzMx
LDcgKzMzMSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxh
eUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsK
ICAgICB9KTsKICAgICAKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9p
bnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgcmV0dXJuIGRpc3BsYXlMaXN0Owog
fQpAQCAtMTM5OCw5ICsxMzk3LDkgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmUKIH0KIAogI2lm
ICFQTEFURk9STShXSU4pIHx8IFVTRShESVJFQ1QyRCkKLWZsb2F0IEZvbnRDYXNjYWRlOjpnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVt
cGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9y
VGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGZsb2F0IGlu
aXRpYWxBZHZhbmNlOworICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZTsKIAogICAgIENvbXBs
ZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4sIGZhbHNlLCAwLCBmb3JUZXh0
RW1waGFzaXMpOwogICAgIEdseXBoQnVmZmVyIGR1bW15R2x5cGhCdWZmZXI7CkBAIC0xNDA4LDIx
ICsxNDA3LDIxIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNv
bXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgY29udHJvbGxlci5hZHZh
bmNlKHRvLCAmZ2x5cGhCdWZmZXIpOwogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAocnVuLnJ0
bCgpKSB7CiAgICAgICAgIC8vIEV4cGxvaXQgdGhlIGZhY3QgdGhhdCB0aGUgc3VtIG9mIHRoZSBw
YWludCBhZHZhbmNlcyBpcyBlcXVhbCB0bwogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlv
dXQgYWR2YW5jZXMuCi0gICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbFdp
ZHRoKCk7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkYW5jZSgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhCdWZmZXIu
YWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBkdW1t
eUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2Ug
LT0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFs
QWR2YW5jZSAtPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgICAgIGdseXBoQnVmZmVy
LnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBp
bml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgp
OworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZmZXIu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUdseXBoQnVm
ZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0g
ZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGluaXRp
YWxBZHZhbmNlOwpAQCAtMTQ1NSw5ICsxNDU0LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSAr
IGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgcG9pbnQueSgpICsgZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CiAjZWxzZQotICAgIC8vIEZJWE1FOiBX
aHkgZG8gd2Ugc3VidHJhY3QgdGhlIGluaXRpYWwgYWR2YW5jZSdzIGhlaWdodCBidXQgbm90IGl0
cyB3aWR0aD8/PwotICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGxpbmUgYWJvdmUgZnJvbSBXaW5k
b3dzIGluc3RlYWQuCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSwgcG9pbnQu
eSgpIC0gZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CisgICAgRmxvYXRQ
b2ludCBzdGFydFBvaW50KHBvaW50KTsKICNlbmRpZgogICAgIGZsb2F0IG5leHRYID0gc3RhcnRQ
b2ludC54KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKTsKICAgICBmbG9hdCBu
ZXh0WSA9IHN0YXJ0UG9pbnQueSgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLmhlaWdodCgp
OwpAQCAtMTY2NCwxMiArMTY2MSwxMiBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZv
ckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogdm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25z
dAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IGluaXRpYWxBZHZh
bmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBn
bHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0g
Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1
ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBo
QnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2lu
dC55KCkpKTsKKyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFy
aywgcG9pbnQgKyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0
YXRlIHsKQEAgLTE4MDcsNyArMTgwNCw3IEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVz
Rm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBp
ZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAgICAgICAgZGVsdGFY
ID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgp
LCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7
CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAgICAgaWYgKCFnbHlw
aEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDg5N2NkOTc4Zjg0
Li5mNTBiN2NkNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
bnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1w
aGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCwgY29u
c3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYpIGNv
bnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0
IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25z
dDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgogICAgIGZs
b2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFy
a3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJv
b2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxvYXQgZ2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JU
ZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNBbmRBZHZhbmNlc0Zv
ckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykg
Y29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogICAgIGZsb2F0
IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAg
IGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9h
dCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCA3YjU2YTM3YzI4
My4uZjc3NjM1MDQyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAor
ICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIHsgcmV0dXJuIEZsb2F0U2l6ZSh3aWR0aCgpLCBoZWln
aHQoKSk7IH0KKwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNvZGUoRGVjb2RlciYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAKaW5kZXggMWNhYTgwMjJlMjYu
LjgwZjMyMTJjNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRXaW4uY3BwCkBAIC02OSwxMiArNjksMTIgQEAgdm9pZCBGb250Q2FzY2FkZTo6YWRq
dXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0
UmUKICAgICBzZWxlY3Rpb25SZWN0LnNldFdpZHRoKGFmdGVyV2lkdGggLSBiZWZvcmVXaWR0aCk7
CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBo
QnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lz
KSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNv
bXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8s
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVt
cGhhc2lzKSBjb25zdAogewogICAgIGlmIChmb3JUZXh0RW1waGFzaXMpIHsKICAgICAgICAgLy8g
RklYTUU6IEFkZCBmb3JUZXh0RW1waGFzaXMgcGFyZW1ldGVyIHRvIFVuaXNjcmliZUNvbnRyb2xs
ZXIgYW5kIHVzZSBpdC4KICAgICAgICAgTE9HX0VSUk9SKCJOb3QgaW1wbGVtZW50ZWQgZm9yIHRl
eHQgZW1waGFzaXMuIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAogICAgIFVuaXNjcmliZUNvbnRyb2xsZXIgY29udHJvbGxlcih0aGlzLCBydW4pOwpA
QCAtODMsNyArODMsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNG
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbgogICAgIGNvbnRyb2xsZXIu
YWR2YW5jZSh0bywgJmdseXBoQnVmZmVyKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgZmxvYXQg
YWZ0ZXJXaWR0aCA9IGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpOwogCkBAIC05MSw3ICs5MSw3
IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgICAgIGNvbnRyb2xsZXIuYWR2YW5jZShy
dW4ubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCkg
LSBhZnRlcldpZHRoOwogICAgIH0KLSAgICByZXR1cm4gYmVmb3JlV2lkdGg7CisgICAgcmV0dXJu
IHsgYmVmb3JlV2lkdGgsIDAgfTsKIH0KIAogZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhG
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBm
YWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387210</attachid>
            <date>2020-01-09 03:12:33 -0800</date>
            <delta_ts>2020-01-09 03:14:02 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>a.cpp</filename>
            <type>text/plain</type>
            <size>1146</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2hyb25vPgojaW5jbHVkZSA8Y21hdGg+CiNp
bmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8b21wLmg+Cgpjb25zdCBkb3VibGUgRF9QSSA9IDMu
MTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTsKCi8vIOWMuuWIhuaxguepjeazleOBpyDP
gCDjga7ov5HkvLzlgKTjgpLmsYLjgoHjgovjgIIKLy8gMSAvICh4XjIgKyAxKSDjgpLljLrplpMg
WzAsIDFdIOOBp+epjeWIhuOBmeOCi+OBqCDPgC80IOOBq+OBquOCi+OBqOOBhOOBhuWumuepjeWI
huOCkuWIqeeUqOOBmeOCi+OAggoKaW50IG1haW4oKQp7CiAgY29uc3QgaW50IERpdk51bSA9IDEw
MDAgKiAxMDAwICogMTAwMDsKICBjb25zdCBkb3VibGUgZGVsdGEgPSAxLjAgLyBEaXZOdW07Cgog
IHN0ZDo6Y291dCA8PCAiT3Blbk1QIG1heCB0aHJlYWRzIGNvdW50ID0gIiA8PCBvbXBfZ2V0X21h
eF90aHJlYWRzKCkgPDwgc3RkOjplbmRsOwoKICBjb25zdCBhdXRvIHN0YXJ0VGltZSA9IHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpOwogIGRvdWJsZSBzdW0gPSAwOwojcHJhZ21hIG9t
cCBwYXJhbGxlbCBmb3IgcmVkdWN0aW9uKCsgOiBzdW0pCiAgZm9yIChpbnQgaSA9IDA7IGkgPCBE
aXZOdW07ICsraSkKICB7CiAgICBjb25zdCBkb3VibGUgeCA9IChkZWx0YSAqIGkpOwogICAgY29u
c3QgZG91YmxlIGFyZWEgPSBkZWx0YSAqICAxLjAgLyAoeCAqIHggKyAxLjApOwogICAgc3VtICs9
IGFyZWE7CiAgfQogIGNvbnN0IGRvdWJsZSBwaSA9IHN1bSAqIDQuMDsKICBjb25zdCBhdXRvIGVu
ZFRpbWUgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsKICBzdGQ6OmNvdXQgPDwg
c3RkOjpzZXRwcmVjaXNpb24oMTUpIDw8ICJQSSB+PSAiIDw8IHBpIDw8IHN0ZDo6ZW5kbDsKICBz
dGQ6OmNvdXQgPDwgIkVycm9yIFslXSA9ICIgPDwgKDEwMC4wICogc3RkOjpmYWJzKERfUEkgLSBw
aSkgLyBEX1BJKSA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpjb3V0IDw8ICJFbGFwc2VkIHRpbWUgW21z
XSA9ICIgPDwgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcz4oZW5kVGltZSAtIHN0YXJ0VGltZSkuY291bnQoKSA8PCBzdGQ6OmVuZGw7CiAgcmV0dXJu
IDA7Cn0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387211</attachid>
            <date>2020-01-09 03:14:02 -0800</date>
            <delta_ts>2020-01-09 20:19:27 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>14135</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDgzNDdjOWZiMGMyLi41ODE1ZGE4MTI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0
aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAo
aCA8IDApCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFk
anVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0g
dHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgp
KSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5h
bGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJX
aWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkp
OworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQs
IG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChGb250Q2FzY2FkZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAh
dHJlYXRBc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAg
ICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtODExLDcgKzgxMSw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0
aWFsQWR2YW5jZUhvcml6b250YWxseShtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90
YWxXaWR0aCArPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3RvdGFsQWR2YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBA
IC04MjksNyArODI5LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBo
c0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uu
d2lkdGgoKTsKKyAgICAgICAgICAgIG1fdG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVt
cGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAg
ICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRF
bXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIyNTYuLjA3NjAxZjQ4MGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2Yg
ZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1lZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0Zh
cigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxXaWR0aDsgfQorICAgIGZsb2F0IHRvdGFsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZS53aWR0aCgpOyB9CisgICAgRmxvYXRT
aXplIHRvdGFsQWRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEFkdmFuY2U7IH0KIAogICAg
IGZsb2F0IG1pbkdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyByZXR1cm4gbV9taW5HbHlwaEJv
dW5kaW5nQm94WDsgfQogICAgIGZsb2F0IG1heEdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhHbHlwaEJvdW5kaW5nQm94WDsgfQpAQCAtMjE1LDcgKzIxNiw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVyIHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fZW5kIHsgMCB9OwogCi0gICAgZmxvYXQgbV90b3RhbFdpZHRoIHsgMCB9OworICAgIEZsb2F0
U2l6ZSBtX3RvdGFsQWR2YW5jZTsKICAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9udW1HbHlwaHNTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJl
bnRSdW4geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKaW5kZXggMWE2ZjczYTgyMzkuLmQzOTllYmZkZjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNzcsMTAg
KzI3NywxMCBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4m
JiBmb250U2VsZWN0b3IpIGNvbnN0CiAgICAgbV9yZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVx
dWlyZXNTaGFwaW5nKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRl
eHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAorRmxv
YXRTaXplIEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBh
dGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAogewogICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXgpCi0gICAgICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOworICAgICAgICByZXR1cm4geyBnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIp
LCAwIH07CiAgICAgcmV0dXJuIGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOwogfQogCkBAIC0yODgsMTQgKzI4OCwxNCBAQCBmbG9h
dCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1
ZU9yKHJ1bi5sZW5ndGgoKSk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxv
YXQgc3RhcnRYID0gcG9pbnQueCgpICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1
biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAg
RmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQgKyBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29k
ZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVy
KTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBH
aXZlIHVwLgogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIC8vIERyYXcgdGhlIGdseXBoIGJ1ZmZlciBub3cgYXQgdGhlIHN0YXJ0aW5nIHBvaW50
IHJldHVybmVkIGluIHN0YXJ0WC4KLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCBw
b2ludC55KCkpOworICAgIEZsb2F0UG9pbnQgb2xkU3RhcnRQb2ludChzdGFydFBvaW50KTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIoY29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbik7Ci0gICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRY
OworICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIG9sZFN0YXJ0UG9pbnQueCgpOwogfQogCiB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29u
c3QKQEAgLTMyMSw3ICszMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICBj
b2RlUGF0aFRvVXNlID0gQ29tcGxleDsKICAgICAKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKLSAgICBmbG9hdCBzdGFydFggPSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhUb1Vz
ZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhU
b1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpKTsKICAgICAvLyBXZSBj
b3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBHaXZlIHVwLgogICAgIGlm
IChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzMx
LDcgKzMzMSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxh
eUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsK
ICAgICB9KTsKICAgICAKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9p
bnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgcmV0dXJuIGRpc3BsYXlMaXN0Owog
fQpAQCAtMTM5OCw5ICsxMzk3LDkgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmUKIH0KIAogI2lm
ICFQTEFURk9STShXSU4pIHx8IFVTRShESVJFQ1QyRCkKLWZsb2F0IEZvbnRDYXNjYWRlOjpnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVt
cGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9y
VGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGZsb2F0IGlu
aXRpYWxBZHZhbmNlOworICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZTsKIAogICAgIENvbXBs
ZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4sIGZhbHNlLCAwLCBmb3JUZXh0
RW1waGFzaXMpOwogICAgIEdseXBoQnVmZmVyIGR1bW15R2x5cGhCdWZmZXI7CkBAIC0xNDA4LDIx
ICsxNDA3LDIxIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNv
bXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgY29udHJvbGxlci5hZHZh
bmNlKHRvLCAmZ2x5cGhCdWZmZXIpOwogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAocnVuLnJ0
bCgpKSB7CiAgICAgICAgIC8vIEV4cGxvaXQgdGhlIGZhY3QgdGhhdCB0aGUgc3VtIG9mIHRoZSBw
YWludCBhZHZhbmNlcyBpcyBlcXVhbCB0bwogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlv
dXQgYWR2YW5jZXMuCi0gICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbFdp
ZHRoKCk7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkYW5jZSgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhCdWZmZXIu
YWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBkdW1t
eUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2Ug
LT0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFs
QWR2YW5jZSAtPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgICAgIGdseXBoQnVmZmVy
LnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBp
bml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgp
OworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZmZXIu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUdseXBoQnVm
ZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0g
ZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGluaXRp
YWxBZHZhbmNlOwpAQCAtMTQ1NSw5ICsxNDU0LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGcK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSAr
IGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKSwgcG9pbnQueSgpICsgZ2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CiAjZWxzZQotICAgIC8vIEZJWE1FOiBX
aHkgZG8gd2Ugc3VidHJhY3QgdGhlIGluaXRpYWwgYWR2YW5jZSdzIGhlaWdodCBidXQgbm90IGl0
cyB3aWR0aD8/PwotICAgIC8vIFdlIHNob3VsZCB1c2UgdGhlIGxpbmUgYWJvdmUgZnJvbSBXaW5k
b3dzIGluc3RlYWQuCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50LngoKSwgcG9pbnQu
eSgpIC0gZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQoKSk7CisgICAgRmxvYXRQ
b2ludCBzdGFydFBvaW50KHBvaW50KTsKICNlbmRpZgogICAgIGZsb2F0IG5leHRYID0gc3RhcnRQ
b2ludC54KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKTsKICAgICBmbG9hdCBu
ZXh0WSA9IHN0YXJ0UG9pbnQueSgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLmhlaWdodCgp
OwpAQCAtMTY2NCwxMiArMTY2MSwxMiBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZv
ckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogdm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25z
dAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IGluaXRpYWxBZHZh
bmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBn
bHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0g
Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1
ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBo
QnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2lu
dC55KCkpKTsKKyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFy
aywgcG9pbnQgKyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0
YXRlIHsKQEAgLTE4MDcsNyArMTgwNCw3IEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVz
Rm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBp
ZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAgICAgICAgZGVsdGFY
ID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgp
LCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7
CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAgICAgaWYgKCFnbHlw
aEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDg5N2NkOTc4Zjg0
Li5mNTBiN2NkNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
bnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1w
aGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCwgY29u
c3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYpIGNv
bnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0
IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25z
dDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgogICAgIGZs
b2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFy
a3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJv
b2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxvYXQgZ2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JU
ZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNBbmRBZHZhbmNlc0Zv
ckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykg
Y29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogICAgIGZsb2F0
IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAg
IGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9h
dCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCA3YjU2YTM3YzI4
My4uYTA2MDY3OWI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAor
ICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0U2l6ZSh3aWR0aCgp
LCBoZWlnaHQoKSk7IH0KKwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNvZGUoRGVjb2RlciYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAKaW5kZXggMWNhYTgw
MjJlMjYuLjgwZjMyMTJjNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRXaW4uY3BwCkBAIC02OSwxMiArNjksMTIgQEAgdm9pZCBGb250Q2FzY2Fk
ZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
TGF5b3V0UmUKICAgICBzZWxlY3Rpb25SZWN0LnNldFdpZHRoKGFmdGVyV2lkdGggLSBiZWZvcmVX
aWR0aCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNv
bXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8s
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVt
cGhhc2lzKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNl
c0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9y
VGV4dEVtcGhhc2lzKSBjb25zdAogewogICAgIGlmIChmb3JUZXh0RW1waGFzaXMpIHsKICAgICAg
ICAgLy8gRklYTUU6IEFkZCBmb3JUZXh0RW1waGFzaXMgcGFyZW1ldGVyIHRvIFVuaXNjcmliZUNv
bnRyb2xsZXIgYW5kIHVzZSBpdC4KICAgICAgICAgTE9HX0VSUk9SKCJOb3QgaW1wbGVtZW50ZWQg
Zm9yIHRleHQgZW1waGFzaXMuIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIFVuaXNjcmliZUNvbnRyb2xsZXIgY29udHJvbGxlcih0aGlzLCBy
dW4pOwpAQCAtODMsNyArODMsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2
YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbgogICAgIGNvbnRy
b2xsZXIuYWR2YW5jZSh0bywgJmdseXBoQnVmZmVyKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
ZmxvYXQgYWZ0ZXJXaWR0aCA9IGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpOwogCkBAIC05MSw3
ICs5MSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBs
ZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgICAgIGNvbnRyb2xsZXIuYWR2
YW5jZShydW4ubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gY29udHJvbGxlci5ydW5XaWR0aFNv
RmFyKCkgLSBhZnRlcldpZHRoOwogICAgIH0KLSAgICByZXR1cm4gYmVmb3JlV2lkdGg7CisgICAg
cmV0dXJuIHsgYmVmb3JlV2lkdGgsIDAgfTsKIH0KIAogZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0
V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9u
dCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387310</attachid>
            <date>2020-01-09 20:19:27 -0800</date>
            <delta_ts>2020-01-09 22:34:52 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>11731</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDJkODU0Mzg0NDQwLi5hYmRhZGJkNmFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0
aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAo
aCA8IDApCkBAIC03MzMsNyArNzMzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFk
anVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0g
dHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgp
KSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5h
bGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJX
aWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkp
OworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQs
IG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChGb250Q2FzY2FkZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAh
dHJlYXRBc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAg
ICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtNzg0LDcgKzc4NCw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0
aWFsQWR2YW5jZUhvcml6b250YWxseShtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90
YWxXaWR0aCArPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3RvdGFsQWR2YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBA
IC04MDIsNyArODAyLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBo
c0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uu
d2lkdGgoKTsKKyAgICAgICAgICAgIG1fdG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVt
cGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAg
ICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRF
bXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIyNTYuLjA3NjAxZjQ4MGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2Yg
ZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1lZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0Zh
cigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxXaWR0aDsgfQorICAgIGZsb2F0IHRvdGFsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZS53aWR0aCgpOyB9CisgICAgRmxvYXRT
aXplIHRvdGFsQWRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEFkdmFuY2U7IH0KIAogICAg
IGZsb2F0IG1pbkdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyByZXR1cm4gbV9taW5HbHlwaEJv
dW5kaW5nQm94WDsgfQogICAgIGZsb2F0IG1heEdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhHbHlwaEJvdW5kaW5nQm94WDsgfQpAQCAtMjE1LDcgKzIxNiw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50Q2hhcmFjdGVyIHsgMCB9OwogICAgIHVuc2lnbmVk
IG1fZW5kIHsgMCB9OwogCi0gICAgZmxvYXQgbV90b3RhbFdpZHRoIHsgMCB9OworICAgIEZsb2F0
U2l6ZSBtX3RvdGFsQWR2YW5jZTsKICAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIgeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9udW1HbHlwaHNTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJl
bnRSdW4geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKaW5kZXggODMwOGYyYjIwMmEuLjdlNTA3OWFkMTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNzMsMTAg
KzI3MywxMCBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4m
JiBmb250U2VsZWN0b3IpIGNvbnN0CiAgICAgbV9yZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVx
dWlyZXNTaGFwaW5nKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRl
eHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAorRmxv
YXRTaXplIEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBh
dGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAogewogICAgIGlmIChjb2RlUGF0aFRvVXNl
ICE9IENvbXBsZXgpCi0gICAgICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOworICAgICAgICByZXR1cm4geyBnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIp
LCAwIH07CiAgICAgcmV0dXJuIGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOwogfQogCkBAIC0yODQsMTQgKzI4NCwxNCBAQCBmbG9h
dCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1
ZU9yKHJ1bi5sZW5ndGgoKSk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxv
YXQgc3RhcnRYID0gcG9pbnQueCgpICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1
biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAg
RmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQgKyBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29k
ZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVy
KTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBH
aXZlIHVwLgogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIC8vIERyYXcgdGhlIGdseXBoIGJ1ZmZlciBub3cgYXQgdGhlIHN0YXJ0aW5nIHBvaW50
IHJldHVybmVkIGluIHN0YXJ0WC4KLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCBw
b2ludC55KCkpOworICAgIEZsb2F0UG9pbnQgb2xkU3RhcnRQb2ludChzdGFydFBvaW50KTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIoY29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbik7Ci0gICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRY
OworICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIG9sZFN0YXJ0UG9pbnQueCgpOwogfQogCiB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29u
c3QKQEAgLTMxNyw3ICszMTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICBj
b2RlUGF0aFRvVXNlID0gQ29tcGxleDsKICAgICAKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKLSAgICBmbG9hdCBzdGFydFggPSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhUb1Vz
ZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhU
b1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpKTsKICAgICAvLyBXZSBj
b3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBHaXZlIHVwLgogICAgIGlm
IChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzI3
LDcgKzMyNyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxh
eUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsK
ICAgICB9KTsKICAgICAKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKICAg
ICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9p
bnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgcmV0dXJuIGRpc3BsYXlMaXN0Owog
fQpAQCAtMTM4Myw5ICsxMzgyLDkgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmUKICAgICByZXR1
cm4gaW5pdGlhbEFkdmFuY2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpnZXRHbHlw
aHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhh
c2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGZsb2F0IGluaXRpYWxBZHZh
bmNlOworICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZTsKIAogICAgIENvbXBsZXhUZXh0Q29u
dHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4sIGZhbHNlLCAwLCBmb3JUZXh0RW1waGFzaXMp
OwogICAgIEdseXBoQnVmZmVyIGR1bW15R2x5cGhCdWZmZXI7CkBAIC0xMzkzLDIxICsxMzkyLDIx
IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgY29udHJvbGxlci5hZHZhbmNlKHRvLCAm
Z2x5cGhCdWZmZXIpOwogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAocnVuLnJ0bCgpKSB7CiAg
ICAgICAgIC8vIEV4cGxvaXQgdGhlIGZhY3QgdGhhdCB0aGUgc3VtIG9mIHRoZSBwYWludCBhZHZh
bmNlcyBpcyBlcXVhbCB0bwogICAgICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlvdXQgYWR2YW5j
ZXMuCi0gICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbFdpZHRoKCk7Cisg
ICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFkYW5jZSgpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkK
LSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0
KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBkdW1teUdseXBoQnVm
ZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBo
QnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAt
PSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgICAgIGdseXBoQnVmZmVyLnJldmVyc2Uo
MCwgZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbml0aWFsQWR2
YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpOworICAgICAg
ICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZmZXIuc2l6ZSgpOyAr
K2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUdseXBoQnVmZmVyLmFkdmFu
Y2VBdChpKS53aWR0aCgpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0gZHVtbXlHbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGluaXRpYWxBZHZhbmNl
OwpAQCAtMTYzNiwxMiArMTYzNSwxMiBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZv
ckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogdm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25z
dAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IGluaXRpYWxBZHZh
bmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBn
bHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0g
Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1
ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBo
QnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2lu
dC55KCkpKTsKKyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFy
aywgcG9pbnQgKyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0
YXRlIHsKQEAgLTE3NzksNyArMTc3OCw3IEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVz
Rm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBp
ZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAgICAgICAgZGVsdGFY
ID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgp
LCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7
CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVu
LCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAgICAgaWYgKCFnbHlw
aEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDg5N2NkOTc4Zjg0
Li5mNTBiN2NkNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
bnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1w
aGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCwgY29u
c3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYpIGNv
bnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0
IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25z
dDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgogICAgIGZs
b2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFy
a3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJv
b2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxvYXQgZ2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JU
ZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNBbmRBZHZhbmNlc0Zv
ckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykg
Y29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogICAgIGZsb2F0
IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAg
IGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9h
dCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCA3YjU2YTM3YzI4
My4uYTA2MDY3OWI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAor
ICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0U2l6ZSh3aWR0aCgp
LCBoZWlnaHQoKSk7IH0KKwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNvZGUoRGVjb2RlciYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387314</attachid>
            <date>2020-01-09 22:34:43 -0800</date>
            <delta_ts>2020-01-17 01:19:16 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>12256</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDJkODU0Mzg0NDQwLi5hYmRhZGJkNmFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0
aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAo
aCA8IDApCkBAIC03MzMsNyArNzMzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFk
anVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0g
dHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgp
KSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5h
bGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJX
aWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkp
OworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQs
IG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChGb250Q2FzY2FkZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAh
dHJlYXRBc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAg
ICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtNzg0LDcgKzc4NCw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0
aWFsQWR2YW5jZUhvcml6b250YWxseShtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90
YWxXaWR0aCArPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3RvdGFsQWR2YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBA
IC04MDIsNyArODAyLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBo
c0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uu
d2lkdGgoKTsKKyAgICAgICAgICAgIG1fdG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVt
cGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAg
ICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRF
bXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIyNTYuLjk1Y2ZkNDA4NTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2Yg
ZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1lZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0Zh
cigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxXaWR0aDsgfQorICAgIGZsb2F0IHRvdGFsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZS53aWR0aCgpOyB9CisgICAgRmxvYXRT
aXplIHRvdGFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxBZHZhbmNlOyB9CiAKICAg
ICBmbG9hdCBtaW5HbHlwaEJvdW5kaW5nQm94WCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluR2x5cGhC
b3VuZGluZ0JveFg7IH0KICAgICBmbG9hdCBtYXhHbHlwaEJvdW5kaW5nQm94WCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF4R2x5cGhCb3VuZGluZ0JveFg7IH0KQEAgLTIxNSw3ICsyMTYsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlciB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2VuZCB7IDAgfTsKIAotICAgIGZsb2F0IG1fdG90YWxXaWR0aCB7IDAgfTsKKyAgICBGbG9h
dFNpemUgbV90b3RhbEFkdmFuY2U7CiAgICAgZmxvYXQgbV9ydW5XaWR0aFNvRmFyIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fbnVtR2x5cGhzU29GYXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJy
ZW50UnVuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCmluZGV4IDgzMDhmMmIyMDJhLi5kMWM2NmE2YWI0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjczLDEw
ICsyNzMsMTAgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+
JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fcmVxdWlyZXNTaGFwaW5nID0gY29tcHV0ZVJl
cXVpcmVzU2hhcGluZygpOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JU
ZXh0UnVuKENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlcikgY29uc3QKK0Zs
b2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQYXRoIGNvZGVQ
YXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8s
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlcikgY29uc3QKIHsKICAgICBpZiAoY29kZVBhdGhUb1Vz
ZSAhPSBDb21wbGV4KQotICAgICAgICByZXR1cm4gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1w
bGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHsgZ2V0
R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVy
KSwgMCB9OwogICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1
biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyKTsKIH0KIApAQCAtMjg0LDE0ICsyODQsMTQgQEAgZmxv
YXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdAogewogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFs
dWVPcihydW4ubGVuZ3RoKCkpOwogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZs
b2F0IHN0YXJ0WCA9IHBvaW50LngoKSArIGdseXBoQnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aChy
dW4sIGZyb20sIHRvKSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAg
IEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHBvaW50ICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNv
ZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZl
cik7CiAgICAgLy8gV2UgY291bGRuJ3QgZ2VuZXJhdGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4g
R2l2ZSB1cC4KICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICAvLyBEcmF3IHRoZSBnbHlwaCBidWZmZXIgbm93IGF0IHRoZSBzdGFydGluZyBwb2lu
dCByZXR1cm5lZCBpbiBzdGFydFguCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwg
cG9pbnQueSgpKTsKKyAgICBGbG9hdFBvaW50IG9sZFN0YXJ0UG9pbnQoc3RhcnRQb2ludCk7CiAg
ICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBjdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24pOwotICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0
WDsKKyAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBvbGRTdGFydFBvaW50LngoKTsKIH0KIAog
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNv
bnN0CkBAIC0zMTcsNyArMzE3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICAgICAg
Y29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CiAgICAgCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZm
ZXI7Ci0gICAgZmxvYXQgc3RhcnRYID0gZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoVG9V
c2UsIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVyKTsKKyAgICBGbG9hdFBvaW50
IHN0YXJ0UG9pbnQgPSB0b0Zsb2F0UG9pbnQoZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRo
VG9Vc2UsIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVyKSk7CiAgICAgLy8gV2Ug
Y291bGRuJ3QgZ2VuZXJhdGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4gR2l2ZSB1cC4KICAgICBp
ZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMy
Nyw3ICszMjcsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBG
b250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3Bs
YXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7
CiAgICAgfSk7CiAgICAgCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgMCk7CiAg
ICAgZHJhd0dseXBoQnVmZmVyKHJlY29yZGluZ0NvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBv
aW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwogICAgIHJldHVybiBkaXNwbGF5TGlzdDsK
IH0KQEAgLTEzODMsOSArMTM4Miw5IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lCiAgICAgcmV0
dXJuIGluaXRpYWxBZHZhbmNlOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5k
QWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09y
Tm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKK0Zsb2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2V0R2x5
cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBo
YXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKIHsKLSAgICBmbG9hdCBpbml0aWFsQWR2
YW5jZTsKKyAgICBGbG9hdFNpemUgaW5pdGlhbEFkdmFuY2U7CiAKICAgICBDb21wbGV4VGV4dENv
bnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywgcnVuLCBmYWxzZSwgMCwgZm9yVGV4dEVtcGhhc2lz
KTsKICAgICBHbHlwaEJ1ZmZlciBkdW1teUdseXBoQnVmZmVyOwpAQCAtMTM5MywyMSArMTM5Miwy
MSBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbgogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSh0bywg
JmdseXBoQnVmZmVyKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKHJ1bi5ydGwoKSkgewog
ICAgICAgICAvLyBFeHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlIHN1bSBvZiB0aGUgcGFpbnQgYWR2
YW5jZXMgaXMgZXF1YWwgdG8KICAgICAgICAgLy8gdGhlIHN1bSBvZiB0aGUgbGF5b3V0IGFkdmFu
Y2VzLgotICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxXaWR0aCgpOwor
ICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhC
dWZmZXIuYWR2YW5jZUF0KGkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2x5
cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNl
IC09IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJz
ZSgwLCBnbHlwaEJ1ZmZlci5zaXplKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGluaXRpYWxB
ZHZhbmNlID0gZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCk7CisgICAg
ICAgIGluaXRpYWxBZHZhbmNlID0gZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IGR1bW15R2x5cGhCdWZmZXIuYWR2
YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUds
eXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CkBAIC0xNDM2LDcgKzE0MzUsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogewogICAg
IC8vIERyYXcgZWFjaCBjb250aWd1b3VzIHJ1biBvZiBnbHlwaHMgdGhhdCB1c2UgdGhlIHNhbWUg
Zm9udCBkYXRhLgogICAgIGNvbnN0IEZvbnQqIGZvbnREYXRhID0gZ2x5cGhCdWZmZXIuZm9udEF0
KDApOwotICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSAtIGds
eXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpOworICAgIEZsb2F0UG9pbnQgc3Rh
cnRQb2ludChwb2ludCk7CiAgICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpOwogICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2lu
dC55KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkuaGVpZ2h0KCk7CiAgICAgdW5zaWduZWQg
bGFzdEZyb20gPSAwOwpAQCAtMTYzNiwxMiArMTYzNSwxMiBAQCBjb25zdCBGb250KiBGb250Q2Fz
Y2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZQogdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0
IGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4s
IGZyb20sIHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRp
YWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20s
IHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZl
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNv
bnRleHQsIGdseXBoQnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxB
ZHZhbmNlLCBwb2ludC55KCkpKTsKKyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlw
aEJ1ZmZlciwgbWFyaywgcG9pbnQgKyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlw
aEl0ZXJhdGlvblN0YXRlIHsKQEAgLTE3NzksNyArMTc3OCw3IEBAIERhc2hBcnJheSBGb250Q2Fz
Y2FkZTo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QKICAgICBpZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAg
ICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwg
cnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBn
bHlwaEJ1ZmZlcik7CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29t
cGxleFRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAg
ICAgaWYgKCFnbHlwaEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4
IDg5N2NkOTc4Zjg0Li5mNTBiN2NkNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBlbnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lz
LCBGb3JUZXh0RW1waGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihD
b2RlUGF0aCwgY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlw
aEJ1ZmZlciYpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29k
ZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhC
dWZmZXImKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZh
bmNlLgogICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBU
ZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4
dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJh
d0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsK
IAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxv
YXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRl
eHRFbXBoYXNpcykgY29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBt
YXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0
OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFz
aFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDAp
IGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRl
eHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRl
eCA3YjU2YTM3YzI4My4uYTA2MDY3OWI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAorICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0
U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7IH0KKwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNvZGUoRGVjb2RlciYpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388011</attachid>
            <date>2020-01-16 21:53:25 -0800</date>
            <delta_ts>2020-01-17 01:19:19 -0800</delta_ts>
            <desc>Patch to add a test</desc>
            <filename>test-initial-advance.diff</filename>
            <type>text/plain</type>
            <size>1498</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0
ZWQtdGV4dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2
YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjY5MGQ3NTQyNmI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgIGRpdiB7CisgICAg
ICBmb250LXNpemU6IDIwMHB4OworICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgb25sb2FkID0g
KCkgPT4geworICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2IHNw
YW4nKS5jaGlsZE5vZGVzWzBdOworICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNl
bGVjdGlvbigpOworICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRpdik7CisgICAgICBzZWxlY3Rpb24ucmVt
b3ZlQWxsUmFuZ2VzKCk7CisgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpOworICB9Cis8
L3NjcmlwdD4KKworPGRpdj48c3Bhbj4mI3g2Mjg7LSYjeDA2Mjg7JiN4MDY1MTs8L3NwYW4+LSYj
eDYyODs8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFk
dmFuY2Utc2VsZWN0ZWQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwt
YWR2YW5jZS1zZWxlY3RlZC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmQ0YmMwYjQyYWZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0Lmh0bWwKQEAgLTAsMCArMSwxOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgIGRpdiB7CisgICAgICBmb250LXNpemU6IDIw
MHB4OworICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgb25sb2FkID0gKCkgPT4geworICAgICAg
Y29uc3QgdGV4dE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYnKS5jaGlsZE5vZGVz
WzBdOworICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAg
ICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dE5vZGUsIDApOworICAgICAgcmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA0KTsKKyAg
ICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5n
ZShyYW5nZSk7CisgIH0KKzwvc2NyaXB0PgorCis8ZGl2PiYjeDYyODstJiN4MDYyODsmI3gwNjUx
Oy0mI3g2Mjg7PC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388019</attachid>
            <date>2020-01-17 01:19:36 -0800</date>
            <delta_ts>2020-01-17 01:20:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205990-20200117181935.patch</filename>
            <type>text/plain</type>
            <size>18902</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVlMmEzMTg3Y2VhMWYz
MDk4ZmMwMjRkNzM5ZjVjMWVkZTFhNThkNC4uZTNjNDcwMjJiMmI3YzNiNTk4OGZhYWIxY2I0ZjVh
YWU2NjY1NGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAxLTE3ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIEEgcGFydGlh
bGx5IHNlbGVjdGVkIFJUTCB0ZXh0IGlzIHBsYWNlZCBhdCBhIHdyb25nIHZlcnRpY2FsIHBvc2l0
aW9uIGlmIGl0IGhhcyBhIHZlcnRpY2FsIGluaXRpYWwgYWR2YW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9udENhc2NhZGU6OmdldEdseXBoc0Fu
ZEFkdmFuY2VzRm9yQ29tcGxleFRleHQgcmV0dXJuZWQgb25seSBYCisgICAgICAgIHBvc2l0aW9u
IG9mIHRoZSBmaXJzdCBnbHlwaC4KKworICAgICAgICBCZWNhdXNlIEdseXBoQnVmZmVyIGlzIHVz
aW5nIGdseXBoIGFkdmFuY2VzIGluc3RlYWQgZ2x5cGgKKyAgICAgICAgcG9zaXRpb25zLCBpdCdz
IG5vdCBlYXN5IHRvIGNhbGN1bGF0ZSB0aGUgZmlyc3QgZ2x5cGggcG9zaXRpb24gb2YKKyAgICAg
ICAgdGhlIHBhcnQgb2YgYSBSVEwgdGV4dHMuCisgICAgICAgIEZvbnRDYXNjYWRlOjpnZXRHbHlw
aHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0IGlzIGNhbGN1bGF0aW5nIHRoZQorICAgICAgICBY
IHBvc2l0aW9uIG9mIGl0IGJ5IHN1YnRyYWN0aW5nIHJpZ2h0IHNpZGUgcGFydCB3aWR0aCBmcm9t
IHRoZQorICAgICAgICB0b3RhbCB3aWR0aC4gSXQgc2hvdWxkIGRvIHNhbWUgZm9yIFkgcG9zaXRp
b24uCisKKyAgICAgICAgbWFjT1MgYW5kIGlPUyBwb3J0cyBkb2Vzbid0IHVzZSB0aGUgY29kZSB0
byBkcmF3IHNlbGVjdGVkIHRleHRzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9pbml0aWFs
LWFkdmFuY2Utc2VsZWN0ZWQtdGV4dC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb21w
bGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaDogUmVwbGFjZWQgbV90b3Rh
bFdpZHRoIHdpdGggbV90b3RhbEFkdmFuY2UuCisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4
dENvbnRyb2xsZXI6OnRvdGFsV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxl
eFRleHRDb250cm9sbGVyOjp0b3RhbEFkdmFuY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjpnbHlwaEJ1ZmZlckZvclRleHRSdW4gY29uc3QpOiBDaGFuZ2VkIHRoZSByZXR1cm4gdHlwZSBm
cm9tIGZsb2F0IHRvIEZsb2F0U2l6ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpk
cmF3VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGlzcGxheUxp
c3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0IGNvbnN0KTogQ2hhbmdlZCB0aGUgcmV0dXJu
IHR5cGUgZnJvbSBmbG9hdCB0byBGbG9hdFNpemUuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZTo6ZHJhd0dseXBoQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBo
QnVmZmVyQWR2YW5jZTo6b3BlcmF0b3IgRmxvYXRTaXplIGNvbnN0KToKKwogMjAyMC0wMS0xNiAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkIHJlbW92aW5nIGEgc3RhbGUgRklYTUUgY29tbWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5MDI5ZWUx
ZWViY2Q5MDJiYjIwMGUxMzE0ZDkyZDI5NDFlNjI4YmQwLi5hNTg1NWI3NmY1ZjY4M2FhZDNkZWQ2
ZTNjMGZjZGM4ZGQzMzg5YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAxLTE2
ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtX
aW5DYWlyb11bV0syXSBBU1NFUlQoaXNVSVRocmVhZCgpKSBpcyBmYWlsaW5nIHNpbmNlIHIyNTQ3
MjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjM5
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF0b21T
dHJpbmc6OmluaXQoKSBzaG91bGQgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIFdURjo6aW5pdGlh
bGl6ZVRocmVhZGluZygpIGlzIGNhbGxlZCBvbiBXaW5kb3dzIGJlY2F1c2UgaXQgaGFzCisgICAg
ICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpIGFuZCBXaW5kb3dzIGRvZXNuJ3QgaGF2ZSBhIEFQSSB0
byBnZXQgbWFpbgorICAgICAgICB0aHJlYWQgaGFuZGxlIGxpa2UgcHRocmVhZF9tYWluX25wLgor
CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5pdGlhbGl6ZVdlYktpdDIpOiBDYWxsIEF0b21TdHJpbmc6OmluaXQoKSBhZnRlciBKU0M6
OmluaXRpYWxpemVUaHJlYWRpbmcoKS4KKwogMjAyMC0wMS0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBZGQgdGVsZW1ldHJ5IGZvciBJT0tJ
dCBjbGFzc2VzIG5vdCBzZWVuIGluIHRlc3QgcnVucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXgg
MmQ4NTQzODQ0NDAyZGFhOWQ0MDBkOWVjYTkxZmExM2M0MGJmODlkNi4uYWJkYWRiZDZhZjA2ZDZh
NzgzOTZlOWJlNWI3ZGI3OTllYzQ3MWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0xNjMs
NyArMTYzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmZpbmlzaENvbnN0cnVjdGlv
bigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24o
ZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykKIHsKLSAgICBpZiAoaCA+PSBtX3Rv
dGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0aCgpKQogICAgICAgICByZXR1cm4gbV9y
dW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAoaCA8IDApCkBAIC03MzMsNyArNzMzLDcg
QEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkK
ICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0gdHJlYXRBc1NwYWNlID8gRmxvYXRTaXpl
KHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgpKSA6IGFkdmFuY2VzW2ldOwogCiAgICAg
ICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5hbGxvd1RhYnMoKSkKLSAgICAgICAgICAg
ICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1bi50YWJTaXpl
KCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkpOworICAgICAgICAgICAgICAgIGFkdmFu
Y2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQsIG1fcnVuLnRhYlNpemUoKSwgbV9ydW4u
eFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChGb250Q2FzY2Fk
ZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAhdHJlYXRBc1NwYWNlKSB7CiAgICAgICAg
ICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAgICAgICAgICAgICAgICBnbHlwaCA9IGZv
bnQuc3BhY2VHbHlwaCgpOwpAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250
cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0aWFsQWR2YW5jZUhvcml6b250YWxseSht
X2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2FkanVzdGVkQmFzZUFk
dmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90YWxXaWR0aCArPSBtX2V4cGFuc2lvblBl
ck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RvdGFsQWR2
YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSwgMCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBD
b21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAg
ICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uud2lkdGgoKTsKKyAgICAgICAgICAgIG1f
dG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBDb21iaW5p
bmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVtcGhhc2lzIG1hcmsgaWYgdGhleSBhcmUg
Y29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAgICBpZiAobV9mb3JUZXh0RW1waGFzaXMg
JiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRFbXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dD
X01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIy
NTY3ZjU0NGM1ZjY1MjVlMmI3ZTE3ZmM0YjdiMzBmMC4uOTVjZmQ0MDg1NzVlYWNhYmYzZTdjZTFl
ZTBlMDY5MGRhYzQ1YzU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKQEAgLTY1LDcgKzY1LDggQEAgcHVi
bGljOgogICAgIC8vIFJldHVybnMgdGhlIHdpZHRoIG9mIGV2ZXJ5dGhpbmcgd2UndmUgY29uc3Vt
ZWQgc28gZmFyLgogICAgIGZsb2F0IHJ1bldpZHRoU29GYXIoKSBjb25zdCB7IHJldHVybiBtX3J1
bldpZHRoU29GYXI7IH0KIAotICAgIGZsb2F0IHRvdGFsV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3RvdGFsV2lkdGg7IH0KKyAgICBmbG9hdCB0b3RhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90
b3RhbEFkdmFuY2Uud2lkdGgoKTsgfQorICAgIEZsb2F0U2l6ZSB0b3RhbEFkdmFuY2UoKSBjb25z
dCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZTsgfQogCiAgICAgZmxvYXQgbWluR2x5cGhCb3VuZGlu
Z0JveFgoKSBjb25zdCB7IHJldHVybiBtX21pbkdseXBoQm91bmRpbmdCb3hYOyB9CiAgICAgZmxv
YXQgbWF4R2x5cGhCb3VuZGluZ0JveFgoKSBjb25zdCB7IHJldHVybiBtX21heEdseXBoQm91bmRp
bmdCb3hYOyB9CkBAIC0yMTUsNyArMjE2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1
cnJlbnRDaGFyYWN0ZXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9lbmQgeyAwIH07CiAKLSAgICBm
bG9hdCBtX3RvdGFsV2lkdGggeyAwIH07CisgICAgRmxvYXRTaXplIG1fdG90YWxBZHZhbmNlOwog
ICAgIGZsb2F0IG1fcnVuV2lkdGhTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX251bUdseXBo
c1NvRmFyIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFJ1biB7IDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA1ZTVk
MDM4NjA1NDZmNjEyZTQ3NWNjZjcwMjQ1YTM0MjJiNmJmMjU0Li40MjBkODdlMjM0MzE3MDVhOTkx
NzVlODM5ZGIxZmY1OWRmYTQ1ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNzMsMTAgKzI3MywxMCBAQCB2b2lkIEZvbnRD
YXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpIGNvbnN0
CiAgICAgbV9yZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVxdWlyZXNTaGFwaW5nKCk7CiB9CiAK
LWZsb2F0IEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBh
dGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpn
bHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1
biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyKSBjb25zdAogewogICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXgpCi0gICAgICAg
IHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywg
Z2x5cGhCdWZmZXIpOworICAgICAgICByZXR1cm4geyBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNp
bXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpLCAwIH07CiAgICAgcmV0dXJuIGdl
dEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIpOwogfQogCkBAIC0yODQsMTQgKzI4NCwxNCBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1Rl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiB7
CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxvYXQgc3RhcnRYID0gcG9pbnQueCgp
ICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZy
b20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50
ID0gcG9pbnQgKyBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGgocnVuLCBmcm9tLCB0byks
IHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVyKTsKICAgICAvLyBXZSBjb3VsZG4n
dCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBHaXZlIHVwLgogICAgIGlmIChnbHlw
aEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8vIERyYXcgdGhlIGds
eXBoIGJ1ZmZlciBub3cgYXQgdGhlIHN0YXJ0aW5nIHBvaW50IHJldHVybmVkIGluIHN0YXJ0WC4K
LSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCBwb2ludC55KCkpOworICAgIEZsb2F0
UG9pbnQgb2xkU3RhcnRQb2ludChzdGFydFBvaW50KTsKICAgICBkcmF3R2x5cGhCdWZmZXIoY29u
dGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7
Ci0gICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOworICAgIHJldHVybiBzdGFydFBv
aW50LngoKSAtIG9sZFN0YXJ0UG9pbnQueCgpOwogfQogCiB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2ln
bmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKQEAgLTMxNyw3ICszMTcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6
ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICBjb2RlUGF0aFRvVXNlID0gQ29tcGxl
eDsKICAgICAKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBmbG9hdCBzdGFydFgg
PSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5h
dGlvbiwgZ2x5cGhCdWZmZXIpOworICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHRvRmxvYXRQ
b2ludChnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0
aW5hdGlvbiwgZ2x5cGhCdWZmZXIpKTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkg
Z2x5cGhzIGZvciB0aGUgcnVuLiBHaXZlIHVwLgogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzI3LDcgKzMyNyw2IEBAIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlz
dEZvclRleHRSdW4oR3JhCiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpS
ZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUo
KSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICB9KTsKICAgICAKLSAgICBG
bG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKICAgICBkcmF3R2x5cGhCdWZmZXIocmVj
b3JkaW5nQ29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbik7CiAgICAgcmV0dXJuIGRpc3BsYXlMaXN0OwogfQpAQCAtMTM4Myw5ICsxMzgyLDkg
QEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChj
b25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmUKICAgICByZXR1cm4gaW5pdGlhbEFkdmFuY2U7CiB9
CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVm
ZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBj
b25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBs
ZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEds
eXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhh
c2lzKSBjb25zdAogewotICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlOworICAgIEZsb2F0U2l6ZSBp
bml0aWFsQWR2YW5jZTsKIAogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKCp0
aGlzLCBydW4sIGZhbHNlLCAwLCBmb3JUZXh0RW1waGFzaXMpOwogICAgIEdseXBoQnVmZmVyIGR1
bW15R2x5cGhCdWZmZXI7CkBAIC0xMzkzLDIxICsxMzkyLDIxIEBAIGZsb2F0IEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW5zaWduCiAgICAgY29udHJvbGxlci5hZHZhbmNlKHRvLCAmZ2x5cGhCdWZmZXIpOwogCiAgICAg
aWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBpZiAocnVuLnJ0bCgpKSB7CiAgICAgICAgIC8vIEV4cGxvaXQgdGhl
IGZhY3QgdGhhdCB0aGUgc3VtIG9mIHRoZSBwYWludCBhZHZhbmNlcyBpcyBlcXVhbCB0bwogICAg
ICAgICAvLyB0aGUgc3VtIG9mIHRoZSBsYXlvdXQgYWR2YW5jZXMuCi0gICAgICAgIGluaXRpYWxB
ZHZhbmNlID0gY29udHJvbGxlci50b3RhbFdpZHRoKCk7CisgICAgICAgIGluaXRpYWxBZHZhbmNl
ID0gY29udHJvbGxlci50b3RhbEFkdmFuY2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGR1bW15R2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFs
QWR2YW5jZSAtPSBkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAg
ICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkK
LSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53
aWR0aCgpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KGkpOwogICAgICAgICBnbHlwaEJ1ZmZlci5yZXZlcnNlKDAsIGdseXBoQnVmZmVyLnNpemUo
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBkdW1teUdseXBoQnVm
ZmVyLmluaXRpYWxBZHZhbmNlKCkud2lkdGgoKTsKKyAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBk
dW1teUdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaW5p
dGlhbEFkdmFuY2UgKz0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsKKyAg
ICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkp
OwogICAgIH0KIAogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKQEAgLTE0MzYsNyArMTQzNSw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJiBnCiB7CiAgICAgLy8gRHJhdyBlYWNoIGNvbnRpZ3Vv
dXMgcnVuIG9mIGdseXBocyB0aGF0IHVzZSB0aGUgc2FtZSBmb250IGRhdGEuCiAgICAgY29uc3Qg
Rm9udCogZm9udERhdGEgPSBnbHlwaEJ1ZmZlci5mb250QXQoMCk7Ci0gICAgRmxvYXRQb2ludCBz
dGFydFBvaW50KHBvaW50LngoKSwgcG9pbnQueSgpIC0gZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKS5oZWlnaHQoKSk7CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHBvaW50KTsKICAgICBm
bG9hdCBuZXh0WCA9IHN0YXJ0UG9pbnQueCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndp
ZHRoKCk7CiAgICAgZmxvYXQgbmV4dFkgPSBzdGFydFBvaW50LnkoKSArIGdseXBoQnVmZmVyLmFk
dmFuY2VBdCgwKS5oZWlnaHQoKTsKICAgICB1bnNpZ25lZCBsYXN0RnJvbSA9IDA7CkBAIC0xNjM2
LDEyICsxNjM1LDEyIEBAIGNvbnN0IEZvbnQqIEZvbnRDYXNjYWRlOjpmb250Rm9yQ29tYmluaW5n
Q2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlCiB2b2lkIEZvbnRDYXNjYWRl
OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0CiB7CiAgICAg
R2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVy
LCBGb3JUZXh0RW1waGFzaXMpOworICAgIGF1dG8gaW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JU
ZXh0RW1waGFzaXMpOwogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZHJhd0VtcGhhc2lzTWFya3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1h
cmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50LnkoKSkpOwor
ICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBoQnVmZmVyLCBtYXJrLCBwb2ludCAr
IGluaXRpYWxBZHZhbmNlKTsKIH0KIAogc3RydWN0IEdseXBoSXRlcmF0aW9uU3RhdGUgewpAQCAt
MTc3OSw3ICsxNzc4LDcgQEAgRGFzaEFycmF5IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNl
Y3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIGlmIChjb2RlUGF0
aChydW4pICE9IEZvbnRDYXNjYWRlOjpDb21wbGV4KQogICAgICAgICBkZWx0YVggPSBnZXRHbHlw
aHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVm
ZmVyKTsKICAgICBlbHNlCi0gICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9y
Q29tcGxleFRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKTsKKyAgICAgICAg
ZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIDAsIHJ1bi5s
ZW5ndGgoKSwgZ2x5cGhCdWZmZXIpLndpZHRoKCk7CiAKICAgICBpZiAoIWdseXBoQnVmZmVyLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIERhc2hBcnJheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggODk3Y2Q5NzhmODQyZWMxODMyMzZi
YzA2Mjc2OWE5OTRmODM4OWRhZi4uZjUwYjdjZDQ2ZmI5YTVmNjc5ZTUzNjZlYjkzMmY1NTU2NzYw
NzhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBlbnVtIEZvclRl
eHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1waGFzaXMgfTsK
IAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCwgY29uc3QgVGV4dFJ1
biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYpIGNvbnN0OworICAg
IEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4m
LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25zdDsKICAgICAv
LyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgogICAgIGZsb2F0IGdldEds
eXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RG
b3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1w
bGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNv
bnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgY2FuRXhw
YW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAogICAgIC8vIFJldHVybnMgdGhl
IGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5j
ZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
dG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFz
aXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhU
ZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZm
ZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CiAg
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50
JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lk
dGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZh
bGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZz
ZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlv
biwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCBkYjY1MjMzNTg5ZDAxY2Q3M2My
MzExYTEyMDc5OThkMTYwMDQ2ZTUyLi42MWUwNzNlYzAwMGYxNGM3NTEzYWRkMDI0YWJlMmI3YWVl
YThlMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVm
ZmVyLmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBvcGVy
YXRvciBGbG9hdFNpemUoKSBjb25zdCB7IHJldHVybiBGbG9hdFNpemUod2lkdGgoKSwgaGVpZ2h0
KCkpOyB9CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEds
eXBoQnVmZmVyQWR2YW5jZT4gZGVjb2RlKERlY29kZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCmluZGV4IDU0NTZhMjViM2JkOTIwYzdmMTNkZGJlZDEw
Yjc0MzY1YzRhY2IwOGEuLmZiYjczODRjYTA3OGJkMzdlMzlhZWZhNDNmN2RiZmE4NDJmZmI4YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKQEAgLTM5LDkg
KzM5LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgSW5pdGlhbGl6ZVdlYktpdDIoKQog
ewotICAgIEF0b21TdHJpbmc6OmluaXQoKTsKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKyAgICBBdG9tU3RyaW5n
Ojppbml0KCk7CiAKICAgICBXVEY6OlJlZkNvdW50ZWRCYXNlOjplbmFibGVUaHJlYWRpbmdDaGVj
a3NHbG9iYWxseSgpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDgxZWE5YWMxYmViY2E0NjJmYzhkNmViNTRlNTkwOTQ1
Mjg3ZTAxNy4uYzU3MzEwOTE4ZmM0OWY3ZWU4OWVlYjU1NWUzNTBjMDg2ODVkOTczOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgorCisgICAgICAgIEEgcGFydGlhbGx5IHNlbGVjdGVkIFJUTCB0ZXh0IGlz
IHBsYWNlZCBhdCBhIHdyb25nIHZlcnRpY2FsIHBvc2l0aW9uIGlmIGl0IGhhcyBhIHZlcnRpY2Fs
IGluaXRpYWwgYWR2YW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L3RleHQvaW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxl
Y3RlZC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTAxLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTExMTApOiBDcmFzaCBvbiBo
dHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vdHV0b3JpYWxzL3N3aWZ0dWkvY3JlYXRpbmctYW5k
LWNvbWJpbmluZy12aWV3cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRp
YWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvaW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYzc2YjM3NGFiYjJmZDI5NzY3YTgxZmE2M2Y2MzM5ZjUxNmY4YzM2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10
ZXh0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5
bGU+CisgIGRpdiB7CisgICAgICBmb250LXNpemU6IDIwMHB4OworICB9Cis8L3N0eWxlPgorPHNj
cmlwdD4KKyAgb25sb2FkID0gKCkgPT4geworICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignZGl2IHNwYW4nKS5jaGlsZE5vZGVzWzBdOworICAgICAgY29uc3Qgc2VsZWN0
aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRpdik7Cisg
ICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICBzZWxlY3Rpb24uYWRkUmFu
Z2UocmFuZ2UpOworICB9Cis8L3NjcmlwdD4KKworPGRpdj48c3Bhbj4mI3g2Mjg7LSYjeDA2Mjg7
JiN4MDY1MTs8L3NwYW4+LSYjeDYyODs8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0ZWQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTRlYTUyNGYzYWY4ZWM0MTY2MDQ5OTJiNTQwOWM1YmYyOGY1YjEwNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0ZWQtdGV4dC5o
dG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICBkaXYgewor
ICAgICAgZm9udC1zaXplOiAyMDBweDsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgIG9ubG9h
ZCA9ICgpID0+IHsKKyAgICAgIGNvbnN0IHRleHROb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignZGl2JykuY2hpbGROb2Rlc1swXTsKKyAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKKyAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICAgIHJhbmdlLnNldFN0YXJ0KHRleHROb2RlLCAwKTsKKyAgICAgIHJhbmdlLnNldEVu
ZCh0ZXh0Tm9kZSwgNCk7CisgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAg
ICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpOworICB9Cis8L3NjcmlwdD4KKworPGRpdj4mI3g2
Mjg7LSYjeDA2Mjg7JiN4MDY1MTstJiN4NjI4OzwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388020</attachid>
            <date>2020-01-17 01:22:42 -0800</date>
            <delta_ts>2020-01-17 01:24:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>12256</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDJkODU0Mzg0NDQwLi5hYmRhZGJkNmFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0
aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAo
aCA8IDApCkBAIC03MzMsNyArNzMzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFk
anVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0g
dHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgp
KSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5h
bGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJX
aWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkp
OworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQs
IG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChGb250Q2FzY2FkZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAh
dHJlYXRBc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAg
ICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtNzg0LDcgKzc4NCw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0
aWFsQWR2YW5jZUhvcml6b250YWxseShtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90
YWxXaWR0aCArPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3RvdGFsQWR2YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBA
IC04MDIsNyArODAyLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBo
c0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uu
d2lkdGgoKTsKKyAgICAgICAgICAgIG1fdG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVt
cGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAg
ICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRF
bXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIyNTYuLjk1Y2ZkNDA4NTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2Yg
ZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1lZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0Zh
cigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxXaWR0aDsgfQorICAgIGZsb2F0IHRvdGFsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZS53aWR0aCgpOyB9CisgICAgRmxvYXRT
aXplIHRvdGFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxBZHZhbmNlOyB9CiAKICAg
ICBmbG9hdCBtaW5HbHlwaEJvdW5kaW5nQm94WCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluR2x5cGhC
b3VuZGluZ0JveFg7IH0KICAgICBmbG9hdCBtYXhHbHlwaEJvdW5kaW5nQm94WCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF4R2x5cGhCb3VuZGluZ0JveFg7IH0KQEAgLTIxNSw3ICsyMTYsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlciB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2VuZCB7IDAgfTsKIAotICAgIGZsb2F0IG1fdG90YWxXaWR0aCB7IDAgfTsKKyAgICBGbG9h
dFNpemUgbV90b3RhbEFkdmFuY2U7CiAgICAgZmxvYXQgbV9ydW5XaWR0aFNvRmFyIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fbnVtR2x5cGhzU29GYXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJy
ZW50UnVuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCmluZGV4IDgzMDhmMmIyMDJhLi5kMWM2NmE2YWI0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjczLDEw
ICsyNzMsMTAgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+
JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fcmVxdWlyZXNTaGFwaW5nID0gY29tcHV0ZVJl
cXVpcmVzU2hhcGluZygpOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JU
ZXh0UnVuKENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlcikgY29uc3QKK0Zs
b2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQYXRoIGNvZGVQ
YXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8s
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlcikgY29uc3QKIHsKICAgICBpZiAoY29kZVBhdGhUb1Vz
ZSAhPSBDb21wbGV4KQotICAgICAgICByZXR1cm4gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1w
bGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHsgZ2V0
R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVy
KSwgMCB9OwogICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1
biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyKTsKIH0KIApAQCAtMjg0LDE0ICsyODQsMTQgQEAgZmxv
YXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdAogewogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFs
dWVPcihydW4ubGVuZ3RoKCkpOwogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZs
b2F0IHN0YXJ0WCA9IHBvaW50LngoKSArIGdseXBoQnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aChy
dW4sIGZyb20sIHRvKSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAg
IEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHBvaW50ICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNv
ZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZl
cik7CiAgICAgLy8gV2UgY291bGRuJ3QgZ2VuZXJhdGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4g
R2l2ZSB1cC4KICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICAvLyBEcmF3IHRoZSBnbHlwaCBidWZmZXIgbm93IGF0IHRoZSBzdGFydGluZyBwb2lu
dCByZXR1cm5lZCBpbiBzdGFydFguCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwg
cG9pbnQueSgpKTsKKyAgICBGbG9hdFBvaW50IG9sZFN0YXJ0UG9pbnQoc3RhcnRQb2ludCk7CiAg
ICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBjdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24pOwotICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0
WDsKKyAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBvbGRTdGFydFBvaW50LngoKTsKIH0KIAog
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNv
bnN0CkBAIC0zMTcsNyArMzE3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICAgICAg
Y29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CiAgICAgCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZm
ZXI7Ci0gICAgZmxvYXQgc3RhcnRYID0gZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoVG9V
c2UsIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVyKTsKKyAgICBGbG9hdFBvaW50
IHN0YXJ0UG9pbnQgPSB0b0Zsb2F0UG9pbnQoZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRo
VG9Vc2UsIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVyKSk7CiAgICAgLy8gV2Ug
Y291bGRuJ3QgZ2VuZXJhdGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4gR2l2ZSB1cC4KICAgICBp
ZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMy
Nyw3ICszMjcsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBG
b250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3Bs
YXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7
CiAgICAgfSk7CiAgICAgCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgMCk7CiAg
ICAgZHJhd0dseXBoQnVmZmVyKHJlY29yZGluZ0NvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBv
aW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwogICAgIHJldHVybiBkaXNwbGF5TGlzdDsK
IH0KQEAgLTEzODMsOSArMTM4Miw5IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lCiAgICAgcmV0
dXJuIGluaXRpYWxBZHZhbmNlOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5k
QWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09y
Tm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKK0Zsb2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2V0R2x5
cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBo
YXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKIHsKLSAgICBmbG9hdCBpbml0aWFsQWR2
YW5jZTsKKyAgICBGbG9hdFNpemUgaW5pdGlhbEFkdmFuY2U7CiAKICAgICBDb21wbGV4VGV4dENv
bnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywgcnVuLCBmYWxzZSwgMCwgZm9yVGV4dEVtcGhhc2lz
KTsKICAgICBHbHlwaEJ1ZmZlciBkdW1teUdseXBoQnVmZmVyOwpAQCAtMTM5MywyMSArMTM5Miwy
MSBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbgogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSh0bywg
JmdseXBoQnVmZmVyKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKHJ1bi5ydGwoKSkgewog
ICAgICAgICAvLyBFeHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlIHN1bSBvZiB0aGUgcGFpbnQgYWR2
YW5jZXMgaXMgZXF1YWwgdG8KICAgICAgICAgLy8gdGhlIHN1bSBvZiB0aGUgbGF5b3V0IGFkdmFu
Y2VzLgotICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxXaWR0aCgpOwor
ICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhC
dWZmZXIuYWR2YW5jZUF0KGkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2x5
cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNl
IC09IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJz
ZSgwLCBnbHlwaEJ1ZmZlci5zaXplKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGluaXRpYWxB
ZHZhbmNlID0gZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCk7CisgICAg
ICAgIGluaXRpYWxBZHZhbmNlID0gZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IGR1bW15R2x5cGhCdWZmZXIuYWR2
YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUds
eXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CkBAIC0xNDM2LDcgKzE0MzUsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogewogICAg
IC8vIERyYXcgZWFjaCBjb250aWd1b3VzIHJ1biBvZiBnbHlwaHMgdGhhdCB1c2UgdGhlIHNhbWUg
Zm9udCBkYXRhLgogICAgIGNvbnN0IEZvbnQqIGZvbnREYXRhID0gZ2x5cGhCdWZmZXIuZm9udEF0
KDApOwotICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSAtIGds
eXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpOworICAgIEZsb2F0UG9pbnQgc3Rh
cnRQb2ludChwb2ludCk7CiAgICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpOwogICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2lu
dC55KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkuaGVpZ2h0KCk7CiAgICAgdW5zaWduZWQg
bGFzdEZyb20gPSAwOwpAQCAtMTYzNiwxMiArMTYzNSwxMiBAQCBjb25zdCBGb250KiBGb250Q2Fz
Y2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZQogdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0
IGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4s
IGZyb20sIHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRp
YWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20s
IHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZl
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNv
bnRleHQsIGdseXBoQnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxB
ZHZhbmNlLCBwb2ludC55KCkpKTsKKyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlw
aEJ1ZmZlciwgbWFyaywgcG9pbnQgKyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlw
aEl0ZXJhdGlvblN0YXRlIHsKQEAgLTE3NzksNyArMTc3OCw3IEBAIERhc2hBcnJheSBGb250Q2Fz
Y2FkZTo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QKICAgICBpZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAg
ICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwg
cnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBn
bHlwaEJ1ZmZlcik7CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29t
cGxleFRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAg
ICAgaWYgKCFnbHlwaEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4
IDg5N2NkOTc4Zjg0Li5mNTBiN2NkNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBlbnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lz
LCBGb3JUZXh0RW1waGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihD
b2RlUGF0aCwgY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlw
aEJ1ZmZlciYpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29k
ZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhC
dWZmZXImKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZh
bmNlLgogICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBU
ZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4
dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJh
d0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsK
IAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxv
YXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRl
eHRFbXBoYXNpcykgY29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBt
YXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0
OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFz
aFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDAp
IGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRl
eHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRl
eCA3YjU2YTM3YzI4My4uYTA2MDY3OWI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAorICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0
U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7IH0KKwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNvZGUoRGVjb2RlciYpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388021</attachid>
            <date>2020-01-17 01:24:47 -0800</date>
            <delta_ts>2020-01-17 01:26:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>12256</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDJkODU0Mzg0NDQwLi5hYmRhZGJkNmFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGggPj0gdG90YWxXaWR0
aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkgPyBtX2VuZCA6IDA7CiAKICAgICBpZiAo
aCA8IDApCkBAIC03MzMsNyArNzMzLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFk
anVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0g
dHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCgp
KSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5h
bGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJX
aWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCkp
OworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQs
IG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgdG90YWxXaWR0aCgpKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChGb250Q2FzY2FkZTo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoKSAmJiAh
dHJlYXRBc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAgYWR2YW5jZS5zZXRXaWR0aCgwKTsKICAg
ICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtNzg0LDcgKzc4NCw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLmdyb3dJbml0
aWFsQWR2YW5jZUhvcml6b250YWxseShtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FkanVzdGVkQmFzZUFkdmFuY2VzLmxhc3QoKS5leHBhbmQobV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90
YWxXaWR0aCArPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3RvdGFsQWR2YW5jZS5leHBhbmQobV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGFuZFJpZ2h0KSB7CkBA
IC04MDIsNyArODAyLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBo
c0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uu
d2lkdGgoKTsKKyAgICAgICAgICAgIG1fdG90YWxBZHZhbmNlICs9IGFkdmFuY2U7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0ZXh0IGVt
cGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAgICAgICAg
ICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRF
bXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggZDhmNjNiZjIyNTYuLjk1Y2ZkNDA4NTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aApAQCAtNjUsNyArNjUsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2Yg
ZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1lZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0Zh
cigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxXaWR0aDsgfQorICAgIGZsb2F0IHRvdGFsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQWR2YW5jZS53aWR0aCgpOyB9CisgICAgRmxvYXRT
aXplIHRvdGFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxBZHZhbmNlOyB9CiAKICAg
ICBmbG9hdCBtaW5HbHlwaEJvdW5kaW5nQm94WCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluR2x5cGhC
b3VuZGluZ0JveFg7IH0KICAgICBmbG9hdCBtYXhHbHlwaEJvdW5kaW5nQm94WCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF4R2x5cGhCb3VuZGluZ0JveFg7IH0KQEAgLTIxNSw3ICsyMTYsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlciB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2VuZCB7IDAgfTsKIAotICAgIGZsb2F0IG1fdG90YWxXaWR0aCB7IDAgfTsKKyAgICBGbG9h
dFNpemUgbV90b3RhbEFkdmFuY2U7CiAgICAgZmxvYXQgbV9ydW5XaWR0aFNvRmFyIHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fbnVtR2x5cGhzU29GYXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJy
ZW50UnVuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCmluZGV4IDgzMDhmMmIyMDJhLi5kMWM2NmE2YWI0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjczLDEw
ICsyNzMsMTAgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+
JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fcmVxdWlyZXNTaGFwaW5nID0gY29tcHV0ZVJl
cXVpcmVzU2hhcGluZygpOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JU
ZXh0UnVuKENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlcikgY29uc3QKK0Zs
b2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQYXRoIGNvZGVQ
YXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8s
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlcikgY29uc3QKIHsKICAgICBpZiAoY29kZVBhdGhUb1Vz
ZSAhPSBDb21wbGV4KQotICAgICAgICByZXR1cm4gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1w
bGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHsgZ2V0
R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVy
KSwgMCB9OwogICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1
biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyKTsKIH0KIApAQCAtMjg0LDE0ICsyODQsMTQgQEAgZmxv
YXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdAogewogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFs
dWVPcihydW4ubGVuZ3RoKCkpOwogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZs
b2F0IHN0YXJ0WCA9IHBvaW50LngoKSArIGdseXBoQnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aChy
dW4sIGZyb20sIHRvKSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAg
IEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHBvaW50ICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNv
ZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZl
cik7CiAgICAgLy8gV2UgY291bGRuJ3QgZ2VuZXJhdGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4g
R2l2ZSB1cC4KICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICAvLyBEcmF3IHRoZSBnbHlwaCBidWZmZXIgbm93IGF0IHRoZSBzdGFydGluZyBwb2lu
dCByZXR1cm5lZCBpbiBzdGFydFguCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwg
cG9pbnQueSgpKTsKKyAgICBGbG9hdFBvaW50IG9sZFN0YXJ0UG9pbnQoc3RhcnRQb2ludCk7CiAg
ICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBjdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24pOwotICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0
WDsKKyAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBvbGRTdGFydFBvaW50LngoKTsKIH0KIAog
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNv
bnN0CkBAIC0zMTcsNyArMzE3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICAgICAg
Y29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CiAgICAgCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZm
ZXI7Ci0gICAgZmxvYXQgc3RhcnRYID0gZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoVG9V
c2UsIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVyKTsKKyAgICBGbG9hdFBvaW50
IHN0YXJ0UG9pbnQgPSB0b0Zsb2F0UG9pbnQoZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRo
VG9Vc2UsIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVyKSk7CiAgICAgLy8gV2Ug
Y291bGRuJ3QgZ2VuZXJhdGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4gR2l2ZSB1cC4KICAgICBp
ZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMy
Nyw3ICszMjcsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBG
b250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3Bs
YXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7
CiAgICAgfSk7CiAgICAgCi0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgMCk7CiAg
ICAgZHJhd0dseXBoQnVmZmVyKHJlY29yZGluZ0NvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBv
aW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwogICAgIHJldHVybiBkaXNwbGF5TGlzdDsK
IH0KQEAgLTEzODMsOSArMTM4Miw5IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRB
ZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lCiAgICAgcmV0
dXJuIGluaXRpYWxBZHZhbmNlOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5k
QWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09y
Tm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKK0Zsb2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2V0R2x5
cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBo
YXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKIHsKLSAgICBmbG9hdCBpbml0aWFsQWR2
YW5jZTsKKyAgICBGbG9hdFNpemUgaW5pdGlhbEFkdmFuY2U7CiAKICAgICBDb21wbGV4VGV4dENv
bnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywgcnVuLCBmYWxzZSwgMCwgZm9yVGV4dEVtcGhhc2lz
KTsKICAgICBHbHlwaEJ1ZmZlciBkdW1teUdseXBoQnVmZmVyOwpAQCAtMTM5MywyMSArMTM5Miwy
MSBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbgogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSh0bywg
JmdseXBoQnVmZmVyKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKHJ1bi5ydGwoKSkgewog
ICAgICAgICAvLyBFeHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlIHN1bSBvZiB0aGUgcGFpbnQgYWR2
YW5jZXMgaXMgZXF1YWwgdG8KICAgICAgICAgLy8gdGhlIHN1bSBvZiB0aGUgbGF5b3V0IGFkdmFu
Y2VzLgotICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxXaWR0aCgpOwor
ICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgLT0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhC
dWZmZXIuYWR2YW5jZUF0KGkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2x5
cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBnbHlw
aEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNl
IC09IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJz
ZSgwLCBnbHlwaEJ1ZmZlci5zaXplKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGluaXRpYWxB
ZHZhbmNlID0gZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCk7CisgICAg
ICAgIGluaXRpYWxBZHZhbmNlID0gZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IGR1bW15R2x5cGhCdWZmZXIuYWR2
YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUds
eXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CkBAIC0xNDM2LDcgKzE0MzUsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogewogICAg
IC8vIERyYXcgZWFjaCBjb250aWd1b3VzIHJ1biBvZiBnbHlwaHMgdGhhdCB1c2UgdGhlIHNhbWUg
Zm9udCBkYXRhLgogICAgIGNvbnN0IEZvbnQqIGZvbnREYXRhID0gZ2x5cGhCdWZmZXIuZm9udEF0
KDApOwotICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSAtIGds
eXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpOworICAgIEZsb2F0UG9pbnQgc3Rh
cnRQb2ludChwb2ludCk7CiAgICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIGdseXBo
QnVmZmVyLmFkdmFuY2VBdCgwKS53aWR0aCgpOwogICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2lu
dC55KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkuaGVpZ2h0KCk7CiAgICAgdW5zaWduZWQg
bGFzdEZyb20gPSAwOwpAQCAtMTYzNiwxMiArMTYzNSwxMiBAQCBjb25zdCBGb250KiBGb250Q2Fz
Y2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZQogdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0
IGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4s
IGZyb20sIHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRp
YWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20s
IHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZl
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNv
bnRleHQsIGdseXBoQnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxB
ZHZhbmNlLCBwb2ludC55KCkpKTsKKyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlw
aEJ1ZmZlciwgbWFyaywgcG9pbnQgKyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlw
aEl0ZXJhdGlvblN0YXRlIHsKQEAgLTE3NzksNyArMTc3OCw3IEBAIERhc2hBcnJheSBGb250Q2Fz
Y2FkZTo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QKICAgICBpZiAoY29kZVBhdGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAg
ICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwg
cnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBn
bHlwaEJ1ZmZlcik7CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29t
cGxleFRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAg
ICAgaWYgKCFnbHlwaEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4
IDg5N2NkOTc4Zjg0Li5mNTBiN2NkNDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBlbnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lz
LCBGb3JUZXh0RW1waGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihD
b2RlUGF0aCwgY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlw
aEJ1ZmZlciYpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29k
ZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhC
dWZmZXImKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZh
bmNlLgogICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBU
ZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4
dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJh
d0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsK
IAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCi0gICAgZmxv
YXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRl
eHRFbXBoYXNpcykgY29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBt
YXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0
OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFz
aFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDAp
IGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRl
eHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRl
eCA3YjU2YTM3YzI4My4uYTA2MDY3OWI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAorICAgIG9wZXJhdG9yIEZsb2F0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0
U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7IH0KKwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBkZWNvZGUoRGVjb2RlciYpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388022</attachid>
            <date>2020-01-17 01:26:19 -0800</date>
            <delta_ts>2020-01-20 00:16:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>16841</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkODFlYTlhYzFiZS4uYzU3MzEwOTE4ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMC0wMS0xNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKwor
ICAgICAgICBBIHBhcnRpYWxseSBzZWxlY3RlZCBSVEwgdGV4dCBpcyBwbGFjZWQgYXQgYSB3cm9u
ZyB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBpdCBoYXMgYSB2ZXJ0aWNhbCBpbml0aWFsIGFkdmFuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTk5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC90
ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0ZWQtdGV4dC5odG1sOiBB
ZGRlZC4KKwogMjAyMC0wMS0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMjUxMTEwKTogQ3Jhc2ggb24gaHR0cHM6Ly9kZXZlbG9wZXIu
YXBwbGUuY29tL3R1dG9yaWFscy9zd2lmdHVpL2NyZWF0aW5nLWFuZC1jb21iaW5pbmctdmlld3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0
ZWQtdGV4dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2
YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmNjNzZiMzc0YWJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgIGRpdiB7CisgICAg
ICBmb250LXNpemU6IDIwMHB4OworICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgb25sb2FkID0g
KCkgPT4geworICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2IHNw
YW4nKS5jaGlsZE5vZGVzWzBdOworICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNl
bGVjdGlvbigpOworICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRpdik7CisgICAgICBzZWxlY3Rpb24ucmVt
b3ZlQWxsUmFuZ2VzKCk7CisgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpOworICB9Cis8
L3NjcmlwdD4KKworPGRpdj48c3Bhbj4mI3g2Mjg7LSYjeDA2Mjg7JiN4MDY1MTs8L3NwYW4+LSYj
eDYyODs8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFk
dmFuY2Utc2VsZWN0ZWQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwt
YWR2YW5jZS1zZWxlY3RlZC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmU0ZWE1MjRmM2FmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0Lmh0bWwKQEAgLTAsMCArMSwxOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgIGRpdiB7CisgICAgICBmb250LXNpemU6IDIw
MHB4OworICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgb25sb2FkID0gKCkgPT4geworICAgICAg
Y29uc3QgdGV4dE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYnKS5jaGlsZE5vZGVz
WzBdOworICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAg
ICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgcmFuZ2Uuc2V0
U3RhcnQodGV4dE5vZGUsIDApOworICAgICAgcmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA0KTsKKyAg
ICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5n
ZShyYW5nZSk7CisgIH0KKzwvc2NyaXB0PgorCis8ZGl2PiYjeDYyODstJiN4MDYyODsmI3gwNjUx
Oy0mI3g2Mjg7PC9kaXY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVlMmEzMTg3Y2UuLmUzYzQ3MDIyYjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjAtMDEtMTcgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQSBwYXJ0aWFsbHkgc2VsZWN0ZWQg
UlRMIHRleHQgaXMgcGxhY2VkIGF0IGEgd3JvbmcgdmVydGljYWwgcG9zaXRpb24gaWYgaXQgaGFz
IGEgdmVydGljYWwgaW5pdGlhbCBhZHZhbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JD
b21wbGV4VGV4dCByZXR1cm5lZCBvbmx5IFgKKyAgICAgICAgcG9zaXRpb24gb2YgdGhlIGZpcnN0
IGdseXBoLgorCisgICAgICAgIEJlY2F1c2UgR2x5cGhCdWZmZXIgaXMgdXNpbmcgZ2x5cGggYWR2
YW5jZXMgaW5zdGVhZCBnbHlwaAorICAgICAgICBwb3NpdGlvbnMsIGl0J3Mgbm90IGVhc3kgdG8g
Y2FsY3VsYXRlIHRoZSBmaXJzdCBnbHlwaCBwb3NpdGlvbiBvZgorICAgICAgICB0aGUgcGFydCBv
ZiBhIFJUTCB0ZXh0cy4KKyAgICAgICAgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2Vz
Rm9yQ29tcGxleFRleHQgaXMgY2FsY3VsYXRpbmcgdGhlCisgICAgICAgIFggcG9zaXRpb24gb2Yg
aXQgYnkgc3VidHJhY3RpbmcgcmlnaHQgc2lkZSBwYXJ0IHdpZHRoIGZyb20gdGhlCisgICAgICAg
IHRvdGFsIHdpZHRoLiBJdCBzaG91bGQgZG8gc2FtZSBmb3IgWSBwb3NpdGlvbi4KKworICAgICAg
ICBtYWNPUyBhbmQgaU9TIHBvcnRzIGRvZXNuJ3QgdXNlIHRoZSBjb2RlIHRvIGRyYXcgc2VsZWN0
ZWQgdGV4dHMuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxl
Y3RlZC10ZXh0Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6
Om9mZnNldEZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJv
bGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oOiBSZXBsYWNlZCBtX3RvdGFsV2lkdGggd2l0aCBt
X3RvdGFsQWR2YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6
dG90YWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xs
ZXI6OnRvdGFsQWR2YW5jZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmdseXBoQnVmZmVy
Rm9yVGV4dFJ1biBjb25zdCk6IENoYW5nZWQgdGhlIHJldHVybiB0eXBlIGZyb20gZmxvYXQgdG8g
RmxvYXRTaXplLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFu
Y2VzRm9yQ29tcGxleFRleHQgY29uc3QpOiBDaGFuZ2VkIHRoZSByZXR1cm4gdHlwZSBmcm9tIGZs
b2F0IHRvIEZsb2F0U2l6ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBo
YXNpc01hcmtzRm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNl
OjpvcGVyYXRvciBGbG9hdFNpemUgY29uc3QpOgorCiAyMDIwLTAxLTE2ICBGdWppaSBIaXJvbm9y
aSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcmVtb3Zp
bmcgYSBzdGFsZSBGSVhNRSBjb21tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCAyZDg1NDM4
NDQ0MC4uYWJkYWRiZDZhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtMTYzLDcgKzE2Myw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpmaW5pc2hDb25zdHJ1Y3Rpb24oKQogCiB1
bnNpZ25lZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGgs
IGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpCiB7Ci0gICAgaWYgKGggPj0gbV90b3RhbFdpZHRo
KQorICAgIGlmIChoID49IHRvdGFsV2lkdGgoKSkKICAgICAgICAgcmV0dXJuIG1fcnVuLmx0cigp
ID8gbV9lbmQgOiAwOwogCiAgICAgaWYgKGggPCAwKQpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgICAg
ICAgICBGbG9hdFNpemUgYWR2YW5jZSA9IHRyZWF0QXNTcGFjZSA/IEZsb2F0U2l6ZShzcGFjZVdp
ZHRoLCBhZHZhbmNlc1tpXS5oZWlnaHQoKSkgOiBhZHZhbmNlc1tpXTsKIAogICAgICAgICAgICAg
aWYgKGNoID09ICdcdCcgJiYgbV9ydW4uYWxsb3dUYWJzKCkpCi0gICAgICAgICAgICAgICAgYWR2
YW5jZS5zZXRXaWR0aChtX2ZvbnQudGFiV2lkdGgoZm9udCwgbV9ydW4udGFiU2l6ZSgpLCBtX3J1
bi54UG9zKCkgKyBtX3RvdGFsV2lkdGgpKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdp
ZHRoKG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSAr
IHRvdGFsV2lkdGgoKSkpOwogICAgICAgICAgICAgZWxzZSBpZiAoRm9udENhc2NhZGU6OnRyZWF0
QXNaZXJvV2lkdGhTcGFjZShjaCkgJiYgIXRyZWF0QXNTcGFjZSkgewogICAgICAgICAgICAgICAg
IGFkdmFuY2Uuc2V0V2lkdGgoMCk7CiAgICAgICAgICAgICAgICAgZ2x5cGggPSBmb250LnNwYWNl
R2x5cGgoKTsKQEAgLTc4NCw3ICs3ODQsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6
YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb21wbGV4VGV4dFJ1bi5ncm93SW5pdGlhbEFkdmFuY2VIb3Jpem9udGFsbHkobV9leHBhbnNp
b25QZXJPcHBvcnR1bml0eSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9hZGp1c3RlZEJhc2VBZHZhbmNlcy5s
YXN0KCkuZXhwYW5kKG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHksIDApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3RvdGFsV2lkdGggKz0gbV9leHBhbnNpb25QZXJPcHBvcnR1
bml0eTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90b3RhbEFkdmFuY2UuZXhw
YW5kKG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHksIDApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChleHBhbmRSaWdodCkgewpAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQgQ29tcGxleFRl
eHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgICAgICAgICAgICAg
ICAgIGFmdGVyRXhwYW5zaW9uID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IG1fdG90YWxXaWR0aCArPSBhZHZhbmNlLndpZHRoKCk7CisgICAgICAgICAgICBtX3RvdGFsQWR2
YW5jZSArPSBhZHZhbmNlOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogQ29tYmluaW5nIG1hcmtz
IHNob3VsZCByZWNlaXZlIGEgdGV4dCBlbXBoYXNpcyBtYXJrIGlmIHRoZXkgYXJlIGNvbWJpbmUg
d2l0aCBhIHNwYWNlLgogICAgICAgICAgICAgaWYgKG1fZm9yVGV4dEVtcGhhc2lzICYmICghRm9u
dENhc2NhZGU6OmNhblJlY2VpdmVUZXh0RW1waGFzaXMoY2gpIHx8IChVX0dFVF9HQ19NQVNLKGNo
KSAmIFVfR0NfTV9NQVNLKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IGQ4ZjYzYmYyMjU2Li45NWNm
ZDQwODU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKQEAgLTY1LDcgKzY1LDggQEAgcHVibGljOgogICAg
IC8vIFJldHVybnMgdGhlIHdpZHRoIG9mIGV2ZXJ5dGhpbmcgd2UndmUgY29uc3VtZWQgc28gZmFy
LgogICAgIGZsb2F0IHJ1bldpZHRoU29GYXIoKSBjb25zdCB7IHJldHVybiBtX3J1bldpZHRoU29G
YXI7IH0KIAotICAgIGZsb2F0IHRvdGFsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsV2lk
dGg7IH0KKyAgICBmbG9hdCB0b3RhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEFkdmFu
Y2Uud2lkdGgoKTsgfQorICAgIEZsb2F0U2l6ZSB0b3RhbEFkdmFuY2UoKSBjb25zdCB7IHJldHVy
biBtX3RvdGFsQWR2YW5jZTsgfQogCiAgICAgZmxvYXQgbWluR2x5cGhCb3VuZGluZ0JveFgoKSBj
b25zdCB7IHJldHVybiBtX21pbkdseXBoQm91bmRpbmdCb3hYOyB9CiAgICAgZmxvYXQgbWF4R2x5
cGhCb3VuZGluZ0JveFgoKSBjb25zdCB7IHJldHVybiBtX21heEdseXBoQm91bmRpbmdCb3hYOyB9
CkBAIC0yMTUsNyArMjE2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRDaGFy
YWN0ZXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9lbmQgeyAwIH07CiAKLSAgICBmbG9hdCBtX3Rv
dGFsV2lkdGggeyAwIH07CisgICAgRmxvYXRTaXplIG1fdG90YWxBZHZhbmNlOwogICAgIGZsb2F0
IG1fcnVuV2lkdGhTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX251bUdseXBoc1NvRmFyIHsg
MCB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFJ1biB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA1ZTVkMDM4NjA1NC4u
NDIwZDg3ZTIzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAKQEAgLTI3MywxMCArMjczLDEwIEBAIHZvaWQgRm9udENhc2NhZGU6OnVw
ZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKICAgICBtX3Jl
cXVpcmVzU2hhcGluZyA9IGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKTsKIH0KIAotZmxvYXQgRm9u
dENhc2NhZGU6OmdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBj
b25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZl
ciYgZ2x5cGhCdWZmZXIpIGNvbnN0CitGbG9hdFNpemUgRm9udENhc2NhZGU6OmdseXBoQnVmZmVy
Rm9yVGV4dFJ1bihDb2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0UnVuJiBydW4sIHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIpIGNvbnN0
CiB7CiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkKLSAgICAgICAgcmV0dXJuIGdl
dEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZl
cik7CisgICAgICAgIHJldHVybiB7IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChy
dW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlciksIDAgfTsKICAgICByZXR1cm4gZ2V0R2x5cGhzQW5k
QWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlcik7CiB9CiAK
QEAgLTI4NCwxNCArMjg0LDE0IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKIHsKICAgICB1bnNp
Z25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKICAgICBHbHlwaEJ1
ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBmbG9hdCBzdGFydFggPSBwb2ludC54KCkgKyBnbHlwaEJ1
ZmZlckZvclRleHRSdW4oY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGlu
YXRpb24sIGdseXBoQnVmZmVyKTsKKyAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSBwb2ludCAr
IGdseXBoQnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aChydW4sIGZyb20sIHRvKSwgcnVuLCBmcm9t
LCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOwogICAgIC8vIFdlIGNvdWxkbid0IGdlbmVyYXRl
IGFueSBnbHlwaHMgZm9yIHRoZSBydW4uIEdpdmUgdXAuCiAgICAgaWYgKGdseXBoQnVmZmVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gRHJhdyB0aGUgZ2x5cGggYnVmZmVy
IG5vdyBhdCB0aGUgc3RhcnRpbmcgcG9pbnQgcmV0dXJuZWQgaW4gc3RhcnRYLgotICAgIEZsb2F0
UG9pbnQgc3RhcnRQb2ludChzdGFydFgsIHBvaW50LnkoKSk7CisgICAgRmxvYXRQb2ludCBvbGRT
dGFydFBvaW50KHN0YXJ0UG9pbnQpOwogICAgIGRyYXdHbHlwaEJ1ZmZlcihjb250ZXh0LCBnbHlw
aEJ1ZmZlciwgc3RhcnRQb2ludCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKLSAgICByZXR1
cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CisgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0g
b2xkU3RhcnRQb2ludC54KCk7CiB9CiAKIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBjb25zdApAQCAtMzE3LDcgKzMxNyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlz
dEZvclRleHRSdW4oR3JhCiAgICAgICAgIGNvZGVQYXRoVG9Vc2UgPSBDb21wbGV4OwogICAgIAog
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IHN0YXJ0WCA9IGdseXBoQnVm
ZmVyRm9yVGV4dFJ1bihjb2RlUGF0aFRvVXNlLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlw
aEJ1ZmZlcik7CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gdG9GbG9hdFBvaW50KGdseXBo
QnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aFRvVXNlLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBn
bHlwaEJ1ZmZlcikpOwogICAgIC8vIFdlIGNvdWxkbid0IGdlbmVyYXRlIGFueSBnbHlwaHMgZm9y
IHRoZSBydW4uIEdpdmUgdXAuCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMjcsNyArMzI3LDYgQEAgc3RkOjp1bmlxdWVfcHRyPERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1
bihHcmEKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihk
aXNwbGF5TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJl
Y3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIH0pOwogICAgIAotICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludChzdGFydFgsIDApOwogICAgIGRyYXdHbHlwaEJ1ZmZlcihyZWNvcmRpbmdDb250
ZXh0LCBnbHlwaEJ1ZmZlciwgc3RhcnRQb2ludCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsK
ICAgICByZXR1cm4gZGlzcGxheUxpc3Q7CiB9CkBAIC0xMzgzLDkgKzEzODIsOSBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgdW5zaWduZQogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAotZmxvYXQg
Rm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4
dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBo
QnVmZmVyLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitGbG9h
dFNpemUgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXIm
IGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0
CiB7Ci0gICAgZmxvYXQgaW5pdGlhbEFkdmFuY2U7CisgICAgRmxvYXRTaXplIGluaXRpYWxBZHZh
bmNlOwogCiAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIoKnRoaXMsIHJ1biwg
ZmFsc2UsIDAsIGZvclRleHRFbXBoYXNpcyk7CiAgICAgR2x5cGhCdWZmZXIgZHVtbXlHbHlwaEJ1
ZmZlcjsKQEAgLTEzOTMsMjEgKzEzOTIsMjEgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBo
c0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ24KICAg
ICBjb250cm9sbGVyLmFkdmFuY2UodG8sICZnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAoZ2x5cGhC
dWZmZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIGlmIChydW4ucnRsKCkpIHsKICAgICAgICAgLy8gRXhwbG9pdCB0aGUgZmFjdCB0aGF0
IHRoZSBzdW0gb2YgdGhlIHBhaW50IGFkdmFuY2VzIGlzIGVxdWFsIHRvCiAgICAgICAgIC8vIHRo
ZSBzdW0gb2YgdGhlIGxheW91dCBhZHZhbmNlcy4KLSAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBj
b250cm9sbGVyLnRvdGFsV2lkdGgoKTsKKyAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBjb250cm9s
bGVyLnRvdGFsQWR2YW5jZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVt
bXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09
IGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0
aWFsQWR2YW5jZSAtPSBkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgaW5pdGlhbEFkdmFuY2UgLT0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7Cisg
ICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAg
ICAgICAgIGdseXBoQnVmZmVyLnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKICAgICB9
IGVsc2UgewotICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlh
bEFkdmFuY2UoKS53aWR0aCgpOworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGR1bW15R2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5j
ZSArPSBkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICAgICAg
aW5pdGlhbEFkdmFuY2UgKz0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIGluaXRpYWxBZHZhbmNlOwpAQCAtMTQzNiw3ICsxNDM1LDcgQEAgdm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgR2x5cGhCdWZmZXImIGcKIHsKICAgICAvLyBEcmF3IGVhY2ggY29udGlndW91cyBydW4gb2Yg
Z2x5cGhzIHRoYXQgdXNlIHRoZSBzYW1lIGZvbnQgZGF0YS4KICAgICBjb25zdCBGb250KiBmb250
RGF0YSA9IGdseXBoQnVmZmVyLmZvbnRBdCgwKTsKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQo
cG9pbnQueCgpLCBwb2ludC55KCkgLSBnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdo
dCgpKTsKKyAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQocG9pbnQpOwogICAgIGZsb2F0IG5leHRY
ID0gc3RhcnRQb2ludC54KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKTsKICAg
ICBmbG9hdCBuZXh0WSA9IHN0YXJ0UG9pbnQueSgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDAp
LmhlaWdodCgpOwogICAgIHVuc2lnbmVkIGxhc3RGcm9tID0gMDsKQEAgLTE2MzYsMTIgKzE2MzUs
MTIgQEAgY29uc3QgRm9udCogRm9udENhc2NhZGU6OmZvbnRGb3JDb21iaW5pbmdDaGFyYWN0ZXJT
ZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGUKIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBo
YXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZl
ciBnbHlwaEJ1ZmZlcjsKLSAgICBmbG9hdCBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFk
dmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRF
bXBoYXNpcyk7CisgICAgYXV0byBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2Vz
Rm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNp
cyk7CiAKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFyaywgRmxvYXRQ
b2ludChwb2ludC54KCkgKyBpbml0aWFsQWR2YW5jZSwgcG9pbnQueSgpKSk7CisgICAgZHJhd0Vt
cGhhc2lzTWFya3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmssIHBvaW50ICsgaW5pdGlhbEFk
dmFuY2UpOwogfQogCiBzdHJ1Y3QgR2x5cGhJdGVyYXRpb25TdGF0ZSB7CkBAIC0xNzc5LDcgKzE3
NzgsNyBAQCBEYXNoQXJyYXkgRm9udENhc2NhZGU6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRo
UmVjdChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiAgICAgaWYgKGNvZGVQYXRoKHJ1bikgIT0g
Rm9udENhc2NhZGU6OkNvbXBsZXgpCiAgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFu
Y2VzRm9yU2ltcGxlVGV4dChydW4sIDAsIHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOwogICAg
IGVsc2UKLSAgICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4
dChydW4sIDAsIHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOworICAgICAgICBkZWx0YVggPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBn
bHlwaEJ1ZmZlcikud2lkdGgoKTsKIAogICAgIGlmICghZ2x5cGhCdWZmZXIuc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gRGFzaEFycmF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA4OTdjZDk3OGY4NC4uZjUwYjdjZDQ2ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMjAz
LDcgKzIwMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZW51bSBGb3JUZXh0RW1waGFzaXNP
ck5vdCB7IE5vdEZvclRleHRFbXBoYXNpcywgRm9yVGV4dEVtcGhhc2lzIH07CiAKLSAgICBmbG9h
dCBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25zdDsKKyAgICBGbG9hdFNpemUg
Z2x5cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQYXRoLCBjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJikgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0
aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNBbmRBZHZh
bmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBHbHlwaEJ1ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhh
c2lzKSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yU2ltcGxlVGV4dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29u
c3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKQEAgLTIx
OSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGNhbkV4cGFuZEFyb3VuZElk
ZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGlu
LXN0cmVhbSBhZHZhbmNlLgotICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1
ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsK
KyAgICBGbG9hdFNpemUgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBU
ZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4
dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJh
d0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRz
ID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRp
b25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5j
bHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggZGI2NTIzMzU4OWQuLjYxZTA3M2VjMDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKQEAgLTYz
LDYgKzYzLDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBvcGVyYXRvciBGbG9hdFNp
emUoKSBjb25zdCB7IHJldHVybiBGbG9hdFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpOyB9CisKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdseXBoQnVmZmVyQWR2
YW5jZT4gZGVjb2RlKERlY29kZXImKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388209</attachid>
            <date>2020-01-20 00:17:05 -0800</date>
            <delta_ts>2020-01-20 19:03:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205990-20200120171704.patch</filename>
            <type>text/plain</type>
            <size>17395</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYyZDU1MGMyZGNlMTI3
NGVlNmI5ZjI4M2VhZThiMDIwZTY0ZGJlMS4uNzcyNWU2YzBjNzc3YTJmOTkxMzk4OWM0ZTNhYmFj
MDBkMmMzODc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAxLTIwICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIEEgcGFydGlh
bGx5IHNlbGVjdGVkIFJUTCB0ZXh0IGlzIHBsYWNlZCBhdCBhIHdyb25nIHZlcnRpY2FsIHBvc2l0
aW9uIGlmIGl0IGhhcyBhIHZlcnRpY2FsIGluaXRpYWwgYWR2YW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9udENhc2NhZGU6OmdldEdseXBoc0Fu
ZEFkdmFuY2VzRm9yQ29tcGxleFRleHQgcmV0dXJuZWQgb25seSBYCisgICAgICAgIHBvc2l0aW9u
IG9mIHRoZSBmaXJzdCBnbHlwaCwgYnV0IFkgcG9zaXRpb24uCisKKyAgICAgICAgQmVjYXVzZSBH
bHlwaEJ1ZmZlciBpcyB1c2luZyBnbHlwaCBhZHZhbmNlcyBpbnN0ZWFkIGdseXBoCisgICAgICAg
IHBvc2l0aW9ucywgaXQncyBub3Qgc2ltcGxlIHRvIGdldCB0aGUgZmlyc3QgZ2x5cGggcG9zaXRp
b24gb2YgdGhlCisgICAgICAgIHBhcnQgb2YgYSBSVEwgdGV4dHMuCisgICAgICAgIEZvbnRDYXNj
YWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0IGlzIGNhbGN1bGF0aW5nIHRo
ZQorICAgICAgICBYIHBvc2l0aW9uIG9mIGl0IGJ5IHN1YnRyYWN0aW5nIHJpZ2h0IHNpZGUgcGFy
dCB3aWR0aCBmcm9tIHRoZQorICAgICAgICB0b3RhbCB3aWR0aC4gSXQgc2hvdWxkIGRvIHNhbWUg
Zm9yIFkgcG9zaXRpb24uCisKKyAgICAgICAgbWFjT1MgYW5kIGlPUyBwb3J0cyBkb24ndCB1c2Ug
dGhlIGNvZGUgdG8gZHJhdyBzZWxlY3RlZCB0ZXh0cy4KKworICAgICAgICBUZXN0OiBmYXN0L3Rl
eHQvaW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmg6IFJlcGxh
Y2VkIG1fdG90YWxXaWR0aCB3aXRoIG1fdG90YWxBZHZhbmNlLgorICAgICAgICAoV2ViQ29yZTo6
Q29tcGxleFRleHRDb250cm9sbGVyOjp0b3RhbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6dG90YWxBZHZhbmNlIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JUZXh0UnVuIGNvbnN0KTogQ2hhbmdlZCB0aGUgcmV0
dXJuIHR5cGUgZnJvbSBmbG9hdCB0byBGbG9hdFNpemUuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZHJhd1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dCBjb25zdCk6IENoYW5nZWQg
dGhlIHJldHVybiB0eXBlIGZyb20gZmxvYXQgdG8gRmxvYXRTaXplLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhS
ZWN0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2U6Om9wZXJhdG9yIEZsb2F0U2l6ZSBjb25zdCk6CisKIDIw
MjAtMDEtMTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdIERldmlydHVhbGl6ZSBGb3JtYXR0aW5nU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4
IDJkODU0Mzg0NDQwMmRhYTlkNDAwZDllY2E5MWZhMTNjNDBiZjg5ZDYuLmFiZGFkYmQ2YWYwNmQ2
YTc4Mzk2ZTliZTViN2RiNzk5ZWM0NzFlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtMTYz
LDcgKzE2Myw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpmaW5pc2hDb25zdHJ1Y3Rp
b24oKQogCiB1bnNpZ25lZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2l0aW9u
KGZsb2F0IGgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpCiB7Ci0gICAgaWYgKGggPj0gbV90
b3RhbFdpZHRoKQorICAgIGlmIChoID49IHRvdGFsV2lkdGgoKSkKICAgICAgICAgcmV0dXJuIG1f
cnVuLmx0cigpID8gbV9lbmQgOiAwOwogCiAgICAgaWYgKGggPCAwKQpAQCAtNzMzLDcgKzczMyw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygp
CiAgICAgICAgICAgICBGbG9hdFNpemUgYWR2YW5jZSA9IHRyZWF0QXNTcGFjZSA/IEZsb2F0U2l6
ZShzcGFjZVdpZHRoLCBhZHZhbmNlc1tpXS5oZWlnaHQoKSkgOiBhZHZhbmNlc1tpXTsKIAogICAg
ICAgICAgICAgaWYgKGNoID09ICdcdCcgJiYgbV9ydW4uYWxsb3dUYWJzKCkpCi0gICAgICAgICAg
ICAgICAgYWR2YW5jZS5zZXRXaWR0aChtX2ZvbnQudGFiV2lkdGgoZm9udCwgbV9ydW4udGFiU2l6
ZSgpLCBtX3J1bi54UG9zKCkgKyBtX3RvdGFsV2lkdGgpKTsKKyAgICAgICAgICAgICAgICBhZHZh
bmNlLnNldFdpZHRoKG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVu
LnhQb3MoKSArIHRvdGFsV2lkdGgoKSkpOwogICAgICAgICAgICAgZWxzZSBpZiAoRm9udENhc2Nh
ZGU6OnRyZWF0QXNaZXJvV2lkdGhTcGFjZShjaCkgJiYgIXRyZWF0QXNTcGFjZSkgewogICAgICAg
ICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgoMCk7CiAgICAgICAgICAgICAgICAgZ2x5cGggPSBm
b250LnNwYWNlR2x5cGgoKTsKQEAgLTc4NCw3ICs3ODQsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21wbGV4VGV4dFJ1bi5ncm93SW5pdGlhbEFkdmFuY2VIb3Jpem9udGFsbHko
bV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9hZGp1c3RlZEJhc2VB
ZHZhbmNlcy5sYXN0KCkuZXhwYW5kKG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHksIDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RvdGFsV2lkdGggKz0gbV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90b3RhbEFk
dmFuY2UuZXhwYW5kKG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHksIDApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChleHBhbmRSaWdodCkgewpAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgICAg
ICAgICAgICAgICAgIGFmdGVyRXhwYW5zaW9uID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIG1fdG90YWxXaWR0aCArPSBhZHZhbmNlLndpZHRoKCk7CisgICAgICAgICAgICBt
X3RvdGFsQWR2YW5jZSArPSBhZHZhbmNlOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogQ29tYmlu
aW5nIG1hcmtzIHNob3VsZCByZWNlaXZlIGEgdGV4dCBlbXBoYXNpcyBtYXJrIGlmIHRoZXkgYXJl
IGNvbWJpbmUgd2l0aCBhIHNwYWNlLgogICAgICAgICAgICAgaWYgKG1fZm9yVGV4dEVtcGhhc2lz
ICYmICghRm9udENhc2NhZGU6OmNhblJlY2VpdmVUZXh0RW1waGFzaXMoY2gpIHx8IChVX0dFVF9H
Q19NQVNLKGNoKSAmIFVfR0NfTV9NQVNLKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IGQ4ZjYzYmYy
MjU2N2Y1NDRjNWY2NTI1ZTJiN2UxN2ZjNGI3YjMwZjAuLjk1Y2ZkNDA4NTc1ZWFjYWJmM2U3Y2Ux
ZWUwZTA2OTBkYWM0NWM1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkBAIC02NSw3ICs2NSw4IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSB3aWR0aCBvZiBldmVyeXRoaW5nIHdlJ3ZlIGNvbnN1
bWVkIHNvIGZhci4KICAgICBmbG9hdCBydW5XaWR0aFNvRmFyKCkgY29uc3QgeyByZXR1cm4gbV9y
dW5XaWR0aFNvRmFyOyB9CiAKLSAgICBmbG9hdCB0b3RhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV90b3RhbFdpZHRoOyB9CisgICAgZmxvYXQgdG90YWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
dG90YWxBZHZhbmNlLndpZHRoKCk7IH0KKyAgICBGbG9hdFNpemUgdG90YWxBZHZhbmNlKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbEFkdmFuY2U7IH0KIAogICAgIGZsb2F0IG1pbkdseXBoQm91bmRp
bmdCb3hYKCkgY29uc3QgeyByZXR1cm4gbV9taW5HbHlwaEJvdW5kaW5nQm94WDsgfQogICAgIGZs
b2F0IG1heEdseXBoQm91bmRpbmdCb3hYKCkgY29uc3QgeyByZXR1cm4gbV9tYXhHbHlwaEJvdW5k
aW5nQm94WDsgfQpAQCAtMjE1LDcgKzIxNiw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9j
dXJyZW50Q2hhcmFjdGVyIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fZW5kIHsgMCB9OwogCi0gICAg
ZmxvYXQgbV90b3RhbFdpZHRoIHsgMCB9OworICAgIEZsb2F0U2l6ZSBtX3RvdGFsQWR2YW5jZTsK
ICAgICBmbG9hdCBtX3J1bldpZHRoU29GYXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9udW1HbHlw
aHNTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRSdW4geyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNWU1
ZDAzODYwNTQ2ZjYxMmU0NzVjY2Y3MDI0NWEzNDIyYjZiZjI1NC4uNDIwZDg3ZTIzNDMxNzA1YTk5
MTc1ZTgzOWRiMWZmNTlkZmE0NWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjczLDEwICsyNzMsMTAgQEAgdm9pZCBGb250
Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25z
dAogICAgIG1fcmVxdWlyZXNTaGFwaW5nID0gY29tcHV0ZVJlcXVpcmVzU2hhcGluZygpOwogfQog
Ci1mbG9hdCBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQYXRoIGNvZGVQ
YXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8s
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlcikgY29uc3QKK0Zsb2F0U2l6ZSBGb250Q2FzY2FkZTo6
Z2x5cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRS
dW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlcikgY29uc3QKIHsKICAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4KQotICAgICAg
ICByZXR1cm4gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8s
IGdseXBoQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHsgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JT
aW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyKSwgMCB9OwogICAgIHJldHVybiBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVm
ZmVyKTsKIH0KIApAQCAtMjg0LDE0ICsyODQsMTQgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAog
ewogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOwog
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IHN0YXJ0WCA9IHBvaW50Lngo
KSArIGdseXBoQnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aChydW4sIGZyb20sIHRvKSwgcnVuLCBm
cm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOworICAgIEZsb2F0UG9pbnQgc3RhcnRQb2lu
dCA9IHBvaW50ICsgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8p
LCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7CiAgICAgLy8gV2UgY291bGRu
J3QgZ2VuZXJhdGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4gR2l2ZSB1cC4KICAgICBpZiAoZ2x5
cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAvLyBEcmF3IHRoZSBn
bHlwaCBidWZmZXIgbm93IGF0IHRoZSBzdGFydGluZyBwb2ludCByZXR1cm5lZCBpbiBzdGFydFgu
Ci0gICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgcG9pbnQueSgpKTsKKyAgICBGbG9h
dFBvaW50IG9sZFN0YXJ0UG9pbnQoc3RhcnRQb2ludCk7CiAgICAgZHJhd0dseXBoQnVmZmVyKGNv
bnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24p
OwotICAgIHJldHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0WDsKKyAgICByZXR1cm4gc3RhcnRQ
b2ludC54KCkgLSBvbGRTdGFydFBvaW50LngoKTsKIH0KIAogdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CkBAIC0zMTcsNyArMzE3LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6
OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBs
ZXg7CiAgICAgCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxvYXQgc3RhcnRY
ID0gZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoVG9Vc2UsIHJ1biwgZnJvbSwgZGVzdGlu
YXRpb24sIGdseXBoQnVmZmVyKTsKKyAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSB0b0Zsb2F0
UG9pbnQoZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoVG9Vc2UsIHJ1biwgZnJvbSwgZGVz
dGluYXRpb24sIGdseXBoQnVmZmVyKSk7CiAgICAgLy8gV2UgY291bGRuJ3QgZ2VuZXJhdGUgYW55
IGdseXBocyBmb3IgdGhlIHJ1bi4gR2l2ZSB1cC4KICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMyNyw3ICszMjcsNiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxp
c3RGb3JUZXh0UnVuKEdyYQogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6
UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRl
KCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgfSk7CiAgICAgCi0gICAg
RmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgMCk7CiAgICAgZHJhd0dseXBoQnVmZmVyKHJl
Y29yZGluZ0NvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBjdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24pOwogICAgIHJldHVybiBkaXNwbGF5TGlzdDsKIH0KQEAgLTEzODMsOSArMTM4Miw5
IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lCiAgICAgcmV0dXJuIGluaXRpYWxBZHZhbmNlOwog
fQogCi1mbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1
ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykg
Y29uc3QKK0Zsb2F0U2l6ZSBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBo
YXNpcykgY29uc3QKIHsKLSAgICBmbG9hdCBpbml0aWFsQWR2YW5jZTsKKyAgICBGbG9hdFNpemUg
aW5pdGlhbEFkdmFuY2U7CiAKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigq
dGhpcywgcnVuLCBmYWxzZSwgMCwgZm9yVGV4dEVtcGhhc2lzKTsKICAgICBHbHlwaEJ1ZmZlciBk
dW1teUdseXBoQnVmZmVyOwpAQCAtMTM5MywyMSArMTM5MiwyMSBAQCBmbG9hdCBGb250Q2FzY2Fk
ZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4s
IHVuc2lnbgogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSh0bywgJmdseXBoQnVmZmVyKTsKIAogICAg
IGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgaWYgKHJ1bi5ydGwoKSkgewogICAgICAgICAvLyBFeHBsb2l0IHRo
ZSBmYWN0IHRoYXQgdGhlIHN1bSBvZiB0aGUgcGFpbnQgYWR2YW5jZXMgaXMgZXF1YWwgdG8KICAg
ICAgICAgLy8gdGhlIHN1bSBvZiB0aGUgbGF5b3V0IGFkdmFuY2VzLgotICAgICAgICBpbml0aWFs
QWR2YW5jZSA9IGNvbnRyb2xsZXIudG90YWxXaWR0aCgpOworICAgICAgICBpbml0aWFsQWR2YW5j
ZSA9IGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAgICAgaW5pdGlh
bEFkdmFuY2UgLT0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsKKyAgICAg
ICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSku
d2lkdGgoKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IGdseXBoQnVmZmVyLmFkdmFu
Y2VBdChpKTsKICAgICAgICAgZ2x5cGhCdWZmZXIucmV2ZXJzZSgwLCBnbHlwaEJ1ZmZlci5zaXpl
KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGluaXRpYWxBZHZhbmNlID0gZHVtbXlHbHlwaEJ1
ZmZlci5pbml0aWFsQWR2YW5jZSgpLndpZHRoKCk7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0g
ZHVtbXlHbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZHVtbXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGlu
aXRpYWxBZHZhbmNlICs9IGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7Cisg
ICAgICAgICAgICBpbml0aWFsQWR2YW5jZSArPSBkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChp
KTsKICAgICB9CiAKICAgICByZXR1cm4gaW5pdGlhbEFkdmFuY2U7CkBAIC0xNDM2LDcgKzE0MzUs
NyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZwogewogICAgIC8vIERyYXcgZWFjaCBjb250aWd1
b3VzIHJ1biBvZiBnbHlwaHMgdGhhdCB1c2UgdGhlIHNhbWUgZm9udCBkYXRhLgogICAgIGNvbnN0
IEZvbnQqIGZvbnREYXRhID0gZ2x5cGhCdWZmZXIuZm9udEF0KDApOwotICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSAtIGdseXBoQnVmZmVyLmluaXRpYWxBZHZh
bmNlKCkuaGVpZ2h0KCkpOworICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChwb2ludCk7CiAgICAg
ZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS53
aWR0aCgpOwogICAgIGZsb2F0IG5leHRZID0gc3RhcnRQb2ludC55KCkgKyBnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoMCkuaGVpZ2h0KCk7CiAgICAgdW5zaWduZWQgbGFzdEZyb20gPSAwOwpAQCAtMTYz
NiwxMiArMTYzNSwxMiBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmlu
Z0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogdm9pZCBGb250Q2FzY2Fk
ZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAogewogICAg
IEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlID0gZ2V0
R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZl
ciwgRm9yVGV4dEVtcGhhc2lzKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlciwgRm9y
VGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBoQnVmZmVyLCBt
YXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2ludC55KCkpKTsK
KyAgICBkcmF3RW1waGFzaXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFyaywgcG9pbnQg
KyBpbml0aWFsQWR2YW5jZSk7CiB9CiAKIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0YXRlIHsKQEAg
LTE3NzksNyArMTc3OCw3IEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50ZXJz
ZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBpZiAoY29kZVBh
dGgocnVuKSAhPSBGb250Q2FzY2FkZTo6Q29tcGxleCkKICAgICAgICAgZGVsdGFYID0gZ2V0R2x5
cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1
ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0Zv
ckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7CisgICAgICAg
IGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCAwLCBydW4u
bGVuZ3RoKCksIGdseXBoQnVmZmVyKS53aWR0aCgpOwogCiAgICAgaWYgKCFnbHlwaEJ1ZmZlci5z
aXplKCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDg5N2NkOTc4Zjg0MmVjMTgzMjM2
YmMwNjI3NjlhOTk0ZjgzODlkYWYuLmY1MGI3Y2Q0NmZiOWE1ZjY3OWU1MzY2ZWI5MzJmNTU1Njc2
MDc4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuaApAQCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZW51bSBGb3JU
ZXh0RW1waGFzaXNPck5vdCB7IE5vdEZvclRleHRFbXBoYXNpcywgRm9yVGV4dEVtcGhhc2lzIH07
CiAKLSAgICBmbG9hdCBnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0IFRleHRS
dW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25zdDsKKyAg
ICBGbG9hdFNpemUgZ2x5cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQYXRoLCBjb25zdCBUZXh0UnVu
JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJikgY29uc3Q7CiAgICAg
Ly8gUmV0dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90
Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yU2lt
cGxlVGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmlu
ZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBj
b25zdDsKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGNhbkV4
cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCk7CiAKICAgICAvLyBSZXR1cm5zIHRo
ZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgotICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFu
Y2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBHbHlwaEJ1ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhh
c2lzKSBjb25zdDsKKyAgICBGbG9hdFNpemUgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4
VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVm
ZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0Owog
ICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKICAgICBmbG9hdCBmbG9hdFdp
ZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBm
YWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKICAgICBpbnQgb2Zm
c2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRp
b24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggZGI2NTIzMzU4OWQwMWNkNzNj
MjMxMWExMjA3OTk4ZDE2MDA0NmU1Mi4uNjFlMDczZWMwMDBmMTRjNzUxM2FkZDAyNGFiZTJiN2Fl
ZWE4ZTM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1
ZmZlci5oCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgb3Bl
cmF0b3IgRmxvYXRTaXplKCkgY29uc3QgeyByZXR1cm4gRmxvYXRTaXplKHdpZHRoKCksIGhlaWdo
dCgpKTsgfQorCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxH
bHlwaEJ1ZmZlckFkdmFuY2U+IGRlY29kZShEZWNvZGVyJik7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwN2I1YWUyYjRm
YTMzMWNiNDZmMjJhMzJkYzEwMTFkNGJmZTIyYzM2Li5iNDVjYTExMGQ2ODFkNzIwMGRjZmQwM2Yz
ZWRlNmM4NWUzOTNiOGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDEtMjAgIEZ1amlp
IEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQSBwYXJ0aWFs
bHkgc2VsZWN0ZWQgUlRMIHRleHQgaXMgcGxhY2VkIGF0IGEgd3JvbmcgdmVydGljYWwgcG9zaXRp
b24gaWYgaXQgaGFzIGEgdmVydGljYWwgaW5pdGlhbCBhZHZhbmNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5OTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbml0aWFsLWFkdmFu
Y2Utc2VsZWN0ZWQtdGV4dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Rl
eHQvaW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQuaHRtbDogQWRkZWQuCisKIDIwMjAtMDEt
MTkgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBzY3JvbGwgYmVoYXZpb3IgcmVsaWVzIG9uIFNjcm9sbEFuaW1hdGlvbiBvZiB0
aGUgV2ViIHByb2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFs
LWFkdmFuY2Utc2VsZWN0ZWQtdGV4dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTg4MzJjM2UwOGJlNTRhM2MwOTU3Y2IwOWM0NGFmNTU0ZjcxOGNlYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0ZWQtdGV4
dC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxl
PgorICAgIGRpdiB7CisgICAgICAgIGZvbnQtc2l6ZTogMjAwcHg7CisgICAgfQorPC9zdHlsZT4K
KzxzY3JpcHQ+CisgICAgb25sb2FkID0gKCkgPT4geworICAgICAgICBjb25zdCBzcGFuID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignZGl2IHNwYW4nKTsKKyAgICAgICAgY29uc3Qgc2VsZWN0aW9u
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhzcGFuKTsK
KyAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOworICAgICAgICBzZWxlY3Rpb24u
YWRkUmFuZ2UocmFuZ2UpOworICAgIH0KKzwvc2NyaXB0PgorCis8ZGl2PjxzcGFuPiYjeDYyODst
JiN4MDYyODsmI3gwNjUxOzwvc3Bhbj4tJiN4NjI4OzwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQvaW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMGQxOTZmZDQwMWExZTJmMjNiMWZmZDliNWYyNDE0NmE1NTEzNDFmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3Rl
ZC10ZXh0Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+Cisg
ICAgZGl2IHsKKyAgICAgICAgZm9udC1zaXplOiAyMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNj
cmlwdD4KKyAgICBvbmxvYWQgPSAoKSA9PiB7CisgICAgICAgIGNvbnN0IHRleHROb2RlID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignZGl2JykuY2hpbGROb2Rlc1swXTsKKyAgICAgICAgY29uc3Qg
c2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICBjb25zdCByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIHJhbmdlLnNldFN0YXJ0KHRleHROb2Rl
LCAwKTsKKyAgICAgICAgcmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA0KTsKKyAgICAgICAgc2VsZWN0
aW9uLnJlbW92ZUFsbFJhbmdlcygpOworICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2Up
OworICAgIH0KKzwvc2NyaXB0PgorCis8ZGl2PiYjeDYyODstJiN4MDYyODsmI3gwNjUxOy0mI3g2
Mjg7PC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388271</attachid>
            <date>2020-01-20 19:03:49 -0800</date>
            <delta_ts>2020-01-20 19:50:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205990-20200121120348.patch</filename>
            <type>text/plain</type>
            <size>24650</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNjNTE2ZGM4NDU4Njdi
YjVlYjg1YjgxZDY2ZGE1NTYwNTEwOWQwYy4uODlhNDQ2NzI3NjMwZmYwYjk2MGYxYzJkMzRjZTE3
MzMzZTQ0ZmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTAxLTIwICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIEEgcGFydGlh
bGx5IHNlbGVjdGVkIFJUTCB0ZXh0IGlzIHBsYWNlZCBhdCBhIHdyb25nIHZlcnRpY2FsIHBvc2l0
aW9uIGlmIGl0IGhhcyBhIHZlcnRpY2FsIGluaXRpYWwgYWR2YW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yQ29tcGxleFRleHQgcmV0dXJuZWQgb25seSBYCisgICAgICAgIHBvc2l0aW9uIG9m
IHRoZSBmaXJzdCBnbHlwaCwgYnV0IFkgcG9zaXRpb24uCisKKyAgICAgICAgQmVjYXVzZSBHbHlw
aEJ1ZmZlciBpcyB1c2luZyBnbHlwaCBhZHZhbmNlcyBpbnN0ZWFkIGdseXBoCisgICAgICAgIHBv
c2l0aW9ucywgaXQncyBub3Qgc2ltcGxlIHRvIGdldCB0aGUgZmlyc3QgZ2x5cGggcG9zaXRpb24g
b2YgdGhlCisgICAgICAgIHBhcnQgb2YgYSBSVEwgdGV4dHMuCisgICAgICAgIEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0IGlzIGNhbGN1bGF0aW5nIHRoZQor
ICAgICAgICBYIHBvc2l0aW9uIG9mIGl0IGJ5IHN1YnRyYWN0aW5nIHJpZ2h0IHNpZGUgcGFydCB3
aWR0aCBmcm9tIHRoZQorICAgICAgICB0b3RhbCB3aWR0aC4gSXQgc2hvdWxkIGRvIHNhbWUgZm9y
IFkgcG9zaXRpb24uCisKKyAgICAgICAgbWFjT1MgYW5kIGlPUyBwb3J0cyBkb24ndCB1c2UgdGhl
IGNvZGUgdG8gZHJhdyBzZWxlY3RlZCB0ZXh0cy4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQv
aW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBsZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmg6IFJlcGxhY2Vk
IG1fdG90YWxXaWR0aCB3aXRoIG1fdG90YWxBZHZhbmNlLgorICAgICAgICAoV2ViQ29yZTo6Q29t
cGxleFRleHRDb250cm9sbGVyOjp0b3RhbFdpZHRoIGNvbnN0KTogUmVtb3ZlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6dG90YWxBZHZhbmNlIGNvbnN0KTogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmdseXBoQnVmZmVyRm9yVGV4dFJ1biBjb25zdCk6IENo
YW5nZWQgdGhlIHJldHVybiB0eXBlIGZyb20gZmxvYXQgdG8gRmxvYXRTaXplLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQgY29u
c3QpOiBDaGFuZ2VkIHRoZSByZXR1cm4gdHlwZSBmcm9tIGZsb2F0IHRvIEZsb2F0U2l6ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZv
ckNvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvRmxvYXRTaXplKTog
QWRkZWQuCisKIDIwMjAtMDEtMjAgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4K
IAogICAgICAgICBVcGRhdGUgc3RhdHVzIG9mIFJlc2l6ZSBPYnNlcnZlciB0byAiU3VwcG9ydGVk
IEluIFByZXZpZXciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCAyZDg1NDM4NDQ0MDJkYWE5ZDQw
MGQ5ZWNhOTFmYTEzYzQwYmY4OWQ2Li45MDM0ZDY3MzZjODUwZGJmZTI3MGVkNmVhOTRiM2QxMWE3
NjY2ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIENv
bXBsZXhUZXh0Q29udHJvbGxlcjo6ZmluaXNoQ29uc3RydWN0aW9uKCkKIAogdW5zaWduZWQgQ29t
cGxleFRleHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1
ZGVQYXJ0aWFsR2x5cGhzKQogewotICAgIGlmIChoID49IG1fdG90YWxXaWR0aCkKKyAgICBpZiAo
aCA+PSBtX3RvdGFsQWR2YW5jZS53aWR0aCgpKQogICAgICAgICByZXR1cm4gbV9ydW4ubHRyKCkg
PyBtX2VuZCA6IDA7CiAKICAgICBpZiAoaCA8IDApCkBAIC03MzMsNyArNzMzLDcgQEAgdm9pZCBD
b21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAg
ICAgIEZsb2F0U2l6ZSBhZHZhbmNlID0gdHJlYXRBc1NwYWNlID8gRmxvYXRTaXplKHNwYWNlV2lk
dGgsIGFkdmFuY2VzW2ldLmhlaWdodCgpKSA6IGFkdmFuY2VzW2ldOwogCiAgICAgICAgICAgICBp
ZiAoY2ggPT0gJ1x0JyAmJiBtX3J1bi5hbGxvd1RhYnMoKSkKLSAgICAgICAgICAgICAgICBhZHZh
bmNlLnNldFdpZHRoKG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVu
LnhQb3MoKSArIG1fdG90YWxXaWR0aCkpOworICAgICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lk
dGgobV9mb250LnRhYldpZHRoKGZvbnQsIG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsg
bV90b3RhbEFkdmFuY2Uud2lkdGgoKSkpOwogICAgICAgICAgICAgZWxzZSBpZiAoRm9udENhc2Nh
ZGU6OnRyZWF0QXNaZXJvV2lkdGhTcGFjZShjaCkgJiYgIXRyZWF0QXNTcGFjZSkgewogICAgICAg
ICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgoMCk7CiAgICAgICAgICAgICAgICAgZ2x5cGggPSBm
b250LnNwYWNlR2x5cGgoKTsKQEAgLTc4NCw3ICs3ODQsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21wbGV4VGV4dFJ1bi5ncm93SW5pdGlhbEFkdmFuY2VIb3Jpem9udGFsbHko
bV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9hZGp1c3RlZEJhc2VB
ZHZhbmNlcy5sYXN0KCkuZXhwYW5kKG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHksIDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RvdGFsV2lkdGggKz0gbV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90b3RhbEFk
dmFuY2UuZXhwYW5kKG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHksIDApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChleHBhbmRSaWdodCkgewpAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgICAg
ICAgICAgICAgICAgIGFmdGVyRXhwYW5zaW9uID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIG1fdG90YWxXaWR0aCArPSBhZHZhbmNlLndpZHRoKCk7CisgICAgICAgICAgICBt
X3RvdGFsQWR2YW5jZSArPSBhZHZhbmNlOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogQ29tYmlu
aW5nIG1hcmtzIHNob3VsZCByZWNlaXZlIGEgdGV4dCBlbXBoYXNpcyBtYXJrIGlmIHRoZXkgYXJl
IGNvbWJpbmUgd2l0aCBhIHNwYWNlLgogICAgICAgICAgICAgaWYgKG1fZm9yVGV4dEVtcGhhc2lz
ICYmICghRm9udENhc2NhZGU6OmNhblJlY2VpdmVUZXh0RW1waGFzaXMoY2gpIHx8IChVX0dFVF9H
Q19NQVNLKGNoKSAmIFVfR0NfTV9NQVNLKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IGQ4ZjYzYmYy
MjU2N2Y1NDRjNWY2NTI1ZTJiN2UxN2ZjNGI3YjMwZjAuLmExZDZlMzZhZGM0Njg1MTMzYTUwMTRi
ZGZkZmVjMjIwOTc0YjQ1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSB3aWR0aCBvZiBldmVyeXRoaW5nIHdlJ3ZlIGNvbnN1
bWVkIHNvIGZhci4KICAgICBmbG9hdCBydW5XaWR0aFNvRmFyKCkgY29uc3QgeyByZXR1cm4gbV9y
dW5XaWR0aFNvRmFyOyB9CiAKLSAgICBmbG9hdCB0b3RhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV90b3RhbFdpZHRoOyB9CisgICAgRmxvYXRTaXplIHRvdGFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdG90YWxBZHZhbmNlOyB9CiAKICAgICBmbG9hdCBtaW5HbHlwaEJvdW5kaW5nQm94WCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWluR2x5cGhCb3VuZGluZ0JveFg7IH0KICAgICBmbG9hdCBtYXhH
bHlwaEJvdW5kaW5nQm94WCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4R2x5cGhCb3VuZGluZ0JveFg7
IH0KQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY3VycmVudENo
YXJhY3RlciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2VuZCB7IDAgfTsKIAotICAgIGZsb2F0IG1f
dG90YWxXaWR0aCB7IDAgfTsKKyAgICBGbG9hdFNpemUgbV90b3RhbEFkdmFuY2U7CiAgICAgZmxv
YXQgbV9ydW5XaWR0aFNvRmFyIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbnVtR2x5cGhzU29GYXIg
eyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50UnVuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDVlNWQwMzg2MDU0
NmY2MTJlNDc1Y2NmNzAyNDVhMzQyMmI2YmYyNTQuLmZiZTA5NmQ2ZjcyMmY2NDMwNzA5OGU2ZjM1
MWEzNGRjMDU2NWE0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI3MywxMCArMjczLDEwIEBAIHZvaWQgRm9udENhc2NhZGU6
OnVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKICAgICBt
X3JlcXVpcmVzU2hhcGluZyA9IGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKTsKIH0KIAotZmxvYXQg
Rm9udENhc2NhZGU6OmdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCBjb2RlUGF0aFRvVXNl
LCBjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1
ZmZlciYgZ2x5cGhCdWZmZXIpIGNvbnN0CitGbG9hdFNpemUgRm9udENhc2NhZGU6OmdseXBoQnVm
ZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0UnVuJiBydW4s
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIpIGNv
bnN0CiB7CiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkKLSAgICAgICAgcmV0dXJu
IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1
ZmZlcik7CisgICAgICAgIHJldHVybiB7IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4
dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlciksIDAgfTsKICAgICByZXR1cm4gZ2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlcik7CiB9
CiAKQEAgLTI4NCwxNCArMjg0LDE0IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKIHsKICAgICB1
bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKICAgICBHbHlw
aEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBmbG9hdCBzdGFydFggPSBwb2ludC54KCkgKyBnbHlw
aEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVz
dGluYXRpb24sIGdseXBoQnVmZmVyKTsKKyAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSBwb2lu
dCArIGdseXBoQnVmZmVyRm9yVGV4dFJ1bihjb2RlUGF0aChydW4sIGZyb20sIHRvKSwgcnVuLCBm
cm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOwogICAgIC8vIFdlIGNvdWxkbid0IGdlbmVy
YXRlIGFueSBnbHlwaHMgZm9yIHRoZSBydW4uIEdpdmUgdXAuCiAgICAgaWYgKGdseXBoQnVmZmVy
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gRHJhdyB0aGUgZ2x5cGggYnVm
ZmVyIG5vdyBhdCB0aGUgc3RhcnRpbmcgcG9pbnQgcmV0dXJuZWQgaW4gc3RhcnRYLgotICAgIEZs
b2F0UG9pbnQgc3RhcnRQb2ludChzdGFydFgsIHBvaW50LnkoKSk7CisgICAgZmxvYXQgb2xkU3Rh
cnRYID0gc3RhcnRQb2ludC54KCk7CiAgICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIGdseXBo
QnVmZmVyLCBzdGFydFBvaW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwotICAgIHJldHVy
biBzdGFydFBvaW50LngoKSAtIHN0YXJ0WDsKKyAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBv
bGRTdGFydFg7CiB9CiAKIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8
dW5zaWduZWQ+IHRvKSBjb25zdApAQCAtMzE3LDcgKzMxNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRS
dW4oR3JhCiAgICAgICAgIGNvZGVQYXRoVG9Vc2UgPSBDb21wbGV4OwogICAgIAogICAgIEdseXBo
QnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IHN0YXJ0WCA9IGdseXBoQnVmZmVyRm9yVGV4
dFJ1bihjb2RlUGF0aFRvVXNlLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZlcik7
CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gdG9GbG9hdFBvaW50KGdseXBoQnVmZmVyRm9y
VGV4dFJ1bihjb2RlUGF0aFRvVXNlLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBnbHlwaEJ1ZmZl
cikpOwogICAgIC8vIFdlIGNvdWxkbid0IGdlbmVyYXRlIGFueSBnbHlwaHMgZm9yIHRoZSBydW4u
IEdpdmUgdXAuCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMjcsNyArMzI3LDYgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlz
dENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZm
aW5lVHJhbnNmb3JtKCkpOwogICAgIH0pOwogICAgIAotICAgIEZsb2F0UG9pbnQgc3RhcnRQb2lu
dChzdGFydFgsIDApOwogICAgIGRyYXdHbHlwaEJ1ZmZlcihyZWNvcmRpbmdDb250ZXh0LCBnbHlw
aEJ1ZmZlciwgc3RhcnRQb2ludCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKICAgICByZXR1
cm4gZGlzcGxheUxpc3Q7CiB9CkBAIC0xMzgzLDkgKzEzODIsOSBAQCBmbG9hdCBGb250Q2FzY2Fk
ZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW5zaWduZQogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAotZmxvYXQgRm9udENhc2Nh
ZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVu
LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBG
b3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitGbG9hdFNpemUgRm9u
dENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CiB7Ci0gICAg
ZmxvYXQgaW5pdGlhbEFkdmFuY2U7CisgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGluaXRpYWxBZHZh
bmNlOwogCiAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIoKnRoaXMsIHJ1biwg
ZmFsc2UsIDAsIGZvclRleHRFbXBoYXNpcyk7CiAgICAgR2x5cGhCdWZmZXIgZHVtbXlHbHlwaEJ1
ZmZlcjsKQEAgLTEzOTMsMjQgKzEzOTIsMjQgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBo
c0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ24KICAg
ICBjb250cm9sbGVyLmFkdmFuY2UodG8sICZnbHlwaEJ1ZmZlcik7CiAKICAgICBpZiAoZ2x5cGhC
dWZmZXIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIGlmIChydW4ucnRsKCkpIHsKICAgICAgICAgLy8gRXhwbG9pdCB0aGUgZmFjdCB0aGF0
IHRoZSBzdW0gb2YgdGhlIHBhaW50IGFkdmFuY2VzIGlzIGVxdWFsIHRvCiAgICAgICAgIC8vIHRo
ZSBzdW0gb2YgdGhlIGxheW91dCBhZHZhbmNlcy4KLSAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBj
b250cm9sbGVyLnRvdGFsV2lkdGgoKTsKKyAgICAgICAgaW5pdGlhbEFkdmFuY2UgPSBjb250cm9s
bGVyLnRvdGFsQWR2YW5jZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZHVt
bXlHbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09
IGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7CisgICAgICAgICAgICBpbml0
aWFsQWR2YW5jZSAtPSBkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgaW5pdGlhbEFkdmFuY2UgLT0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpLndpZHRoKCk7Cisg
ICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAg
ICAgICAgIGdseXBoQnVmZmVyLnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKICAgICB9
IGVsc2UgewotICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhCdWZmZXIuaW5pdGlh
bEFkdmFuY2UoKS53aWR0aCgpOworICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5cGhC
dWZmZXIuaW5pdGlhbEFkdmFuY2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGR1bW15R2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5j
ZSArPSBkdW1teUdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICAgICAg
aW5pdGlhbEFkdmFuY2UgKz0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGluaXRpYWxBZHZhbmNlOworICAgIHJldHVybiB0b0Zsb2F0U2l6ZShpbml0
aWFsQWR2YW5jZSk7CiB9CiAKIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9y
U2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdApAQCAtMTQzNiw3ICsxNDM1LDcgQEAgdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
R2x5cGhCdWZmZXImIGcKIHsKICAgICAvLyBEcmF3IGVhY2ggY29udGlndW91cyBydW4gb2YgZ2x5
cGhzIHRoYXQgdXNlIHRoZSBzYW1lIGZvbnQgZGF0YS4KICAgICBjb25zdCBGb250KiBmb250RGF0
YSA9IGdseXBoQnVmZmVyLmZvbnRBdCgwKTsKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQocG9p
bnQueCgpLCBwb2ludC55KCkgLSBnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpLmhlaWdodCgp
KTsKKyAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSBwb2ludDsKICAgICBmbG9hdCBuZXh0WCA9
IHN0YXJ0UG9pbnQueCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLndpZHRoKCk7CiAgICAg
ZmxvYXQgbmV4dFkgPSBzdGFydFBvaW50LnkoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgwKS5o
ZWlnaHQoKTsKICAgICB1bnNpZ25lZCBsYXN0RnJvbSA9IDA7CkBAIC0xNTMwLDkgKzE1MjksOSBA
QCBmbG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICBnbHlwaE92ZXJmbG93LT50b3AgPSBz
dGQ6Om1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRvcCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5
cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBm
b250TWV0cmljcygpLmFzY2VudCgpKSk7CiAgICAgICAgIGdseXBoT3ZlcmZsb3ctPmJvdHRvbSA9
IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBjZWlsZihjb250cm9sbGVyLm1h
eEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAw
IDogZm9udE1ldHJpY3MoKS5kZXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+bGVm
dCA9IHN0ZDo6bWF4PGludD4oMCwgY2VpbGYoLWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0Jv
eFgoKSkpOwotICAgICAgICBnbHlwaE92ZXJmbG93LT5yaWdodCA9IHN0ZDo6bWF4PGludD4oMCwg
Y2VpbGYoY29udHJvbGxlci5tYXhHbHlwaEJvdW5kaW5nQm94WCgpIC0gY29udHJvbGxlci50b3Rh
bFdpZHRoKCkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+cmlnaHQgPSBzdGQ6Om1heDxpbnQ+
KDAsIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGluZ0JveFgoKSAtIGNvbnRyb2xsZXIu
dG90YWxBZHZhbmNlKCkud2lkdGgoKSkpOwogICAgIH0KLSAgICByZXR1cm4gY29udHJvbGxlci50
b3RhbFdpZHRoKCk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgo
KTsKIH0KIAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclNpbXBsZVRl
eHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3QKQEAgLTE1NjMsNyArMTU2Miw3IEBAIHZvaWQgRm9u
dENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIExheW91dFJlCiAgICAgZmxvYXQgYWZ0ZXJXaWR0aCA9IGNvbnRyb2xsZXIucnVuV2lk
dGhTb0ZhcigpOwogCiAgICAgaWYgKHJ1bi5ydGwoKSkKLSAgICAgICAgc2VsZWN0aW9uUmVjdC5t
b3ZlKGNvbnRyb2xsZXIudG90YWxXaWR0aCgpIC0gYWZ0ZXJXaWR0aCwgMCk7CisgICAgICAgIHNl
bGVjdGlvblJlY3QubW92ZShjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpLndpZHRoKCkgLSBhZnRl
cldpZHRoLCAwKTsKICAgICBlbHNlCiAgICAgICAgIHNlbGVjdGlvblJlY3QubW92ZShiZWZvcmVX
aWR0aCwgMCk7CiAgICAgc2VsZWN0aW9uUmVjdC5zZXRXaWR0aChMYXlvdXRVbml0Ojpmcm9tRmxv
YXRDZWlsKGFmdGVyV2lkdGggLSBiZWZvcmVXaWR0aCkpOwpAQCAtMTYzNiwxMiArMTYzNSwxMiBA
QCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJhY3RlclNlcXVl
bmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZQogdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRS
dW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGds
eXBoQnVmZmVyOwotICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5j
ZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhh
c2lzKTsKKyAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JD
b21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsK
IAogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBoQnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50
KHBvaW50LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2ludC55KCkpKTsKKyAgICBkcmF3RW1waGFz
aXNNYXJrcyhjb250ZXh0LCBnbHlwaEJ1ZmZlciwgbWFyaywgcG9pbnQgKyBpbml0aWFsQWR2YW5j
ZSk7CiB9CiAKIHN0cnVjdCBHbHlwaEl0ZXJhdGlvblN0YXRlIHsKQEAgLTE3NzksNyArMTc3OCw3
IEBAIERhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0
KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBpZiAoY29kZVBhdGgocnVuKSAhPSBGb250
Q2FzY2FkZTo6Q29tcGxleCkKICAgICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNG
b3JTaW1wbGVUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7CiAgICAgZWxz
ZQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1
biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlcik7CisgICAgICAgIGRlbHRhWCA9IGdldEds
eXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBo
QnVmZmVyKS53aWR0aCgpOwogCiAgICAgaWYgKCFnbHlwaEJ1ZmZlci5zaXplKCkpCiAgICAgICAg
IHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oCmluZGV4IDg5N2NkOTc4Zjg0MmVjMTgzMjM2YmMwNjI3NjlhOTk0Zjgz
ODlkYWYuLmY1MGI3Y2Q0NmZiOWE1ZjY3OWU1MzY2ZWI5MzJmNTU1Njc2MDc4ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMjAzLDcg
KzIwMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZW51bSBGb3JUZXh0RW1waGFzaXNPck5v
dCB7IE5vdEZvclRleHRFbXBoYXNpcywgRm9yVGV4dEVtcGhhc2lzIH07CiAKLSAgICBmbG9hdCBn
bHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKSBjb25zdDsKKyAgICBGbG9hdFNpemUgZ2x5
cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQYXRoLCBjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJikgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0aGUg
aW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNBbmRBZHZhbmNl
c0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRv
LCBHbHlwaEJ1ZmZlciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lz
KSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yU2ltcGxlVGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKQEAgLTIxOSw3
ICsyMTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGNhbkV4cGFuZEFyb3VuZElkZW9n
cmFwaHNJbkNvbXBsZXhUZXh0KCk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0
cmVhbSBhZHZhbmNlLgotICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRl
eHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZl
ciYsIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKKyAg
ICBGbG9hdFNpemUgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0
UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVt
cGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIHRvKSBjb25zdDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yQ29tcGxleFRl
eHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0g
MCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25G
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoQnVmZmVyLmgKaW5kZXggZGI2NTIzMzU4OWQwMWNkNzNjMjMxMWExMjA3OTk4ZDE2
MDA0NmU1Mi4uMzZjOGZiZDcxNGJlMzQxNDkzMmIyZmZkYzE5NGRlNmU2ZDJhNmI4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC05OCw2
ICs5OCwxMSBAQCBPcHRpb25hbDxHbHlwaEJ1ZmZlckFkdmFuY2U+IEdseXBoQnVmZmVyQWR2YW5j
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB0eXBlZGVmIEZsb2F0U2l6ZSBHbHlwaEJ1ZmZl
ckFkdmFuY2U7CiAjZW5kaWYKIAoraW5saW5lIEZsb2F0U2l6ZSB0b0Zsb2F0U2l6ZShjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UmIGEpCit7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCks
IGEuaGVpZ2h0KCkpOworfQorCiBjbGFzcyBHbHlwaEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mb250cy5pc0VtcHR5KCk7IH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYjM2ZGZhNTRkMDc4
Mjk4ZDJjMzUyMGJjOWE2NTdiMmUyODZhZjk5Li4zOTI4N2VmOWZiNzkyYjBkYjk4NWMzMDlmYjhl
NTZmNzBhMmNmMGJmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDEtMjAgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQSBwYXJ0aWFsbHkgc2VsZWN0ZWQgUlRM
IHRleHQgaXMgcGxhY2VkIGF0IGEgd3JvbmcgdmVydGljYWwgcG9zaXRpb24gaWYgaXQgaGFzIGEg
dmVydGljYWwgaW5pdGlhbCBhZHZhbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDU5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwOgorICAgICAgICBSZXBsYWNlZCBhbGwgImNvbnRyb2xsZXIudG90YWxXaWR0
aCgpIiB3aXRoICJjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpLndpZHRoKCkiLgorCiAyMDIwLTAx
LTIwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI1NDc4OCk6IG1vemlsbGEtdGVzdHMueWFtbC9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTkx
NjMzLmpzLm1vemlsbGEgZmFpbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggOTI2OGVmYjY4
M2JlZjUxNTY2NjhhMTk3ODU5ZTY1NGZlYTcxM2QwYS4uNGMyYzQ5MjJhNmYxMmUwOTkwOTYyYzQ2
ZDllNWI3NjVlNGJhNTQ4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExl
ZnRSdW5JblJUTCkKICAgICBmbG9hdCB0b3RhbFdpZHRoID0gMDsKICAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IGFkdmFuY2VzLnNpemUoKTsgKytpKQogICAgICAgICB0b3RhbFdpZHRoICs9IGFk
dmFuY2VzW2ldLndpZHRoKCk7Ci0gICAgRVhQRUNUX05FQVIoY29udHJvbGxlci50b3RhbFdpZHRo
KCksIHNwYWNlV2lkdGggKyB0b3RhbFdpZHRoLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGNv
bnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgc3BhY2VXaWR0aCArIHRvdGFsV2lkdGgs
IDAuMDAwMSk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgRVhQRUNUX05FQVIo
Y29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5h
ZHZhbmNlKDAsICZnbHlwaEJ1ZmZlcik7CkBAIC0xMTUsNyArMTE1LDcgQEAgVEVTVF9GKENvbXBs
ZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCiAgICAgZmxvYXQgdG90
YWxXaWR0aCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBhZHZhbmNlcy5zaXplKCk7
ICsraSkKICAgICAgICAgdG90YWxXaWR0aCArPSBhZHZhbmNlc1tpXS53aWR0aCgpOwotICAgIEVY
UEVDVF9ORUFSKGNvbnRyb2xsZXIudG90YWxXaWR0aCgpLCB0b3RhbFdpZHRoLCAwLjAwMDEpOwor
ICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgdG90YWxX
aWR0aCwgMC4wMDAxKTsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBFWFBFQ1Rf
TkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9s
bGVyLmFkdmFuY2UoMCwgJmdseXBoQnVmZmVyKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBURVNUX0Yo
Q29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRS
KQogICAgIHJ1bnMuYXBwZW5kKFdURk1vdmUocnVuMikpOwogICAgIENvbXBsZXhUZXh0Q29udHJv
bGxlciBjb250cm9sbGVyKGZvbnQsIHRleHRSdW4sIHJ1bnMpOwogCi0gICAgRVhQRUNUX05FQVIo
Y29udHJvbGxlci50b3RhbFdpZHRoKCksIHNwYWNlV2lkdGggKyA3Ni4zNDc2NTYgKyBpbml0aWFs
QWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIudG90
YWxBZHZhbmNlKCkud2lkdGgoKSwgc3BhY2VXaWR0aCArIDc2LjM0NzY1NiArIGluaXRpYWxBZHZh
bmNlLndpZHRoKCksIDAuMDAwMSk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAg
RVhQRUNUX05FQVIoY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAg
Y29udHJvbGxlci5hZHZhbmNlKDAsICZnbHlwaEJ1ZmZlcik7CkBAIC0xOTksNyArMTk5LDcgQEAg
VEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5MVFIpCiAg
ICAgcnVucy5hcHBlbmQoV1RGTW92ZShydW4pKTsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIg
Y29udHJvbGxlcihmb250LCB0ZXh0UnVuLCBydW5zKTsKIAotICAgIEVYUEVDVF9ORUFSKGNvbnRy
b2xsZXIudG90YWxXaWR0aCgpLCA3Ni4zNDc2NTYgKyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAw
LjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgo
KSwgNzYuMzQ3NjU2ICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwgMC4wMDAxKTsKICAgICBHbHlw
aEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRo
U29GYXIoKSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoMCwgJmdseXBoQnVm
ZmVyKTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVz
dCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykKICAgICBDb21wbGV4VGV4dENvbnRyb2xs
ZXIgY29udHJvbGxlcihmb250LCB0ZXh0UnVuLCBydW5zKTsKIAogICAgIGZsb2F0IHRvdGFsV2lk
dGggPSAxNC4wMzk3ODMwMDE4MDgzICsgMTIuMCArIDQzLjgxMTkzNDkwMDU0MjU7Ci0gICAgRVhQ
RUNUX05FQVIoY29udHJvbGxlci50b3RhbFdpZHRoKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7Cisg
ICAgRVhQRUNUX05FQVIoY29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53aWR0aCgpLCB0b3RhbFdp
ZHRoLCAwLjAwMDEpOwogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIEVYUEVDVF9O
RUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCAwLCAwLjAwMDEpOwogICAgIGNvbnRyb2xs
ZXIuYWR2YW5jZSgwLCAmZ2x5cGhCdWZmZXIpOwpAQCAtMjc4LDcgKzI3OCw3IEBAIFRFU1RfRihD
b21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBMZWFkaW5nRXhwYW5zaW9uKQogICAgIENvbXBsZXhU
ZXh0Q29udHJvbGxlciBjb250cm9sbGVyKGZvbnQsIHRleHRSdW4sIHJ1bnMpOwogCiAgICAgZmxv
YXQgdG90YWxXaWR0aCA9IDEwMCArIDI0OwotICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIudG90
YWxXaWR0aCgpLCB0b3RhbFdpZHRoLCAwLjAwMDEpOworICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xs
ZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgdG90YWxXaWR0aCwgMC4wMDAxKTsKICAgICBHbHlw
aEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRo
U29GYXIoKSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoMCwgJmdseXBoQnVm
ZmVyKTsKQEAgLTMwOSw3ICszMDksNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVz
dCwgVmVydGljYWxBZHZhbmNlcykKICAgICBydW5zLmFwcGVuZChXVEZNb3ZlKHJ1bjIpKTsKICAg
ICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcihmb250LCB0ZXh0UnVuLCBydW5zKTsK
IAotICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIudG90YWxXaWR0aCgpLCAwLCAwLjAwMDEpOwor
ICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgMCwgMC4w
MDAxKTsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBFWFBFQ1RfTkVBUihjb250
cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFu
Y2UoMCwgJmdseXBoQnVmZmVyKTsKQEAgLTM1NiwxMiArMzU2LDEyIEBAIFRFU1RfRihDb21wbGV4
VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRoV2l0aEp1c3RpZmljYXRpb24pCiAgICAgcnVu
cy5hcHBlbmQoV1RGTW92ZShydW4pKTsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJv
bGxlcihmb250LCB0ZXh0UnVuLCBydW5zKTsKIAotICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIu
dG90YWxXaWR0aCgpLCAxICsgMjAgKyA3ICsgNCArIDIwICsgNyArIDE2LCAwLjAwMDEpOworICAg
IEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSwgMSArIDIwICsg
NyArIDQgKyAyMCArIDcgKyAxNiwgMC4wMDAxKTsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAx
KTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoNSwgJmdseXBoQnVmZmVyKTsKICAgICBFWFBFQ1Rf
RVEoZ2x5cGhCdWZmZXIuc2l6ZSgpLCA1VSk7Ci0gICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDApLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSAr
IGdseXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0
KDMpLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkud2lkdGgoKSwgY29udHJvbGxl
ci50b3RhbFdpZHRoKCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDApLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMSkud2lkdGgoKSArIGds
eXBoQnVmZmVyLmFkdmFuY2VBdCgyKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDMp
LndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoNCkud2lkdGgoKSwgY29udHJvbGxlci50
b3RhbEFkdmFuY2UoKS53aWR0aCgpLCAwLjAwMDEpOwogfQogCiB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTNmNDQwMzIw
ZWMyOTYzNzY4ZGIyN2RlMzlmNmY1ZjliMTZkODMyMC4uOWNkMDJhNmM0ZDY4NzEzOTFkNWVhYTEw
MGVjZDkzMzAwNmRlOWY4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTIwICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIEEgcGFydGlh
bGx5IHNlbGVjdGVkIFJUTCB0ZXh0IGlzIHBsYWNlZCBhdCBhIHdyb25nIHZlcnRpY2FsIHBvc2l0
aW9uIGlmIGl0IGhhcyBhIHZlcnRpY2FsIGluaXRpYWwgYWR2YW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBmYXN0L3RleHQvaW5pdGlhbC1hZHZhbmNl
LXNlbGVjdGVkLXRleHQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0
L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTAxLTIw
ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTQ4MDcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RleHQvaW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0ZWQtdGV4dC1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU4ODMyYzNlMDhiZTU0YTNjMDk1N2NiMDljNDRhZjU1NGY3MThj
ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW5pdGlhbC1hZHZh
bmNlLXNlbGVjdGVkLXRleHQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICBmb250LXNpemU6IDIwMHB4Owor
ICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAgIG9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAg
Y29uc3Qgc3BhbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdiBzcGFuJyk7CisgICAgICAg
IGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgY29uc3Qg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICByYW5nZS5zZWxlY3ROb2Rl
Q29udGVudHMoc3Bhbik7CisgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAg
ICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPGRp
dj48c3Bhbj4mI3g2Mjg7LSYjeDA2Mjg7JiN4MDY1MTs8L3NwYW4+LSYjeDYyODs8L2Rpdj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0ZWQt
dGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3Rl
ZC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBkMTk2ZmQ0MDFhMWUyZjIzYjFmZmQ5YjVmMjQxNDZh
NTUxMzQxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFs
LWFkdmFuY2Utc2VsZWN0ZWQtdGV4dC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHN0eWxlPgorICAgIGRpdiB7CisgICAgICAgIGZvbnQtc2l6ZTogMjAwcHg7CisgICAg
fQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgICAgb25sb2FkID0gKCkgPT4geworICAgICAgICBjb25z
dCB0ZXh0Tm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpLmNoaWxkTm9kZXNbMF07
CisgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAg
ICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0Tm9kZSwgMCk7CisgICAgICAgIHJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgNCk7
CisgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgc2VsZWN0aW9u
LmFkZFJhbmdlKHJhbmdlKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPGRpdj4mI3g2Mjg7LSYjeDA2
Mjg7JiN4MDY1MTstJiN4NjI4OzwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388274</attachid>
            <date>2020-01-20 19:51:08 -0800</date>
            <delta_ts>2020-01-20 19:51:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205990-20200121125106.patch</filename>
            <type>text/plain</type>
            <size>24483</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0ZjAwY2EzZGFkNjI1
MDkwYjYzMDVkNGE3ZGFjMzhjMWNmMjllNS4uZjkzYjg0NzYyYWE4MGI2YzQ0MDdlNDIwZTFjZTMy
ZjViYmJmZmU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTAxLTIwICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIEEgcGFydGlh
bGx5IHNlbGVjdGVkIFJUTCB0ZXh0IGlzIHBsYWNlZCBhdCBhIHdyb25nIHZlcnRpY2FsIHBvc2l0
aW9uIGlmIGl0IGhhcyBhIHZlcnRpY2FsIGluaXRpYWwgYWR2YW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yQ29tcGxleFRleHQgcmV0dXJuZWQgb25seSBYCisgICAgICAgIHBvc2l0aW9uIG9m
IHRoZSBmaXJzdCBnbHlwaCwgYnV0IFkgcG9zaXRpb24uCisKKyAgICAgICAgQmVjYXVzZSBHbHlw
aEJ1ZmZlciBpcyB1c2luZyBnbHlwaCBhZHZhbmNlcyBpbnN0ZWFkIGdseXBoCisgICAgICAgIHBv
c2l0aW9ucywgaXQncyBub3Qgc2ltcGxlIHRvIGdldCB0aGUgZmlyc3QgZ2x5cGggcG9zaXRpb24g
b2YgdGhlCisgICAgICAgIHBhcnQgb2YgYSBSVEwgdGV4dHMuCisgICAgICAgIEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0IGlzIGNhbGN1bGF0aW5nIHRoZQor
ICAgICAgICBYIHBvc2l0aW9uIG9mIGl0IGJ5IHN1YnRyYWN0aW5nIHJpZ2h0IHNpZGUgcGFydCB3
aWR0aCBmcm9tIHRoZQorICAgICAgICB0b3RhbCB3aWR0aC4gSXQgc2hvdWxkIGRvIHNhbWUgZm9y
IFkgcG9zaXRpb24uCisKKyAgICAgICAgbWFjT1MgYW5kIGlPUyBwb3J0cyBkb24ndCB1c2UgdGhl
IGNvZGUgdG8gZHJhdyBzZWxlY3RlZCB0ZXh0cy4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQv
aW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBsZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmg6IFJlcGxhY2Vk
IG1fdG90YWxXaWR0aCB3aXRoIG1fdG90YWxBZHZhbmNlLgorICAgICAgICAoV2ViQ29yZTo6Q29t
cGxleFRleHRDb250cm9sbGVyOjp0b3RhbFdpZHRoIGNvbnN0KTogUmVtb3ZlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6dG90YWxBZHZhbmNlIGNvbnN0KTogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmdseXBoQnVmZmVyRm9yVGV4dFJ1biBjb25zdCk6IENo
YW5nZWQgdGhlIHJldHVybiB0eXBlIGZyb20gZmxvYXQgdG8gRmxvYXRTaXplLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQgY29u
c3QpOiBDaGFuZ2VkIHRoZSByZXR1cm4gdHlwZSBmcm9tIGZsb2F0IHRvIEZsb2F0U2l6ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZv
ckNvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvRmxvYXRTaXplKTog
QWRkZWQuCisKIDIwMjAtMDEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KIAogICAgICAgICBFWElGIG9yaWVudGF0aW9uIGlzIGlnbm9yZWQgZm9yIHNvbWUg
Q1NTIGltYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMmQ4NTQzODQ0NDAyZGFhOWQ0MDBk
OWVjYTkxZmExM2M0MGJmODlkNi4uOTAzNGQ2NzM2Yzg1MGRiZmUyNzBlZDZlYTk0YjNkMTFhNzY2
NmQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBDb21w
bGV4VGV4dENvbnRyb2xsZXI6OmZpbmlzaENvbnN0cnVjdGlvbigpCiAKIHVuc2lnbmVkIENvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRl
UGFydGlhbEdseXBocykKIHsKLSAgICBpZiAoaCA+PSBtX3RvdGFsV2lkdGgpCisgICAgaWYgKGgg
Pj0gbV90b3RhbEFkdmFuY2Uud2lkdGgoKSkKICAgICAgICAgcmV0dXJuIG1fcnVuLmx0cigpID8g
bV9lbmQgOiAwOwogCiAgICAgaWYgKGggPCAwKQpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgQ29t
cGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgICAgICAg
ICBGbG9hdFNpemUgYWR2YW5jZSA9IHRyZWF0QXNTcGFjZSA/IEZsb2F0U2l6ZShzcGFjZVdpZHRo
LCBhZHZhbmNlc1tpXS5oZWlnaHQoKSkgOiBhZHZhbmNlc1tpXTsKIAogICAgICAgICAgICAgaWYg
KGNoID09ICdcdCcgJiYgbV9ydW4uYWxsb3dUYWJzKCkpCi0gICAgICAgICAgICAgICAgYWR2YW5j
ZS5zZXRXaWR0aChtX2ZvbnQudGFiV2lkdGgoZm9udCwgbV9ydW4udGFiU2l6ZSgpLCBtX3J1bi54
UG9zKCkgKyBtX3RvdGFsV2lkdGgpKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRo
KG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1f
dG90YWxBZHZhbmNlLndpZHRoKCkpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKEZvbnRDYXNjYWRl
Ojp0cmVhdEFzWmVyb1dpZHRoU3BhY2UoY2gpICYmICF0cmVhdEFzU3BhY2UpIHsKICAgICAgICAg
ICAgICAgICBhZHZhbmNlLnNldFdpZHRoKDApOwogICAgICAgICAgICAgICAgIGdseXBoID0gZm9u
dC5zcGFjZUdseXBoKCk7CkBAIC03ODQsNyArNzg0LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGxleFRleHRSdW4uZ3Jvd0luaXRpYWxBZHZhbmNlSG9yaXpvbnRhbGx5KG1f
ZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYWRqdXN0ZWRCYXNlQWR2
YW5jZXMubGFzdCgpLmV4cGFuZChtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5LCAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IG1fZXhwYW5zaW9uUGVy
T3Bwb3J0dW5pdHk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdG90YWxBZHZh
bmNlLmV4cGFuZChtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5LCAwKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZXhwYW5kUmlnaHQpIHsKQEAgLTgwMiw3ICs4MDIsNyBAQCB2b2lkIENv
bXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAgICAg
ICAgICAgICAgICBhZnRlckV4cGFuc2lvbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBtX3RvdGFsV2lkdGggKz0gYWR2YW5jZS53aWR0aCgpOworICAgICAgICAgICAgbV90
b3RhbEFkdmFuY2UgKz0gYWR2YW5jZTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IENvbWJpbmlu
ZyBtYXJrcyBzaG91bGQgcmVjZWl2ZSBhIHRleHQgZW1waGFzaXMgbWFyayBpZiB0aGV5IGFyZSBj
b21iaW5lIHdpdGggYSBzcGFjZS4KICAgICAgICAgICAgIGlmIChtX2ZvclRleHRFbXBoYXNpcyAm
JiAoIUZvbnRDYXNjYWRlOjpjYW5SZWNlaXZlVGV4dEVtcGhhc2lzKGNoKSB8fCAoVV9HRVRfR0Nf
TUFTSyhjaCkgJiBVX0dDX01fTUFTSykpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAppbmRleCBkOGY2M2JmMjI1
NjdmNTQ0YzVmNjUyNWUyYjdlMTdmYzRiN2IzMGYwLi5hMWQ2ZTM2YWRjNDY4NTEzM2E1MDE0YmRm
ZGZlYzIyMDk3NGI0NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB0aGUgd2lkdGggb2YgZXZlcnl0aGluZyB3ZSd2ZSBjb25zdW1l
ZCBzbyBmYXIuCiAgICAgZmxvYXQgcnVuV2lkdGhTb0ZhcigpIGNvbnN0IHsgcmV0dXJuIG1fcnVu
V2lkdGhTb0ZhcjsgfQogCi0gICAgZmxvYXQgdG90YWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
dG90YWxXaWR0aDsgfQorICAgIEZsb2F0U2l6ZSB0b3RhbEFkdmFuY2UoKSBjb25zdCB7IHJldHVy
biBtX3RvdGFsQWR2YW5jZTsgfQogCiAgICAgZmxvYXQgbWluR2x5cGhCb3VuZGluZ0JveFgoKSBj
b25zdCB7IHJldHVybiBtX21pbkdseXBoQm91bmRpbmdCb3hYOyB9CiAgICAgZmxvYXQgbWF4R2x5
cGhCb3VuZGluZ0JveFgoKSBjb25zdCB7IHJldHVybiBtX21heEdseXBoQm91bmRpbmdCb3hYOyB9
CkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRDaGFy
YWN0ZXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9lbmQgeyAwIH07CiAKLSAgICBmbG9hdCBtX3Rv
dGFsV2lkdGggeyAwIH07CisgICAgRmxvYXRTaXplIG1fdG90YWxBZHZhbmNlOwogICAgIGZsb2F0
IG1fcnVuV2lkdGhTb0ZhciB7IDAgfTsKICAgICB1bnNpZ25lZCBtX251bUdseXBoc1NvRmFyIHsg
MCB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFJ1biB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA1ZTVkMDM4NjA1NDZm
NjEyZTQ3NWNjZjcwMjQ1YTM0MjJiNmJmMjU0Li5mYTYyMjYwMjNhZWVkZjNmMjc3MWE1Y2I1NGRk
NmVkODNhZGIwNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwCkBAIC0yNzMsMTAgKzI3MywxMCBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1
cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpIGNvbnN0CiAgICAgbV9y
ZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVxdWlyZXNTaGFwaW5nKCk7CiB9CiAKLWZsb2F0IEZv
bnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwg
Y29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpnbHlwaEJ1ZmZl
ckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyKSBjb25z
dAogewogICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXgpCi0gICAgICAgIHJldHVybiBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIpOworICAgICAgICByZXR1cm4geyBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpLCAwIH07CiAgICAgcmV0dXJuIGdldEdseXBoc0Fu
ZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOwogfQog
CkBAIC0yODQsMTQgKzI4NCwxNCBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiB7CiAgICAgdW5z
aWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CiAgICAgR2x5cGhC
dWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgZmxvYXQgc3RhcnRYID0gcG9pbnQueCgpICsgZ2x5cGhC
dWZmZXJGb3JUZXh0UnVuKGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3Rp
bmF0aW9uLCBnbHlwaEJ1ZmZlcik7CisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gcG9pbnQg
KyBnbHlwaEJ1ZmZlckZvclRleHRSdW4oY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJv
bSwgZGVzdGluYXRpb24sIGdseXBoQnVmZmVyKTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0
ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBHaXZlIHVwLgogICAgIGlmIChnbHlwaEJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8vIERyYXcgdGhlIGdseXBoIGJ1ZmZl
ciBub3cgYXQgdGhlIHN0YXJ0aW5nIHBvaW50IHJldHVybmVkIGluIHN0YXJ0WC4KLSAgICBGbG9h
dFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCBwb2ludC55KCkpOworICAgIGZsb2F0IG9sZFN0YXJ0
WCA9IHN0YXJ0UG9pbnQueCgpOwogICAgIGRyYXdHbHlwaEJ1ZmZlcihjb250ZXh0LCBnbHlwaEJ1
ZmZlciwgc3RhcnRQb2ludCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKLSAgICByZXR1cm4g
c3RhcnRQb2ludC54KCkgLSBzdGFydFg7CisgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gb2xk
U3RhcnRYOwogfQogCiB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYg
bWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVu
c2lnbmVkPiB0bykgY29uc3QKQEAgLTMxNyw3ICszMTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVu
KEdyYQogICAgICAgICBjb2RlUGF0aFRvVXNlID0gQ29tcGxleDsKICAgICAKICAgICBHbHlwaEJ1
ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBmbG9hdCBzdGFydFggPSBnbHlwaEJ1ZmZlckZvclRleHRS
dW4oY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIpOwor
ICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChnbHlwaEJ1ZmZlckZvclRl
eHRSdW4oY29kZVBhdGhUb1VzZSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgZ2x5cGhCdWZmZXIp
KTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZvciB0aGUgcnVuLiBH
aXZlIHVwLgogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMzI3LDcgKzMyNyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RD
b250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmlu
ZVRyYW5zZm9ybSgpKTsKICAgICB9KTsKICAgICAKLSAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQo
c3RhcnRYLCAwKTsKICAgICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhC
dWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgcmV0dXJu
IGRpc3BsYXlMaXN0OwogfQpAQCAtMTM4Myw5ICsxMzgyLDkgQEAgZmxvYXQgRm9udENhc2NhZGU6
OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVu
c2lnbmUKICAgICByZXR1cm4gaW5pdGlhbEFkdmFuY2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRl
OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRm9y
VGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorRmxvYXRTaXplIEZvbnRD
YXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4m
IHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewotICAgIGZs
b2F0IGluaXRpYWxBZHZhbmNlOworICAgIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZTsKIAogICAg
IENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4sIGZhbHNlLCAwLCBm
b3JUZXh0RW1waGFzaXMpOwogICAgIEdseXBoQnVmZmVyIGR1bW15R2x5cGhCdWZmZXI7CkBAIC0x
MzkzLDIxICsxMzkyLDIxIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNl
c0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduCiAgICAgY29udHJvbGxl
ci5hZHZhbmNlKHRvLCAmZ2x5cGhCdWZmZXIpOwogCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAo
cnVuLnJ0bCgpKSB7CiAgICAgICAgIC8vIEV4cGxvaXQgdGhlIGZhY3QgdGhhdCB0aGUgc3VtIG9m
IHRoZSBwYWludCBhZHZhbmNlcyBpcyBlcXVhbCB0bwogICAgICAgICAvLyB0aGUgc3VtIG9mIHRo
ZSBsYXlvdXQgYWR2YW5jZXMuCi0gICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50
b3RhbFdpZHRoKCk7CisgICAgICAgIGluaXRpYWxBZHZhbmNlID0gY29udHJvbGxlci50b3RhbEFk
dmFuY2UoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGR1bW15R2x5cGhCdWZm
ZXIuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBpbml0aWFsQWR2YW5jZSAtPSBkdW1teUdseXBo
QnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpOworICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2Ug
LT0gdG9GbG9hdFNpemUoZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBpbml0aWFsQWR2YW5jZSAtPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSkud2lkdGgoKTsK
KyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlIC09IHRvRmxvYXRTaXplKGdseXBoQnVmZmVyLmFk
dmFuY2VBdChpKSk7CiAgICAgICAgIGdseXBoQnVmZmVyLnJldmVyc2UoMCwgZ2x5cGhCdWZmZXIu
c2l6ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbml0aWFsQWR2YW5jZSA9IGR1bW15R2x5
cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKS53aWR0aCgpOworICAgICAgICBpbml0aWFsQWR2YW5j
ZSA9IHRvRmxvYXRTaXplKGR1bW15R2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkdW1teUdseXBoQnVmZmVyLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgaW5pdGlhbEFkdmFuY2UgKz0gZHVtbXlHbHlwaEJ1ZmZlci5hZHZhbmNl
QXQoaSkud2lkdGgoKTsKKyAgICAgICAgICAgIGluaXRpYWxBZHZhbmNlICs9IHRvRmxvYXRTaXpl
KGR1bW15R2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW5p
dGlhbEFkdmFuY2U7CkBAIC0xNDM2LDcgKzE0MzUsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYg
ZwogewogICAgIC8vIERyYXcgZWFjaCBjb250aWd1b3VzIHJ1biBvZiBnbHlwaHMgdGhhdCB1c2Ug
dGhlIHNhbWUgZm9udCBkYXRhLgogICAgIGNvbnN0IEZvbnQqIGZvbnREYXRhID0gZ2x5cGhCdWZm
ZXIuZm9udEF0KDApOwotICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChwb2ludC54KCksIHBvaW50
LnkoKSAtIGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkuaGVpZ2h0KCkpOworICAgIEZsb2F0
UG9pbnQgc3RhcnRQb2ludCA9IHBvaW50OwogICAgIGZsb2F0IG5leHRYID0gc3RhcnRQb2ludC54
KCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lkdGgoKTsKICAgICBmbG9hdCBuZXh0WSA9
IHN0YXJ0UG9pbnQueSgpICsgZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KDApLmhlaWdodCgpOwogICAg
IHVuc2lnbmVkIGxhc3RGcm9tID0gMDsKQEAgLTE1MzAsOSArMTUyOSw5IEBAIGZsb2F0IEZvbnRD
YXNjYWRlOjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNo
U2V0PGNvbnN0IEZvCiAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWF4PGludD4o
Z2x5cGhPdmVyZmxvdy0+dG9wLCBjZWlsZigtY29udHJvbGxlci5taW5HbHlwaEJvdW5kaW5nQm94
WSgpKSAtIChnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzID8gMCA6IGZvbnRNZXRyaWNzKCku
YXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9tID0gc3RkOjptYXg8aW50
PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGlu
Z0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmlj
cygpLmRlc2NlbnQoKSkpOwogICAgICAgICBnbHlwaE92ZXJmbG93LT5sZWZ0ID0gc3RkOjptYXg8
aW50PigwLCBjZWlsZigtY29udHJvbGxlci5taW5HbHlwaEJvdW5kaW5nQm94WCgpKSk7Ci0gICAg
ICAgIGdseXBoT3ZlcmZsb3ctPnJpZ2h0ID0gc3RkOjptYXg8aW50PigwLCBjZWlsZihjb250cm9s
bGVyLm1heEdseXBoQm91bmRpbmdCb3hYKCkgLSBjb250cm9sbGVyLnRvdGFsV2lkdGgoKSkpOwor
ICAgICAgICBnbHlwaE92ZXJmbG93LT5yaWdodCA9IHN0ZDo6bWF4PGludD4oMCwgY2VpbGYoY29u
dHJvbGxlci5tYXhHbHlwaEJvdW5kaW5nQm94WCgpIC0gY29udHJvbGxlci50b3RhbEFkdmFuY2Uo
KS53aWR0aCgpKSk7CiAgICAgfQotICAgIHJldHVybiBjb250cm9sbGVyLnRvdGFsV2lkdGgoKTsK
KyAgICByZXR1cm4gY29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53aWR0aCgpOwogfQogCiB2b2lk
IEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0
UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvKSBjb25zdApAQCAtMTU2Myw3ICsxNTYyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6YWRq
dXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0
UmUKICAgICBmbG9hdCBhZnRlcldpZHRoID0gY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCk7CiAK
ICAgICBpZiAocnVuLnJ0bCgpKQotICAgICAgICBzZWxlY3Rpb25SZWN0Lm1vdmUoY29udHJvbGxl
ci50b3RhbFdpZHRoKCkgLSBhZnRlcldpZHRoLCAwKTsKKyAgICAgICAgc2VsZWN0aW9uUmVjdC5t
b3ZlKGNvbnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSAtIGFmdGVyV2lkdGgsIDApOwog
ICAgIGVsc2UKICAgICAgICAgc2VsZWN0aW9uUmVjdC5tb3ZlKGJlZm9yZVdpZHRoLCAwKTsKICAg
ICBzZWxlY3Rpb25SZWN0LnNldFdpZHRoKExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoYWZ0ZXJX
aWR0aCAtIGJlZm9yZVdpZHRoKSk7CkBAIC0xNjM2LDEyICsxNjM1LDEyIEBAIGNvbnN0IEZvbnQq
IEZvbnRDYXNjYWRlOjpmb250Rm9yQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNo
YXIqIGNoYXJhY3RlCiB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0g
ICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhU
ZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXMpOworICAgIGF1
dG8gaW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1
biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXMpOwogCiAgICAgaWYgKGds
eXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZHJhd0VtcGhhc2lz
TWFya3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsg
aW5pdGlhbEFkdmFuY2UsIHBvaW50LnkoKSkpOworICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRl
eHQsIGdseXBoQnVmZmVyLCBtYXJrLCBwb2ludCArIGluaXRpYWxBZHZhbmNlKTsKIH0KIAogc3Ry
dWN0IEdseXBoSXRlcmF0aW9uU3RhdGUgewpAQCAtMTc3OSw3ICsxNzc4LDcgQEAgRGFzaEFycmF5
IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdAogICAgIGlmIChjb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpDb21w
bGV4KQogICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQo
cnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIGRl
bHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCAwLCBydW4ubGVu
Z3RoKCksIGdseXBoQnVmZmVyKTsKKyAgICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5j
ZXNGb3JDb21wbGV4VGV4dChydW4sIDAsIHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpLndpZHRo
KCk7CiAKICAgICBpZiAoIWdseXBoQnVmZmVyLnNpemUoKSkKICAgICAgICAgcmV0dXJuIERhc2hB
cnJheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmgKaW5kZXggODk3Y2Q5NzhmODQyZWMxODMyMzZiYzA2Mjc2OWE5OTRmODM4OWRhZi4uZjUwYjdj
ZDQ2ZmI5YTVmNjc5ZTUzNjZlYjkzMmY1NTU2NzYwNzhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBlbnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4
dEVtcGhhc2lzLCBGb3JUZXh0RW1waGFzaXMgfTsKIAotICAgIGZsb2F0IGdseXBoQnVmZmVyRm9y
VGV4dFJ1bihDb2RlUGF0aCwgY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBHbHlwaEJ1ZmZlciYpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBnbHlwaEJ1ZmZlckZvclRl
eHRSdW4oQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0
bywgR2x5cGhCdWZmZXImKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0
cmVhbSBhZHZhbmNlLgogICAgIGZsb2F0IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4
dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVy
JiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwogICAg
IHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50Jiwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxl
eFRleHQoKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2Uu
Ci0gICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0
UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVt
cGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9
IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0Zv
ckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9t
U3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
dG8pIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0
UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJm
bG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZm
ZXIuaAppbmRleCBkYjY1MjMzNTg5ZDAxY2Q3M2MyMzExYTEyMDc5OThkMTYwMDQ2ZTUyLi4zNmM4
ZmJkNzE0YmUzNDE0OTMyYjJmZmRjMTk0ZGU2ZTZkMmE2YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKQEAgLTk4LDYgKzk4LDExIEBAIE9w
dGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gR2x5cGhCdWZmZXJBZHZhbmNlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHR5cGVkZWYgRmxvYXRTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKICNl
bmRpZgogCitpbmxpbmUgRmxvYXRTaXplIHRvRmxvYXRTaXplKGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSYgYSkKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGEud2lkdGgoKSwgYS5oZWlnaHQoKSk7
Cit9CisKIGNsYXNzIEdseXBoQnVmZmVyIHsKIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2ZvbnRzLmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBiMzZkZmE1NGQwNzgyOThkMmMzNTIwYmM5
YTY1N2IyZTI4NmFmOTkuLjM5Mjg3ZWY5ZmI3OTJiMGRiOTg1YzMwOWZiOGU1NmY3MGEyY2YwYmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wMS0yMCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KKworICAgICAgICBBIHBhcnRpYWxseSBzZWxlY3RlZCBSVEwgdGV4dCBpcyBwbGFj
ZWQgYXQgYSB3cm9uZyB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBpdCBoYXMgYSB2ZXJ0aWNhbCBpbml0
aWFsIGFkdmFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNTk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIFJlcGxhY2VkIGFsbCAiY29udHJvbGxlci50b3RhbFdpZHRoKCkiIHdpdGggImNv
bnRyb2xsZXIudG90YWxBZHZhbmNlKCkud2lkdGgoKSIuCisKIDIwMjAtMDEtMjAgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjU0Nzg4KTog
bW96aWxsYS10ZXN0cy55YW1sL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xOTE2MzMuanMubW96aWxs
YSBmYWlscwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA5MjY4ZWZiNjgzYmVmNTE1NjY2OGEx
OTc4NTllNjU0ZmVhNzEzZDBhLi40YzJjNDkyMmE2ZjEyZTA5OTA5NjJjNDZkOWU1Yjc2NWU0YmE1
NDg0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBURVNUX0YoQ29t
cGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluUlRMKQog
ICAgIGZsb2F0IHRvdGFsV2lkdGggPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgYWR2
YW5jZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHRvdGFsV2lkdGggKz0gYWR2YW5jZXNbaV0ud2lk
dGgoKTsKLSAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnRvdGFsV2lkdGgoKSwgc3BhY2VXaWR0
aCArIHRvdGFsV2lkdGgsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci50b3Rh
bEFkdmFuY2UoKS53aWR0aCgpLCBzcGFjZVdpZHRoICsgdG90YWxXaWR0aCwgMC4wMDAxKTsKICAg
ICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnJ1
bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFkdmFuY2UoMCwgJmds
eXBoQnVmZmVyKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9s
bGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTCkKICAgICBmbG9hdCB0b3RhbFdpZHRoID0gMDsK
ICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGFkdmFuY2VzLnNpemUoKTsgKytpKQogICAgICAg
ICB0b3RhbFdpZHRoICs9IGFkdmFuY2VzW2ldLndpZHRoKCk7Ci0gICAgRVhQRUNUX05FQVIoY29u
dHJvbGxlci50b3RhbFdpZHRoKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7CisgICAgRVhQRUNUX05F
QVIoY29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53aWR0aCgpLCB0b3RhbFdpZHRoLCAwLjAwMDEp
OwogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xs
ZXIucnVuV2lkdGhTb0ZhcigpLCAwLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgw
LCAmZ2x5cGhCdWZmZXIpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5MVFIpCiAgICAgcnVucy5h
cHBlbmQoV1RGTW92ZShydW4yKSk7CiAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xs
ZXIoZm9udCwgdGV4dFJ1biwgcnVucyk7CiAKLSAgICBFWFBFQ1RfTkVBUihjb250cm9sbGVyLnRv
dGFsV2lkdGgoKSwgc3BhY2VXaWR0aCArIDc2LjM0NzY1NiArIGluaXRpYWxBZHZhbmNlLndpZHRo
KCksIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53
aWR0aCgpLCBzcGFjZVdpZHRoICsgNzYuMzQ3NjU2ICsgaW5pdGlhbEFkdmFuY2Uud2lkdGgoKSwg
MC4wMDAxKTsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBFWFBFQ1RfTkVBUihj
b250cm9sbGVyLnJ1bldpZHRoU29GYXIoKSwgMCwgMC4wMDAxKTsKICAgICBjb250cm9sbGVyLmFk
dmFuY2UoMCwgJmdseXBoQnVmZmVyKTsKQEAgLTE5OSw3ICsxOTksNyBAQCBURVNUX0YoQ29tcGxl
eFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKICAgICBydW5zLmFwcGVu
ZChXVEZNb3ZlKHJ1bikpOwogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKGZv
bnQsIHRleHRSdW4sIHJ1bnMpOwogCi0gICAgRVhQRUNUX05FQVIoY29udHJvbGxlci50b3RhbFdp
ZHRoKCksIDc2LjM0NzY1NiArIGluaXRpYWxBZHZhbmNlLndpZHRoKCksIDAuMDAwMSk7CisgICAg
RVhQRUNUX05FQVIoY29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53aWR0aCgpLCA3Ni4zNDc2NTYg
KyBpbml0aWFsQWR2YW5jZS53aWR0aCgpLCAwLjAwMDEpOwogICAgIEdseXBoQnVmZmVyIGdseXBo
QnVmZmVyOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCAwLCAw
LjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgwLCAmZ2x5cGhCdWZmZXIpOwpAQCAtMjM4
LDcgKzIzOCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2
YW5jZUluUlRMTm9PcmlnaW5zKQogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVy
KGZvbnQsIHRleHRSdW4sIHJ1bnMpOwogCiAgICAgZmxvYXQgdG90YWxXaWR0aCA9IDE0LjAzOTc4
MzAwMTgwODMgKyAxMi4wICsgNDMuODExOTM0OTAwNTQyNTsKLSAgICBFWFBFQ1RfTkVBUihjb250
cm9sbGVyLnRvdGFsV2lkdGgoKSwgdG90YWxXaWR0aCwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVB
Uihjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpLndpZHRoKCksIHRvdGFsV2lkdGgsIDAuMDAwMSk7
CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgRVhQRUNUX05FQVIoY29udHJvbGxl
ci5ydW5XaWR0aFNvRmFyKCksIDAsIDAuMDAwMSk7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKDAs
ICZnbHlwaEJ1ZmZlcik7CkBAIC0yNzgsNyArMjc4LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29u
dHJvbGxlclRlc3QsIExlYWRpbmdFeHBhbnNpb24pCiAgICAgQ29tcGxleFRleHRDb250cm9sbGVy
IGNvbnRyb2xsZXIoZm9udCwgdGV4dFJ1biwgcnVucyk7CiAKICAgICBmbG9hdCB0b3RhbFdpZHRo
ID0gMTAwICsgMjQ7Ci0gICAgRVhQRUNUX05FQVIoY29udHJvbGxlci50b3RhbFdpZHRoKCksIHRv
dGFsV2lkdGgsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIoY29udHJvbGxlci50b3RhbEFkdmFu
Y2UoKS53aWR0aCgpLCB0b3RhbFdpZHRoLCAwLjAwMDEpOwogICAgIEdseXBoQnVmZmVyIGdseXBo
QnVmZmVyOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCAwLCAw
LjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgwLCAmZ2x5cGhCdWZmZXIpOwpAQCAtMzA5
LDcgKzMwOSw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBWZXJ0aWNhbEFk
dmFuY2VzKQogICAgIHJ1bnMuYXBwZW5kKFdURk1vdmUocnVuMikpOwogICAgIENvbXBsZXhUZXh0
Q29udHJvbGxlciBjb250cm9sbGVyKGZvbnQsIHRleHRSdW4sIHJ1bnMpOwogCi0gICAgRVhQRUNU
X05FQVIoY29udHJvbGxlci50b3RhbFdpZHRoKCksIDAsIDAuMDAwMSk7CisgICAgRVhQRUNUX05F
QVIoY29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53aWR0aCgpLCAwLCAwLjAwMDEpOwogICAgIEds
eXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIEVYUEVDVF9ORUFSKGNvbnRyb2xsZXIucnVuV2lk
dGhTb0ZhcigpLCAwLCAwLjAwMDEpOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZSgwLCAmZ2x5cGhC
dWZmZXIpOwpAQCAtMzU2LDEyICszNTYsMTIgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxl
clRlc3QsIFRvdGFsV2lkdGhXaXRoSnVzdGlmaWNhdGlvbikKICAgICBydW5zLmFwcGVuZChXVEZN
b3ZlKHJ1bikpOwogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKGZvbnQsIHRl
eHRSdW4sIHJ1bnMpOwogCi0gICAgRVhQRUNUX05FQVIoY29udHJvbGxlci50b3RhbFdpZHRoKCks
IDEgKyAyMCArIDcgKyA0ICsgMjAgKyA3ICsgMTYsIDAuMDAwMSk7CisgICAgRVhQRUNUX05FQVIo
Y29udHJvbGxlci50b3RhbEFkdmFuY2UoKS53aWR0aCgpLCAxICsgMjAgKyA3ICsgNCArIDIwICsg
NyArIDE2LCAwLjAwMDEpOwogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIEVYUEVD
VF9ORUFSKGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpLCAwLCAwLjAwMDEpOwogICAgIGNvbnRy
b2xsZXIuYWR2YW5jZSg1LCAmZ2x5cGhCdWZmZXIpOwogICAgIEVYUEVDVF9FUShnbHlwaEJ1ZmZl
ci5zaXplKCksIDVVKTsKLSAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCku
d2lkdGgoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIu
YWR2YW5jZUF0KDIpLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSAr
IGdseXBoQnVmZmVyLmFkdmFuY2VBdCg0KS53aWR0aCgpLCBjb250cm9sbGVyLnRvdGFsV2lkdGgo
KSwgMC4wMDAxKTsKKyAgICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMCkud2lk
dGgoKSArIGdseXBoQnVmZmVyLmFkdmFuY2VBdCgxKS53aWR0aCgpICsgZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDIpLndpZHRoKCkgKyBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykud2lkdGgoKSArIGds
eXBoQnVmZmVyLmFkdmFuY2VBdCg0KS53aWR0aCgpLCBjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgp
LndpZHRoKCksIDAuMDAwMSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1Y2M3MWFlMTIxYjc1NmFlMGE2ZWVj
NjRkN2RmOTc4MTIxZjgzNzE1Li5jOGQ4YjhhOWRjNGU1NGRiYmE2YTg3ZWIyMmNjMTIxYzY1Zjhj
ODBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDEtMjAgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQSBwYXJ0aWFsbHkgc2VsZWN0ZWQg
UlRMIHRleHQgaXMgcGxhY2VkIGF0IGEgd3JvbmcgdmVydGljYWwgcG9zaXRpb24gaWYgaXQgaGFz
IGEgdmVydGljYWwgaW5pdGlhbCBhZHZhbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2VsZWN0ZWQtdGV4
dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW5pdGlhbC1hZHZh
bmNlLXNlbGVjdGVkLXRleHQuaHRtbDogQWRkZWQuCisKIDIwMjAtMDEtMjAgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBFWElGIG9yaWVudGF0
aW9uIGlzIGlnbm9yZWQgZm9yIHNvbWUgQ1NTIGltYWdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L2luaXRpYWwtYWR2YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW5pdGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODgzMmMzZTA4YmU1NGEzYzA5NTdjYjA5YzQ0YWY1NTRm
NzE4Y2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2luaXRpYWwt
YWR2YW5jZS1zZWxlY3RlZC10ZXh0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgZm9udC1zaXplOiAyMDBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgICBvbmxvYWQgPSAoKSA9PiB7CisgICAg
ICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYgc3BhbicpOworICAg
ICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGNv
bnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgcmFuZ2Uuc2VsZWN0
Tm9kZUNvbnRlbnRzKHNwYW4pOworICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7
CisgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQorPC9zY3JpcHQ+CisK
KzxkaXY+PHNwYW4+JiN4NjI4Oy0mI3gwNjI4OyYjeDA2NTE7PC9zcGFuPi0mI3g2Mjg7PC9kaXY+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW5pdGlhbC1hZHZhbmNlLXNlbGVj
dGVkLXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbml0aWFsLWFkdmFuY2Utc2Vs
ZWN0ZWQtdGV4dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZDE5NmZkNDAxYTFlMmYyM2IxZmZkOWI1ZjI0
MTQ2YTU1MTM0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW5p
dGlhbC1hZHZhbmNlLXNlbGVjdGVkLXRleHQuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxzdHlsZT4KKyAgICBkaXYgeworICAgICAgICBmb250LXNpemU6IDIwMHB4Owor
ICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAgIG9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAg
Y29uc3QgdGV4dE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYnKS5jaGlsZE5vZGVz
WzBdOworICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cisg
ICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgcmFu
Z2Uuc2V0U3RhcnQodGV4dE5vZGUsIDApOworICAgICAgICByYW5nZS5zZXRFbmQodGV4dE5vZGUs
IDQpOworICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICAgIHNlbGVj
dGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQorPC9zY3JpcHQ+CisKKzxkaXY+JiN4NjI4Oy0m
I3gwNjI4OyYjeDA2NTE7LSYjeDYyODs8L2Rpdj4K
</data>

          </attachment>
      

    </bug>

</bugzilla>