<?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>105760</bug_id>
          
          <creation_ts>2012-12-26 01:14:20 -0800</creation_ts>
          <short_desc>[TexMap] Rename current[Transform|Opacity|Filters] in TextureMapperLayer.</short_desc>
          <delta_ts>2013-01-11 17:36:48 -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>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105755</dependson>
    
    <dependson>105781</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>797257</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-26 01:14:20 -0800</bug_when>
    <thetext>We use effective members to keep changeable values that animations change. This patch puts &apos;effective&apos; prefix before those members.

In addition, add setPlatformTransform() to keep m_platformTransform after next calling setEffectiveTransform().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797258</commentid>
    <comment_count>1</comment_count>
      <attachid>180734</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-26 01:26:20 -0800</bug_when>
    <thetext>Created attachment 180734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797388</commentid>
    <comment_count>2</comment_count>
      <attachid>180734</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-26 15:07:49 -0800</bug_when>
    <thetext>Comment on attachment 180734
Patch

This seems unnecessary; platformTransform/opacity is only used for the root layer, which can&apos;t get a transform/opacity from anywhere else, which makes it redundant to multiply platformTransform with any other transform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797419</commentid>
    <comment_count>3</comment_count>
      <attachid>180767</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-26 17:09:10 -0800</bug_when>
    <thetext>Created attachment 180767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797420</commentid>
    <comment_count>4</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-26 17:12:22 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 180734 [details])
&gt; This seems unnecessary; platformTransform/opacity is only used for the root layer, which can&apos;t get a transform/opacity from anywhere else, which makes it redundant to multiply platformTransform with any other transform.

After reading your comment, I understand setTransform and setOpacity called from TextureMapperLayerClientQt require m_state.[transform|opacity] respectively.

And I think effective prefix is still needed because I misunderstood the purpose of members a while.

So I re-post renaming patch as well as some refactoring about setTransform and setOpacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797421</commentid>
    <comment_count>5</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-26 17:13:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; After reading your comment, I understand setTransform and setOpacity called from TextureMapperLayerClientQt require m_state.[transform|opacity] respectively.
s/require/require to change/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797425</commentid>
    <comment_count>6</comment_count>
      <attachid>180768</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-26 17:26:56 -0800</bug_when>
    <thetext>Created attachment 180768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797426</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-26 17:28:26 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=180768) [details]
&gt; Patch

I found we don&apos;t need to keep setOpacity and setTransform public api in TextureMapperLayer only for root layer. LayerTreeRenderer does not use both API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798028</commentid>
    <comment_count>8</comment_count>
      <attachid>180768</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-28 20:12:09 -0800</bug_when>
    <thetext>Comment on attachment 180768
Patch

The name effectiveOpacity is confusing; effectiveOpacity is the opacity multiplied by all the ancestors, e.g. a layer with opacity .5 and a parent with opacity .6 will have an opacity of 0.3. Same goes for effectiveTransform.

d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798062</commentid>
    <comment_count>9</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-28 22:38:51 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 180768 [details])
&gt; The name effectiveOpacity is confusing; effectiveOpacity is the opacity multiplied by all the ancestors, e.g. a layer with opacity .5 and a parent with opacity .6 will have an opacity of 0.3. Same goes for effectiveTransform.

It is why I want to change the name. Could you suggest better one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799205</commentid>
    <comment_count>10</comment_count>
      <attachid>181137</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-02 20:06:19 -0800</bug_when>
    <thetext>Created attachment 181137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799206</commentid>
    <comment_count>11</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-02 20:07:05 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=181137) [details]
&gt; Patch

rebase to upstream.

Could you review this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801958</commentid>
    <comment_count>12</comment_count>
      <attachid>181137</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-07 20:09:53 -0800</bug_when>
    <thetext>Comment on attachment 181137
Patch

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

Let&apos;s change from m_effectiveXXX to m_currentXXX.
Effective is the multiplied value; current simply means that it&apos;s post-animation and not pre-animation.

&gt; Source/WebKit/qt/ChangeLog:10
&gt; +        It can reduce the number of public API of TextureMapperLayer.

This removes unnecessary public API for TextureMapperLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802034</commentid>
    <comment_count>13</comment_count>
      <attachid>181643</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-07 22:34:58 -0800</bug_when>
    <thetext>Created attachment 181643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802041</commentid>
    <comment_count>14</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-07 22:37:43 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 181137 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181137&amp;action=review

Thanks for review!

&gt; Let&apos;s change from m_effectiveXXX to m_currentXXX.
&gt; Effective is the multiplied value; current simply means that it&apos;s post-animation and not pre-animation.

&apos;current&apos; prefix is good although I revived effectiveXXX from old CoordinatedGraphicsLayer :)

&gt; This removes unnecessary public API for TextureMapperLayer.

Done.

In addition, I removed all setXXX methods because only setAnimatedXXX uses them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805308</commentid>
    <comment_count>15</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-11 09:10:57 -0800</bug_when>
    <thetext>
&gt; &apos;current&apos; prefix is good although I revived effectiveXXX from old CoordinatedGraphicsLayer :)
Yes, it was wrong there :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805783</commentid>
    <comment_count>16</comment_count>
      <attachid>181643</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 17:36:43 -0800</bug_when>
    <thetext>Comment on attachment 181643
Patch

Clearing flags on attachment: 181643

Committed r139526: &lt;http://trac.webkit.org/changeset/139526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805784</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 17:36:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180734</attachid>
            <date>2012-12-26 01:26:20 -0800</date>
            <delta_ts>2012-12-26 17:09:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105760-20121226182331.patch</filename>
            <type>text/plain</type>
            <size>17456</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhZjYwZTE3M2E2NzM0
NTE5MDVlN2RkNWEwMzcyMDFiZDcxZTc2ZS4uMjJiNzk3ZTliMGJlYzhhZDRmZTFmNzAyYjVkOWFm
ZTQ2ODBhNGE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDEyLTEyLTI2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBd
IENsYXJpZnkgZWZmZWN0aXZlW1RyYW5zZm9ybXxPcGFjaXR5fEZpbHRlcnNdIGluIFRleHR1cmVN
YXBwZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNTc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHVzZSBlZmZlY3RpdmUgbWVtYmVycyB0byBrZWVwIGNoYW5nZWFibGUgdmFsdWVzIHRo
YXQgYW5pbWF0aW9ucyBjaGFuZ2UuIFRoaXMKKyAgICAgICAgcGF0Y2ggcHV0cyAnZWZmZWN0aXZl
JyBwcmVmaXggYmVmb3JlIHRob3NlIG1lbWJlcnMuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIGFk
ZCBzZXRQbGF0Zm9ybVRyYW5zZm9ybSgpIHRvIGtlZXAgbV9wbGF0Zm9ybVRyYW5zZm9ybSBhZnRl
ciBuZXh0CisgICAgICAgIGNhbGxpbmcgc2V0RWZmZWN0aXZlVHJhbnNmb3JtKCkuIHNldFBsYXRm
b3JtT3BhY2l0eSgpIGRpdHRvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
OjpzZXRQbGF0Zm9ybVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RWZmZWN0aXZlVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1
cmZhY2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2hvdWxk
UGFpbnRUb0ludGVybWVkaWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjppc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c3luY0FuaW1hdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxQb3NpdGlv
bkRlbHRhSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
VGV4dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFBsYXRmb3JtT3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEVmZmVjdGl2ZU9wYWNpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRFZmZlY3RpdmVGaWx0
ZXJzKToKKworMjAxMi0xMi0yNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAw
Lm5ldD4KKwogICAgICAgICBbVGV4TWFwXSBBIE1pbm9yIG9wdGltaXphdGlvbiBvZiBHcmFwaGlj
c0xheWVyVHJhbnNmb3JtLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA1NzU4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMjg0ZjVkZDdjNDZkMGU4OWM5MjFi
MDdlNzVkMmZiZGMyNjM1ZTM1NC4uN2I4ZDhmNWZlYWEwZjhjMWU0MzU1MWJjMDgxNDkyODA5ZGYz
NGNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0yNiAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbVGV4TWFwXSBD
bGFyaWZ5IGVmZmVjdGl2ZVtUcmFuc2Zvcm18T3BhY2l0eXxGaWx0ZXJzXSBpbiBUZXh0dXJlTWFw
cGVyTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDU3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIFRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0IHVzZSBzZXRQbGF0Zm9ybVRyYW5zZm9y
bSgpIGFuZAorICAgICAgICBzZXRQbGF0Zm9ybU9wYWNpdHkoKSBvZiBUZXh0dXJlTWFwcGVyTGF5
ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6cmVuZGVyQ29tcG9z
aXRlZExheWVycyk6CisKIDIwMTItMTItMjMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODA4Mzc3PiBOZXR3b3JrIHByb2Nl
c3Mgc2hvdWxkIHJlc3BlY3QgY29va2llIGFjY2VwdCBwb2xpY3kKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKaW5kZXggYjU5YWY2Njg3OWQ3OGQzNGVjODU5NDU1N2QzYjUzODE3N2EzMDZlNy4u
MDQzMmM2ZWM5MzUxYWEyMjFmMzAyNjk5YTAwZWFjN2U4MzhhNWQ2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKQEAgLTQwLDkgKzQwLDI2IEBAIGNvbnN0IFRleHR1cmVNYXBwZXJMYXll
ciogVGV4dHVyZU1hcHBlckxheWVyOjpyb290TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiB0aGlz
OwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0UGxh
dGZvcm1UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKIHsKLSAg
ICBtX3RyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybShtYXRyaXgpOworICAgIGlmIChtX3BsYXRm
b3JtVHJhbnNmb3JtID09IG1hdHJpeCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wbGF0Zm9y
bVRyYW5zZm9ybSA9IG1hdHJpeDsKKyAgICBzZXRFZmZlY3RpdmVUcmFuc2Zvcm0obV9lZmZlY3Rp
dmVUcmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RWZmZWN0aXZl
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgbV9l
ZmZlY3RpdmVUcmFuc2Zvcm0gPSBtYXRyaXg7CisgICAgaWYgKG1fcGxhdGZvcm1UcmFuc2Zvcm0u
aXNJZGVudGl0eSgpKSB7CisgICAgICAgIG1fZWZmZWN0aXZlTGF5ZXJUcmFuc2Zvcm0uc2V0TG9j
YWxUcmFuc2Zvcm0obV9lZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZWZmZWN0aXZlTG9jYWxUcmFuc2Zvcm0gPSBt
X3BsYXRmb3JtVHJhbnNmb3JtOworICAgIGVmZmVjdGl2ZUxvY2FsVHJhbnNmb3JtLm11bHRpcGx5
KG1fZWZmZWN0aXZlVHJhbnNmb3JtKTsKKyAgICBtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtLnNl
dExvY2FsVHJhbnNmb3JtKGVmZmVjdGl2ZUxvY2FsVHJhbnNmb3JtKTsKIH0KIAogdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmNsZWFyQmFja2luZ1N0b3Jlc1JlY3Vyc2l2ZSgpCkBAIC02MywxNSAr
ODAsMTUgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJz
aXZlKCkKICAgICAvLyBDb21wdXRlIHRyYW5zZm9ybXMgcmVjdXJzaXZlbHkgb24gdGhlIHdheSBk
b3duIHRvIGxlYWZzLgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zZm9ybTsK
ICAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgIHBhcmVudFRyYW5zZm9ybSA9IG1fcGFyZW50LT5t
X3RyYW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCk7CisgICAgICAgIHBhcmVudFRyYW5zZm9y
bSA9IG1fcGFyZW50LT5tX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRy
ZW4oKTsKICAgICBlbHNlIGlmIChtX2VmZmVjdFRhcmdldCkKLSAgICAgICAgcGFyZW50VHJhbnNm
b3JtID0gbV9lZmZlY3RUYXJnZXQtPm1fdHJhbnNmb3JtLmNvbWJpbmVkKCk7Ci0gICAgbV90cmFu
c2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50VHJhbnNmb3JtKTsKKyAgICAgICAgcGFyZW50
VHJhbnNmb3JtID0gbV9lZmZlY3RUYXJnZXQtPm1fZWZmZWN0aXZlTGF5ZXJUcmFuc2Zvcm0uY29t
YmluZWQoKTsKKyAgICBtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtLmNvbWJpbmVUcmFuc2Zvcm1z
KHBhcmVudFRyYW5zZm9ybSk7CiAKLSAgICBtX3N0YXRlLnZpc2libGUgPSBtX3N0YXRlLmJhY2tm
YWNlVmlzaWJpbGl0eSB8fCAhbV90cmFuc2Zvcm0uY29tYmluZWQoKS5pc0JhY2tGYWNlVmlzaWJs
ZSgpOworICAgIG1fc3RhdGUudmlzaWJsZSA9IG1fc3RhdGUuYmFja2ZhY2VWaXNpYmlsaXR5IHx8
ICFtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaXNCYWNrRmFjZVZpc2libGUo
KTsKIAogICAgIGlmIChtX3BhcmVudCAmJiBtX3BhcmVudC0+bV9zdGF0ZS5wcmVzZXJ2ZXMzRCkK
LSAgICAgICAgbV9jZW50ZXJaID0gbV90cmFuc2Zvcm0uY29tYmluZWQoKS5tYXBQb2ludChGbG9h
dFBvaW50M0QobV9zaXplLndpZHRoKCkgLyAyLCBtX3NpemUuaGVpZ2h0KCkgLyAyLCAwKSkueigp
OworICAgICAgICBtX2NlbnRlclogPSBtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtLmNvbWJpbmVk
KCkubWFwUG9pbnQoRmxvYXRQb2ludDNEKG1fc2l6ZS53aWR0aCgpIC8gMiwgbV9zaXplLmhlaWdo
dCgpIC8gMiwgMCkpLnooKTsKIAogICAgIGlmIChtX3N0YXRlLm1hc2tMYXllcikKICAgICAgICAg
bV9zdGF0ZS5tYXNrTGF5ZXItPmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCk7CkBAIC0xMDQs
NyArMTIxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0
dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRo
KCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgpKTsKICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkob3B0
aW9ucy50cmFuc2Zvcm0pOwotICAgIHRyYW5zZm9ybS5tdWx0aXBseShtX3RyYW5zZm9ybS5jb21i
aW5lZCgpKTsKKyAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobV9lZmZlY3RpdmVMYXllclRyYW5zZm9y
bS5jb21iaW5lZCgpKTsKIAogICAgIGZsb2F0IG9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHk7CiAg
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1hc2sgPSBvcHRpb25zLm1hc2s7CkBAIC0xNTQsNyAr
MTcxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKGNv
bnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG8KIAogICAgIGJvb2wgc2hvdWxkQ2xpcCA9
IG1fc3RhdGUubWFza3NUb0JvdW5kcyAmJiAhbV9zdGF0ZS5wcmVzZXJ2ZXMzRDsKICAgICBpZiAo
c2hvdWxkQ2xpcCkKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJh
bnNmb3JtYXRpb25NYXRyaXgob3B0aW9ucy50cmFuc2Zvcm0pLm11bHRpcGx5KG1fdHJhbnNmb3Jt
LmNvbWJpbmVkKCkpLCBsYXllclJlY3QoKSk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBl
ci0+YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KG9wdGlvbnMudHJhbnNmb3JtKS5tdWx0
aXBseShtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkpLCBsYXllclJlY3QoKSk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCiAg
ICAgICAgIG1fY2hpbGRyZW5baV0tPnBhaW50UmVjdXJzaXZlKG9wdGlvbnMpOwpAQCAtMTY2LDEz
ICsxODMsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVu
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG8KIEludFJlY3QgVGV4dHVyZU1hcHBl
ckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpCiB7CiAgICAgLy8gRklYTUU6IEFkZCBh
biBpbnZlcnNlIHRyYW5zZm9ybSB0byBMYXllclRyYW5zZm9ybS4KLSAgICByZXR1cm4gaW50ZXJt
ZWRpYXRlU3VyZmFjZVJlY3QobV90cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOworICAg
IHJldHVybiBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3Jt
LmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKIH0KIAogSW50UmVjdCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCiB7CiAgICAgSW50UmVjdCByZWN0OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxvY2Fs
VHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KS5tdWx0aXBseShtX3RyYW5z
Zm9ybS5jb21iaW5lZCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsb2NhbFRyYW5zZm9y
bSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KG1hdHJpeCkubXVsdGlwbHkobV9lZmZlY3RpdmVMYXll
clRyYW5zZm9ybS5jb21iaW5lZCgpKTsKICAgICByZWN0ID0gZW5jbG9zaW5nSW50UmVjdChsb2Nh
bFRyYW5zZm9ybS5tYXBSZWN0KGxheWVyUmVjdCgpKSk7CiAgICAgaWYgKCFtX3N0YXRlLm1hc2tz
VG9Cb3VuZHMgJiYgIW1fc3RhdGUubWFza0xheWVyKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkKQEAgLTE4MCwxMiArMTk3LDEyIEBAIElu
dFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0g
ICAgaWYgKG1fZmlsdGVycy5oYXNPdXRzZXRzKCkpIHsKKyAgICBpZiAobV9lZmZlY3RpdmVGaWx0
ZXJzLmhhc091dHNldHMoKSkgewogICAgICAgICBpbnQgbGVmdE91dHNldDsKICAgICAgICAgaW50
IHRvcE91dHNldDsKICAgICAgICAgaW50IGJvdHRvbU91dHNldDsKICAgICAgICAgaW50IHJpZ2h0
T3V0c2V0OwotICAgICAgICBtX2ZpbHRlcnMuZ2V0T3V0c2V0cyh0b3BPdXRzZXQsIHJpZ2h0T3V0
c2V0LCBib3R0b21PdXRzZXQsIGxlZnRPdXRzZXQpOworICAgICAgICBtX2VmZmVjdGl2ZUZpbHRl
cnMuZ2V0T3V0c2V0cyh0b3BPdXRzZXQsIHJpZ2h0T3V0c2V0LCBib3R0b21PdXRzZXQsIGxlZnRP
dXRzZXQpOwogICAgICAgICBJbnRSZWN0IHVuZmlsdGVyZWRUYXJnZXRSZWN0KHJlY3QpOwogICAg
ICAgICByZWN0Lm1vdmUoc3RkOjptYXgoMCwgLWxlZnRPdXRzZXQpLCBzdGQ6Om1heCgwLCAtdG9w
T3V0c2V0KSk7CiAgICAgICAgIHJlY3QuZXhwYW5kKGxlZnRPdXRzZXQgKyByaWdodE91dHNldCwg
dG9wT3V0c2V0ICsgYm90dG9tT3V0c2V0KTsKQEAgLTIxOSwxMCArMjM2LDEwIEBAIFRleHR1cmVN
YXBwZXJMYXllcjo6Q29udGVudHNMYXllckNvdW50IFRleHR1cmVNYXBwZXJMYXllcjo6Y291bnRQ
b3RlbnRpYWxMYXllcnNXCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2hvdWxkUGFpbnRUb0lu
dGVybWVkaWF0ZVN1cmZhY2UoKSBjb25zdAogewogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAg
ICBpZiAobV9maWx0ZXJzLnNpemUoKSkKKyAgICBpZiAobV9lZmZlY3RpdmVGaWx0ZXJzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICBib29sIGhhc09wYWNpdHkgPSBt
X29wYWNpdHkgPCAwLjk5OworICAgIGJvb2wgaGFzT3BhY2l0eSA9IG1fZWZmZWN0aXZlT3BhY2l0
eSA8IDAuOTk7CiAgICAgYm9vbCBjYW5IYXZlTXVsdGlwbGVMYXllcnNXaXRoQ29udGVudCA9IGNv
dW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgPT0gTXVsdGlwbGVMYXllcnNXaXRoQ29u
dGVudHM7CiAgICAgYm9vbCBoYXNSZXBsaWNhID0gISFtX3N0YXRlLnJlcGxpY2FMYXllcjsKICAg
ICBib29sIGhhc01hc2sgPSAhIW1fc3RhdGUubWFza0xheWVyOwpAQCAtMjUzLDcgKzI3MCw3IEBA
IGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjppc1Zpc2libGUoKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSAmJiBtX2NoaWxkcmVu
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX29wYWNpdHkgPCAw
LjAxKQorICAgIGlmIChtX2VmZmVjdGl2ZU9wYWNpdHkgPCAwLjAxKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNjgsOCArMjg1LDggQEAgdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4
dHVyZU1hcHBlclBhaW4KICAgICAgICAgICAgIHJlcGxpY2FPcHRpb25zLm1hc2sgPSBtX3N0YXRl
LnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1cmUoKTsKIAogICAgICAgICBy
ZXBsaWNhT3B0aW9ucy50cmFuc2Zvcm0KLSAgICAgICAgICAgICAgICAgIC5tdWx0aXBseShtX3N0
YXRlLnJlcGxpY2FMYXllci0+bV90cmFuc2Zvcm0uY29tYmluZWQoKSkKLSAgICAgICAgICAgICAg
ICAgIC5tdWx0aXBseShtX3RyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKSk7CisgICAgICAg
ICAgICAubXVsdGlwbHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fZWZmZWN0aXZlTGF5ZXJUcmFu
c2Zvcm0uY29tYmluZWQoKSkKKyAgICAgICAgICAgIC5tdWx0aXBseShtX2VmZmVjdGl2ZUxheWVy
VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKICAgICAgICAgcGFpbnRTZWxmQW5kQ2hp
bGRyZW4ocmVwbGljYU9wdGlvbnMpOwogICAgIH0KIApAQCAtMzA4LDcgKzMyNSw3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFp
bnRPcHRpb25zJiBvcHRpb25zCiAgICAgaWYgKCFpc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fb3BhY2l0eTsKKyAg
ICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5ICogbV9lZmZlY3RpdmVPcGFjaXR5Owog
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrVGV4dHVyZSA9IG1fc3RhdGUubWFza0xheWVy
ID8gbV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1cmUoKSA6IDA7CiAKICAgICBUZXh0dXJlTWFwcGVy
UGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKQEAgLTMyOCw3ICszNDUsNyBAQCB2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9ucyYgb3B0aW9ucwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1
cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CiAgICAgcGFpbnRPcHRpb25zLm9wYWNpdHkgPSAxOwogCi0g
ICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpOworICAgIHBhaW50T3B0aW9ucy50cmFuc2Zvcm0gPSBtX2VmZmVjdGl2ZUxheWVyVHJhbnNm
b3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOwogICAgIHBhaW50T3B0aW9ucy5vZmZzZXQgPSAtSW50
U2l6ZShzdXJmYWNlUmVjdC54KCksIHN1cmZhY2VSZWN0LnkoKSk7CiAKICAgICBwYWludFNlbGZB
bmRDaGlsZHJlbldpdGhSZXBsaWNhKHBhaW50T3B0aW9ucyk7CkBAIC0zMzgsMTQgKzM1NSwxNCBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwogICAgICAgICBtYXNrVGV4dHVyZSA9IDA7CiAKICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgc3VyZmFjZSA9IGFwcGx5RmlsdGVycyhtX2ZpbHRl
cnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5nZXQoKSwgc3VyZmFjZVJlY3QpOwor
ICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9lZmZlY3RpdmVGaWx0ZXJzLCBvcHRpb25zLnRl
eHR1cmVNYXBwZXIsIHN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0KTsKICNlbmRpZgogCiAgICAg
b3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iaW5kU3VyZmFjZShvcHRpb25zLnN1cmZhY2UuZ2V0KCkp
OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRhcmdldFRyYW5zZm9ybTsKICAgICB0YXJnZXRU
cmFuc2Zvcm0udHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0
LmhlaWdodCgpKTsKICAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9ucy50cmFuc2Zv
cm0pOwotICAgIHRhcmdldFRyYW5zZm9ybS5tdWx0aXBseShtX3RyYW5zZm9ybS5jb21iaW5lZCgp
KTsKKyAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV9lZmZlY3RpdmVMYXllclRyYW5zZm9y
bS5jb21iaW5lZCgpKTsKIAogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUo
KnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9wYWNpdHksIG1h
c2tUZXh0dXJlLmdldCgpKTsKIH0KQEAgLTQxNiwxMSArNDMzLDE0IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNz
TGF5ZXJUZXh0CiAKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9y
bUxheWVyKCk7CiAKLSAgICBtX3RyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9u
KCkpOwotICAgIG1fdHJhbnNmb3JtLnNldEFuY2hvclBvaW50KG1fc3RhdGUuYW5jaG9yUG9pbnQp
OwotICAgIG1fdHJhbnNmb3JtLnNldFNpemUobV9zdGF0ZS5zaXplKTsKLSAgICBtX3RyYW5zZm9y
bS5zZXRGbGF0dGVuaW5nKCFtX3N0YXRlLnByZXNlcnZlczNEKTsKLSAgICBtX3RyYW5zZm9ybS5z
ZXRDaGlsZHJlblRyYW5zZm9ybShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKKyAgICBtX2Vm
ZmVjdGl2ZUxheWVyVHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7Cisg
ICAgbV9lZmZlY3RpdmVMYXllclRyYW5zZm9ybS5zZXRBbmNob3JQb2ludChtX3N0YXRlLmFuY2hv
clBvaW50KTsKKyAgICBtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtLnNldFNpemUobV9zdGF0ZS5z
aXplKTsKKyAgICBtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtLnNldEZsYXR0ZW5pbmcoIW1fc3Rh
dGUucHJlc2VydmVzM0QpOworICAgIG1fZWZmZWN0aXZlTGF5ZXJUcmFuc2Zvcm0uc2V0TG9jYWxU
cmFuc2Zvcm0obV9zdGF0ZS50cmFuc2Zvcm0pOworICAgIG1fZWZmZWN0aXZlTGF5ZXJUcmFuc2Zv
cm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0obV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7CisKKyAg
ICBtX2VmZmVjdGl2ZVRyYW5zZm9ybSA9IG1fc3RhdGUudHJhbnNmb3JtOwogCiAgICAgc3luY0Fu
aW1hdGlvbnMoKTsKIH0KQEAgLTQ5NSwxMiArNTE1LDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzeW5jQW5pbWF0aW9ucygpCiB7CiAgICAgbV9hbmltYXRpb25zLmFwcGx5KHRoaXMpOwog
ICAgIGlmICghbV9hbmltYXRpb25zLmhhc0FjdGl2ZUFuaW1hdGlvbnNPZlR5cGUoQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkpCi0gICAgICAgIHNldFRyYW5zZm9ybShtX3N0YXRlLnRy
YW5zZm9ybSk7CisgICAgICAgIHNldEVmZmVjdGl2ZVRyYW5zZm9ybShtX3N0YXRlLnRyYW5zZm9y
bSk7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMuaGFzQWN0aXZlQW5pbWF0aW9uc09mVHlwZShBbmlt
YXRlZFByb3BlcnR5T3BhY2l0eSkpCi0gICAgICAgIHNldE9wYWNpdHkobV9zdGF0ZS5vcGFjaXR5
KTsKKyAgICAgICAgc2V0RWZmZWN0aXZlT3BhY2l0eShtX3N0YXRlLm9wYWNpdHkpOwogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKICAgICBpZiAoIW1fYW5pbWF0aW9ucy5oYXNBY3RpdmVBbmltYXRp
b25zT2ZUeXBlKEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXIpKQotICAgICAgICBzZXRGaWx0
ZXJzKG1fc3RhdGUuZmlsdGVycyk7CisgICAgICAgIHNldEVmZmVjdGl2ZUZpbHRlcnMobV9zdGF0
ZS5maWx0ZXJzKTsKICNlbmRpZgogfQogCkBAIC01MjQsNyArNTQ0LDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNp
emUmIGRlbHRhKQogICAgICAgICBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgPSBGbG9hdFNpemUoKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fc2Nyb2xsUG9zaXRpb25EZWx0YSA9IGRlbHRhOwotICAgIG1f
dHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CisgICAgbV9lZmZlY3Rp
dmVMYXllclRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggM2JlNDg0MmQ2MDk0ZDBmMjZkMmM1Y2I5M2Vh
ZmY2MTlhYjAzYzM0Ni4uYjBhZDYxNDYxOTVhYTBhZTUyNTk5Zjk5NTJmZTMxNjIwMmIzNmM1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtOTAsNyArOTAsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIDogbV9wYXJlbnQoMCkKICAgICAgICAgLCBtX2VmZmVjdFRhcmdldCgwKQogICAgICAgICAs
IG1fY29udGVudHNMYXllcigwKQotICAgICAgICAsIG1fb3BhY2l0eSgxKQorICAgICAgICAsIG1f
ZWZmZWN0aXZlT3BhY2l0eSgxKQorICAgICAgICAsIG1fcGxhdGZvcm1PcGFjaXR5KDEpCiAgICAg
ICAgICwgbV9jZW50ZXJaKDApCiAgICAgICAgICwgbV90ZXh0dXJlTWFwcGVyKDApCiAgICAgeyB9
CkBAIC05OSwxMSArMTAwLDggQEAgcHVibGljOgogCiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlcigpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciopOwotICAgIHZvaWQgc2V0VHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgdm9pZCBzZXRPcGFjaXR5KGZs
b2F0IHZhbHVlKSB7IG1fb3BhY2l0eSA9IHZhbHVlOyB9Ci0jaWYgRU5BQkxFKENTU19GSUxURVJT
KQotICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7
IG1fZmlsdGVycyA9IGZpbHRlcnM7IH0KLSNlbmRpZgorICAgIHZvaWQgc2V0UGxhdGZvcm1UcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2b2lkIHNldFBsYXRmb3Jt
T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IG1fcGxhdGZvcm1PcGFjaXR5ID0gb3BhY2l0eTsgfQog
ICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0
dXJlTWFwcGVyID0gdGV4bWFwOyB9CiAgICAgYm9vbCBkZXNjZW5kYW50c09yU2VsZkhhdmVSdW5u
aW5nQW5pbWF0aW9ucygpIGNvbnN0OwogCkBAIC0xNDEsMTAgKzEzOSwxNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFw
cGVyUGFpbnRPcHRpb25zJik7CiAKICAgICAvLyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGll
bnQKLSAgICB2b2lkIHNldEFuaW1hdGVkVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtYXRyaXgpIHsgc2V0VHJhbnNmb3JtKG1hdHJpeCk7IH0KLSAgICB2b2lkIHNldEFuaW1h
dGVkT3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IHNldE9wYWNpdHkob3BhY2l0eSk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCkgT1ZFUlJJREUgeyBzZXRFZmZlY3RpdmVUcmFuc2Zvcm0obWF0cml4KTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkgT1ZFUlJJ
REUgeyBzZXRFZmZlY3RpdmVPcGFjaXR5KG9wYWNpdHkpOyB9CisjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQorICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycykgT1ZFUlJJREUgeyBzZXRFZmZlY3RpdmVGaWx0ZXJzKGZpbHRlcnMp
OyB9CisjZW5kaWYKKworICAgIHZvaWQgc2V0RWZmZWN0aXZlVHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBzZXRFZmZlY3RpdmVPcGFjaXR5KGZsb2F0IHZh
bHVlKSB7IG1fZWZmZWN0aXZlT3BhY2l0eSA9IHZhbHVlICogbV9wbGF0Zm9ybU9wYWNpdHk7IH0K
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGVkRmls
dGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IHNldEZpbHRlcnMoZmlsdGVy
cyk7IH0KKyAgICB2b2lkIHNldEVmZmVjdGl2ZUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycykgeyBtX2VmZmVjdGl2ZUZpbHRlcnMgPSBmaWx0ZXJzOyB9CiAjZW5kaWYKIAog
ICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKQEAgLTE2MywxNyArMTY3LDE5IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOwog
ICAgIH0KIAotICAgIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0gbV90cmFuc2Zvcm07Ci0KICAgICBW
ZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4gbV9jaGlsZHJlbjsKICAgICBUZXh0dXJlTWFwcGVy
TGF5ZXIqIG1fcGFyZW50OwogICAgIFRleHR1cmVNYXBwZXJMYXllciogbV9lZmZlY3RUYXJnZXQ7
CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwog
ICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKiBtX2NvbnRlbnRzTGF5ZXI7CiAgICAgRmxv
YXRTaXplIG1fc2l6ZTsKLSAgICBmbG9hdCBtX29wYWNpdHk7CisgICAgR3JhcGhpY3NMYXllclRy
YW5zZm9ybSBtX2VmZmVjdGl2ZUxheWVyVHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fZWZmZWN0aXZlVHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcGxh
dGZvcm1UcmFuc2Zvcm07CisgICAgZmxvYXQgbV9lZmZlY3RpdmVPcGFjaXR5OworICAgIGZsb2F0
IG1fcGxhdGZvcm1PcGFjaXR5OwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBGaWx0ZXJP
cGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fZWZmZWN0aXZlRmls
dGVyczsKICNlbmRpZgogICAgIGZsb2F0IG1fY2VudGVyWjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVu
dFF0LmNwcAppbmRleCA0NDQyYmFmZmZmNzM3ODQ0NjIxOWEwOTAyZjZjMzllZDY5ZDhlYTg1Li5i
YjUwM2Q2ZTkxN2YyYTAxM2Q1YmM5MDhmZWNmNzQ2NThiOWUxZmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXll
ckNsaWVudFF0LmNwcApAQCAtMTEzLDggKzExMyw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVy
Q2xpZW50UXQ6OnJlbmRlckNvbXBvc2l0ZWRMYXllcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
CiAgICAgICAgIDAsIDAsIDEsIDAsCiAgICAgICAgIHRyYW5zZm9ybS5tMzEoKSwgdHJhbnNmb3Jt
Lm0zMigpLCAwLCB0cmFuc2Zvcm0ubTMzKCkKICAgICAgICAgKTsKLSAgICBtX3Jvb3RUZXh0dXJl
TWFwcGVyTGF5ZXItPnNldFRyYW5zZm9ybShtYXRyaXgpOwotICAgIG1fcm9vdFRleHR1cmVNYXBw
ZXJMYXllci0+c2V0T3BhY2l0eShwYWludGVyLT5vcGFjaXR5KCkpOworICAgIG1fcm9vdFRleHR1
cmVNYXBwZXJMYXllci0+c2V0UGxhdGZvcm1UcmFuc2Zvcm0obWF0cml4KTsKKyAgICBtX3Jvb3RU
ZXh0dXJlTWFwcGVyTGF5ZXItPnNldFBsYXRmb3JtT3BhY2l0eShwYWludGVyLT5vcGFjaXR5KCkp
OwogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZygpOwogICAgIG1fdGV4dHVyZU1h
cHBlci0+YmVnaW5DbGlwKG1hdHJpeCwgY2xpcCk7CiAgICAgbV9yb290VGV4dHVyZU1hcHBlckxh
eWVyLT5wYWludCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180767</attachid>
            <date>2012-12-26 17:09:10 -0800</date>
            <delta_ts>2012-12-26 17:17:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105760-20121227100619.patch</filename>
            <type>text/plain</type>
            <size>15083</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk2YTlkODZjOGY3ZTc1
MzRlMjBiYjgzZTFkNWRmZjJjNTJlYTg0My4uYTBjMmQwNmVkODQ1NzQ2MjA1YWU5NGVkZmQ5OThm
ZmRkY2FhMDA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDEyLTEyLTI2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBd
IFJlbmFtZSBlZmZlY3RpdmVbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVyZU1h
cHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGV4dHVyZU1hcHBlckxheWVyIGhhcyB0d28gdHJhbnNmb3JtIG1lbWJlcnM6IGFuIG9yaWdp
bmFsIHZhbHVlIGFuZCBhCisgICAgICAgIGNoYW5nZWFibGUgdmFsdWUuIFRoZSBjaGFuZ2VhYmxl
IHZhbHVlIHdvdWxkIGJlIGNoYW5nZWQgYnkgYW5pbWF0aW9ucy4KKyAgICAgICAgVGhpcyBwYXRj
aCBwdXRzICdlZmZlY3RpdmUnIHByZWZpeCBvbiB0aGUgY2hhbmdlYWJsZSB2YWx1ZSB0byBjbGFy
aWZ5CisgICAgICAgIGl0cyBwdXJwb3NlLiBPcGFjaXR5IGFuZCBmaWx0ZXJzIGRpdHRvLgorCisg
ICAgICAgIEluIGFkZGl0aW9uLCB0aGlzIHBhdGNoIG1ha2VzIHNldFRyYW5zZm9ybSgpIGNoYW5n
ZSBtX3N0YXRlLnRyYW5zZm9ybSB0bworICAgICAgICBtYXRjaCB0aGUgcHVycG9zZSBvZiB0aGUg
bWV0aG9kLiBzZXRPcGFjaXR5KCkgZGl0dG8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBSZWZh
Y3RvcmluZyBvbmx5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNob3VsZFBhaW50VG9JbnRlcm1lZGlhdGVT
dXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aXNWaXNpYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hp
bGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnBhaW50UmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnN5bmNBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6
CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpzZXRFZmZlY3RpdmVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpzZXRFZmZlY3RpdmVPcGFjaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RWZmZWN0aXZlRmlsdGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlN0YXRlOjpTdGF0ZSk6CisKKzIwMTItMTItMjYg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgW1Rl
eE1hcF0gQSBNaW5vciBvcHRpbWl6YXRpb24gb2YgR3JhcGhpY3NMYXllclRyYW5zZm9ybS4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc1OAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGI1OWFmNjY4NzlkNzhkMzRlYzg1OTQ1NTdk
M2I1MzgxNzdhMzA2ZTcuLmU2NmYzMmZhOTgwY2EwNjkyYTQ2N2Y3OTlmZDBmMjZiNDBhOGFlMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC00Miw3ICs0MiwxNCBAQCBjb25zdCBU
ZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6cm9vdExheWVyKCkgY29uc3QK
IAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4KQogewotICAgIG1fdHJhbnNmb3JtLnNldExvY2FsVHJhbnNmb3Jt
KG1hdHJpeCk7CisgICAgbV9zdGF0ZS50cmFuc2Zvcm0gPSBtYXRyaXg7CisgICAgc2V0RWZmZWN0
aXZlVHJhbnNmb3JtKG1hdHJpeCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRP
cGFjaXR5KGZsb2F0IHZhbHVlKQoreworICAgIG1fc3RhdGUub3BhY2l0eSA9IHZhbHVlOworICAg
IHNldEVmZmVjdGl2ZU9wYWNpdHkodmFsdWUpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkKQEAgLTYzLDE1ICs3MCwxNSBAQCB2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKQogICAgIC8v
IENvbXB1dGUgdHJhbnNmb3JtcyByZWN1cnNpdmVseSBvbiB0aGUgd2F5IGRvd24gdG8gbGVhZnMu
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNmb3JtOwogICAgIGlmIChtX3Bh
cmVudCkKLSAgICAgICAgcGFyZW50VHJhbnNmb3JtID0gbV9wYXJlbnQtPm1fdHJhbnNmb3JtLmNv
bWJpbmVkRm9yQ2hpbGRyZW4oKTsKKyAgICAgICAgcGFyZW50VHJhbnNmb3JtID0gbV9wYXJlbnQt
Pm1fZWZmZWN0aXZlVHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKTsKICAgICBlbHNlIGlm
IChtX2VmZmVjdFRhcmdldCkKLSAgICAgICAgcGFyZW50VHJhbnNmb3JtID0gbV9lZmZlY3RUYXJn
ZXQtPm1fdHJhbnNmb3JtLmNvbWJpbmVkKCk7Ci0gICAgbV90cmFuc2Zvcm0uY29tYmluZVRyYW5z
Zm9ybXMocGFyZW50VHJhbnNmb3JtKTsKKyAgICAgICAgcGFyZW50VHJhbnNmb3JtID0gbV9lZmZl
Y3RUYXJnZXQtPm1fZWZmZWN0aXZlVHJhbnNmb3JtLmNvbWJpbmVkKCk7CisgICAgbV9lZmZlY3Rp
dmVUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50VHJhbnNmb3JtKTsKIAotICAgIG1f
c3RhdGUudmlzaWJsZSA9IG1fc3RhdGUuYmFja2ZhY2VWaXNpYmlsaXR5IHx8ICFtX3RyYW5zZm9y
bS5jb21iaW5lZCgpLmlzQmFja0ZhY2VWaXNpYmxlKCk7CisgICAgbV9zdGF0ZS52aXNpYmxlID0g
bV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgfHwgIW1fZWZmZWN0aXZlVHJhbnNmb3JtLmNvbWJp
bmVkKCkuaXNCYWNrRmFjZVZpc2libGUoKTsKIAogICAgIGlmIChtX3BhcmVudCAmJiBtX3BhcmVu
dC0+bV9zdGF0ZS5wcmVzZXJ2ZXMzRCkKLSAgICAgICAgbV9jZW50ZXJaID0gbV90cmFuc2Zvcm0u
Y29tYmluZWQoKS5tYXBQb2ludChGbG9hdFBvaW50M0QobV9zaXplLndpZHRoKCkgLyAyLCBtX3Np
emUuaGVpZ2h0KCkgLyAyLCAwKSkueigpOworICAgICAgICBtX2NlbnRlclogPSBtX2VmZmVjdGl2
ZVRyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFBvaW50KEZsb2F0UG9pbnQzRChtX3NpemUud2lkdGgo
KSAvIDIsIG1fc2l6ZS5oZWlnaHQoKSAvIDIsIDApKS56KCk7CiAKICAgICBpZiAobV9zdGF0ZS5t
YXNrTGF5ZXIpCiAgICAgICAgIG1fc3RhdGUubWFza0xheWVyLT5jb21wdXRlVHJhbnNmb3Jtc1Jl
Y3Vyc2l2ZSgpOwpAQCAtMTA0LDcgKzExMSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpw
YWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShv
cHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25zLm9mZnNldC5oZWlnaHQoKSk7CiAgICAgdHJh
bnNmb3JtLm11bHRpcGx5KG9wdGlvbnMudHJhbnNmb3JtKTsKLSAgICB0cmFuc2Zvcm0ubXVsdGlw
bHkobV90cmFuc2Zvcm0uY29tYmluZWQoKSk7CisgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1fZWZm
ZWN0aXZlVHJhbnNmb3JtLmNvbWJpbmVkKCkpOwogCiAgICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlv
bnMub3BhY2l0eTsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzayA9IG9wdGlvbnMubWFz
azsKQEAgLTE1NCw3ICsxNjEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxm
QW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgbwogCiAgICAgYm9v
bCBzaG91bGRDbGlwID0gbV9zdGF0ZS5tYXNrc1RvQm91bmRzICYmICFtX3N0YXRlLnByZXNlcnZl
czNEOwogICAgIGlmIChzaG91bGRDbGlwKQotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIt
PmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeChvcHRpb25zLnRyYW5zZm9ybSkubXVsdGlw
bHkobV90cmFuc2Zvcm0uY29tYmluZWQoKSksIGxheWVyUmVjdCgpKTsKKyAgICAgICAgb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgob3B0aW9ucy50
cmFuc2Zvcm0pLm11bHRpcGx5KG1fZWZmZWN0aXZlVHJhbnNmb3JtLmNvbWJpbmVkKCkpLCBsYXll
clJlY3QoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgp
OyArK2kpCiAgICAgICAgIG1fY2hpbGRyZW5baV0tPnBhaW50UmVjdXJzaXZlKG9wdGlvbnMpOwpA
QCAtMTY2LDEzICsxNzMsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFu
ZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG8KIEludFJlY3QgVGV4
dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpCiB7CiAgICAgLy8gRklY
TUU6IEFkZCBhbiBpbnZlcnNlIHRyYW5zZm9ybSB0byBMYXllclRyYW5zZm9ybS4KLSAgICByZXR1
cm4gaW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobV90cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkpOworICAgIHJldHVybiBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtX2VmZmVjdGl2ZVRyYW5z
Zm9ybS5jb21iaW5lZCgpLmludmVyc2UoKSk7CiB9CiAKIEludFJlY3QgVGV4dHVyZU1hcHBlckxh
eWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KQogewogICAgIEludFJlY3QgcmVjdDsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBs
b2NhbFRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KG1hdHJpeCkubXVsdGlwbHkobV90
cmFuc2Zvcm0uY29tYmluZWQoKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWxUcmFu
c2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtYXRyaXgpLm11bHRpcGx5KG1fZWZmZWN0aXZl
VHJhbnNmb3JtLmNvbWJpbmVkKCkpOwogICAgIHJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxvY2Fs
VHJhbnNmb3JtLm1hcFJlY3QobGF5ZXJSZWN0KCkpKTsKICAgICBpZiAoIW1fc3RhdGUubWFza3NU
b0JvdW5kcyAmJiAhbV9zdGF0ZS5tYXNrTGF5ZXIpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQpAQCAtMTgwLDEyICsxODcsMTIgQEAgSW50
UmVjdCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JgogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAg
ICBpZiAobV9maWx0ZXJzLmhhc091dHNldHMoKSkgeworICAgIGlmIChtX2VmZmVjdGl2ZUZpbHRl
cnMuaGFzT3V0c2V0cygpKSB7CiAgICAgICAgIGludCBsZWZ0T3V0c2V0OwogICAgICAgICBpbnQg
dG9wT3V0c2V0OwogICAgICAgICBpbnQgYm90dG9tT3V0c2V0OwogICAgICAgICBpbnQgcmlnaHRP
dXRzZXQ7Ci0gICAgICAgIG1fZmlsdGVycy5nZXRPdXRzZXRzKHRvcE91dHNldCwgcmlnaHRPdXRz
ZXQsIGJvdHRvbU91dHNldCwgbGVmdE91dHNldCk7CisgICAgICAgIG1fZWZmZWN0aXZlRmlsdGVy
cy5nZXRPdXRzZXRzKHRvcE91dHNldCwgcmlnaHRPdXRzZXQsIGJvdHRvbU91dHNldCwgbGVmdE91
dHNldCk7CiAgICAgICAgIEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QocmVjdCk7CiAgICAg
ICAgIHJlY3QubW92ZShzdGQ6Om1heCgwLCAtbGVmdE91dHNldCksIHN0ZDo6bWF4KDAsIC10b3BP
dXRzZXQpKTsKICAgICAgICAgcmVjdC5leHBhbmQobGVmdE91dHNldCArIHJpZ2h0T3V0c2V0LCB0
b3BPdXRzZXQgKyBib3R0b21PdXRzZXQpOwpAQCAtMjE5LDEwICsyMjYsMTAgQEAgVGV4dHVyZU1h
cHBlckxheWVyOjpDb250ZW50c0xheWVyQ291bnQgVGV4dHVyZU1hcHBlckxheWVyOjpjb3VudFBv
dGVudGlhbExheWVyc1cKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRQYWludFRvSW50
ZXJtZWRpYXRlU3VyZmFjZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAg
IGlmIChtX2ZpbHRlcnMuc2l6ZSgpKQorICAgIGlmIChtX2VmZmVjdGl2ZUZpbHRlcnMuc2l6ZSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIGJvb2wgaGFzT3BhY2l0eSA9IG1f
b3BhY2l0eSA8IDAuOTk7CisgICAgYm9vbCBoYXNPcGFjaXR5ID0gbV9lZmZlY3RpdmVPcGFjaXR5
IDwgMC45OTsKICAgICBib29sIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ID0gY291
bnRQb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMoKSA9PSBNdWx0aXBsZUxheWVyc1dpdGhDb250
ZW50czsKICAgICBib29sIGhhc1JlcGxpY2EgPSAhIW1fc3RhdGUucmVwbGljYUxheWVyOwogICAg
IGJvb2wgaGFzTWFzayA9ICEhbV9zdGF0ZS5tYXNrTGF5ZXI7CkBAIC0yNTMsNyArMjYwLDcgQEAg
Ym9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmlzVmlzaWJsZSgpIGNvbnN0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIW1fc3RhdGUuY29udGVudHNWaXNpYmxlICYmIG1fY2hpbGRyZW4u
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fb3BhY2l0eSA8IDAu
MDEpCisgICAgaWYgKG1fZWZmZWN0aXZlT3BhY2l0eSA8IDAuMDEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI2OCw4ICsyNzUsOCBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0
dXJlTWFwcGVyUGFpbgogICAgICAgICAgICAgcmVwbGljYU9wdGlvbnMubWFzayA9IG1fc3RhdGUu
cmVwbGljYUxheWVyLT5tX3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpOwogCiAgICAgICAgIHJl
cGxpY2FPcHRpb25zLnRyYW5zZm9ybQotICAgICAgICAgICAgICAgICAgLm11bHRpcGx5KG1fc3Rh
dGUucmVwbGljYUxheWVyLT5tX3RyYW5zZm9ybS5jb21iaW5lZCgpKQotICAgICAgICAgICAgICAg
ICAgLm11bHRpcGx5KG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKKyAgICAgICAg
ICAgIC5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9lZmZlY3RpdmVUcmFuc2Zvcm0u
Y29tYmluZWQoKSkKKyAgICAgICAgICAgIC5tdWx0aXBseShtX2VmZmVjdGl2ZVRyYW5zZm9ybS5j
b21iaW5lZCgpLmludmVyc2UoKSk7CiAgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKHJlcGxp
Y2FPcHRpb25zKTsKICAgICB9CiAKQEAgLTMwOCw3ICszMTUsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucwogICAgIGlmICghaXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZs
b2F0IG9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHkgKiBtX29wYWNpdHk7CisgICAgZmxvYXQgb3Bh
Y2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fZWZmZWN0aXZlT3BhY2l0eTsKICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gbWFza1RleHR1cmUgPSBtX3N0YXRlLm1hc2tMYXllciA/IG1fc3RhdGUu
bWFza0xheWVyLT50ZXh0dXJlKCkgOiAwOwogCiAgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyBwYWludE9wdGlvbnMob3B0aW9ucyk7CkBAIC0zMjgsNyArMzM1LDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmIG9wdGlvbnMKICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHN1cmZh
Y2UuZ2V0KCkpOwogICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0gMTsKIAotICAgIHBhaW50T3B0
aW9ucy50cmFuc2Zvcm0gPSBtX3RyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKKyAgICBw
YWludE9wdGlvbnMudHJhbnNmb3JtID0gbV9lZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmluZWQoKS5p
bnZlcnNlKCk7CiAgICAgcGFpbnRPcHRpb25zLm9mZnNldCA9IC1JbnRTaXplKHN1cmZhY2VSZWN0
LngoKSwgc3VyZmFjZVJlY3QueSgpKTsKIAogICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJl
cGxpY2EocGFpbnRPcHRpb25zKTsKQEAgLTMzOCwxNCArMzQ1LDE0IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
JiBvcHRpb25zCiAgICAgICAgIG1hc2tUZXh0dXJlID0gMDsKIAogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKLSAgICBzdXJmYWNlID0gYXBwbHlGaWx0ZXJzKG1fZmlsdGVycywgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLCBzdXJmYWNlLmdldCgpLCBzdXJmYWNlUmVjdCk7CisgICAgc3VyZmFjZSA9IGFw
cGx5RmlsdGVycyhtX2VmZmVjdGl2ZUZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3Vy
ZmFjZS5nZXQoKSwgc3VyZmFjZVJlY3QpOwogI2VuZGlmCiAKICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmJpbmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CiAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdldFRyYW5zZm9ybS50cmFuc2xh
dGUob3B0aW9ucy5vZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVpZ2h0KCkpOwogICAg
IHRhcmdldFRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7Ci0gICAgdGFyZ2V0
VHJhbnNmb3JtLm11bHRpcGx5KG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkpOworICAgIHRhcmdldFRy
YW5zZm9ybS5tdWx0aXBseShtX2VmZmVjdGl2ZVRyYW5zZm9ybS5jb21iaW5lZCgpKTsKIAogICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZh
Y2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKIH0K
QEAgLTQxNiwxMSArNDIzLDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAKICAgICBtX2Nv
bnRlbnRzTGF5ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAKLSAgICBtX3Ry
YW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwotICAgIG1fdHJhbnNmb3Jt
LnNldEFuY2hvclBvaW50KG1fc3RhdGUuYW5jaG9yUG9pbnQpOwotICAgIG1fdHJhbnNmb3JtLnNl
dFNpemUobV9zdGF0ZS5zaXplKTsKLSAgICBtX3RyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFtX3N0
YXRlLnByZXNlcnZlczNEKTsKLSAgICBtX3RyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybSht
X3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKKyAgICBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5zZXRQ
b3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOworICAgIG1fZWZmZWN0aXZlVHJhbnNmb3JtLnNl
dEFuY2hvclBvaW50KG1fc3RhdGUuYW5jaG9yUG9pbnQpOworICAgIG1fZWZmZWN0aXZlVHJhbnNm
b3JtLnNldFNpemUobV9zdGF0ZS5zaXplKTsKKyAgICBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5zZXRG
bGF0dGVuaW5nKCFtX3N0YXRlLnByZXNlcnZlczNEKTsKKyAgICBtX2VmZmVjdGl2ZVRyYW5zZm9y
bS5zZXRMb2NhbFRyYW5zZm9ybShtX3N0YXRlLnRyYW5zZm9ybSk7CisgICAgbV9lZmZlY3RpdmVU
cmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0obV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7
CiAKICAgICBzeW5jQW5pbWF0aW9ucygpOwogfQpAQCAtNDk1LDEyICs1MDMsMTIgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnN5bmNBbmltYXRpb25zKCkKIHsKICAgICBtX2FuaW1hdGlvbnMu
YXBwbHkodGhpcyk7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMuaGFzQWN0aXZlQW5pbWF0aW9uc09m
VHlwZShBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSkKLSAgICAgICAgc2V0VHJhbnNm
b3JtKG1fc3RhdGUudHJhbnNmb3JtKTsKKyAgICAgICAgc2V0RWZmZWN0aXZlVHJhbnNmb3JtKG1f
c3RhdGUudHJhbnNmb3JtKTsKICAgICBpZiAoIW1fYW5pbWF0aW9ucy5oYXNBY3RpdmVBbmltYXRp
b25zT2ZUeXBlKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgc2V0T3BhY2l0eSht
X3N0YXRlLm9wYWNpdHkpOworICAgICAgICBzZXRFZmZlY3RpdmVPcGFjaXR5KG1fc3RhdGUub3Bh
Y2l0eSk7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGlmICghbV9hbmltYXRpb25zLmhh
c0FjdGl2ZUFuaW1hdGlvbnNPZlR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcikpCi0g
ICAgICAgIHNldEZpbHRlcnMobV9zdGF0ZS5maWx0ZXJzKTsKKyAgICAgICAgc2V0RWZmZWN0aXZl
RmlsdGVycyhtX3N0YXRlLmZpbHRlcnMpOwogI2VuZGlmCiB9CiAKQEAgLTUyNCw3ICs1MzIsNyBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVk
KGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiAgICAgICAgIG1fc2Nyb2xsUG9zaXRpb25EZWx0YSA9
IEZsb2F0U2l6ZSgpOwogICAgIGVsc2UKICAgICAgICAgbV9zY3JvbGxQb3NpdGlvbkRlbHRhID0g
ZGVsdGE7Ci0gICAgbV90cmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsK
KyAgICBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggM2JlNDg0MmQ2MDk0ZDBmMjZk
MmM1Y2I5M2VhZmY2MTlhYjAzYzM0Ni4uZThlODU1MzQyYjYxMjVhNzBiYTc4NTdmODQyOTNhYzdm
NDM3ODVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV9wYXJlbnQoMCkKICAgICAgICAgLCBtX2VmZmVjdFRhcmdldCgwKQog
ICAgICAgICAsIG1fY29udGVudHNMYXllcigwKQotICAgICAgICAsIG1fb3BhY2l0eSgxKQorICAg
ICAgICAsIG1fZWZmZWN0aXZlT3BhY2l0eSgxKQogICAgICAgICAsIG1fY2VudGVyWigwKQogICAg
ICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQogICAgIHsgfQpAQCAtMTAwLDEwICsxMDAsNyBAQCBw
dWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0OwogICAgIHZv
aWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlciopOwogICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7Ci0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKSB7IG1fb3BhY2l0eSA9
IHZhbHVlOyB9Ci0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZvaWQgc2V0RmlsdGVycyhj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVycyA9IGZpbHRlcnM7IH0K
LSNlbmRpZgorICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CiAgICAgdm9pZCBzZXRUZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7
IH0KICAgICBib29sIGRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29u
c3Q7CiAKQEAgLTE0MSwxMCArMTM4LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludFNlbGZB
bmRDaGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsK
IAogICAgIC8vIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OkNsaWVudAotICAgIHZvaWQgc2V0QW5p
bWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBzZXRU
cmFuc2Zvcm0obWF0cml4KTsgfQotICAgIHZvaWQgc2V0QW5pbWF0ZWRPcGFjaXR5KGZsb2F0IG9w
YWNpdHkpIHsgc2V0T3BhY2l0eShvcGFjaXR5KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBbmlt
YXRlZFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KSBPVkVSUklE
RSB7IHNldEVmZmVjdGl2ZVRyYW5zZm9ybShtYXRyaXgpOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dEFuaW1hdGVkT3BhY2l0eShmbG9hdCBvcGFjaXR5KSBPVkVSUklERSB7IHNldEVmZmVjdGl2ZU9w
YWNpdHkob3BhY2l0eSk7IH0KKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdmlydHVhbCB2
b2lkIHNldEFuaW1hdGVkRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBP
VkVSUklERSB7IHNldEVmZmVjdGl2ZUZpbHRlcnMoZmlsdGVycyk7IH0KKyNlbmRpZgorCisgICAg
dm9pZCBzZXRFZmZlY3RpdmVUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCkgeyBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybShtYXRyaXgpOyB9
CisgICAgdm9pZCBzZXRFZmZlY3RpdmVPcGFjaXR5KGZsb2F0IHZhbHVlKSB7IG1fZWZmZWN0aXZl
T3BhY2l0eSA9IHZhbHVlOyB9CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZpcnR1YWwg
dm9pZCBzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykg
eyBzZXRGaWx0ZXJzKGZpbHRlcnMpOyB9CisgICAgdm9pZCBzZXRFZmZlY3RpdmVGaWx0ZXJzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9lZmZlY3RpdmVGaWx0ZXJzID0gZmls
dGVyczsgfQogI2VuZGlmCiAKICAgICB2b2lkIHN5bmNBbmltYXRpb25zKCk7CkBAIC0xNjMsMTcg
KzE2NiwxNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgbV9zaXplKTsKICAgICB9CiAKLSAgICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1f
dHJhbnNmb3JtOwotCiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+IG1fY2hpbGRyZW47
CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX3BhcmVudDsKICAgICBUZXh0dXJlTWFwcGVyTGF5
ZXIqIG1fZWZmZWN0VGFyZ2V0OwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
PiBtX2JhY2tpbmdTdG9yZTsKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogbV9jb250
ZW50c0xheWVyOwogICAgIEZsb2F0U2l6ZSBtX3NpemU7Ci0gICAgZmxvYXQgbV9vcGFjaXR5Owor
ICAgIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0gbV9lZmZlY3RpdmVUcmFuc2Zvcm07CisgICAgZmxv
YXQgbV9lZmZlY3RpdmVPcGFjaXR5OwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBGaWx0
ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fZWZmZWN0aXZl
RmlsdGVyczsKICNlbmRpZgogICAgIGZsb2F0IG1fY2VudGVyWjsKIApAQCAtMjAxLDcgKzIwMyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgdmlzaWJsZSA6IDE7CiAKICAgICAgICAgU3RhdGUo
KQotICAgICAgICAgICAgOiBvcGFjaXR5KDEuZikKKyAgICAgICAgICAgIDogb3BhY2l0eSgxKQog
ICAgICAgICAgICAgLCBtYXNrTGF5ZXIoMCkKICAgICAgICAgICAgICwgcmVwbGljYUxheWVyKDAp
CiAgICAgICAgICAgICAsIHByZXNlcnZlczNEKGZhbHNlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180768</attachid>
            <date>2012-12-26 17:26:56 -0800</date>
            <delta_ts>2013-01-02 20:06:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105760-20121227102404.patch</filename>
            <type>text/plain</type>
            <size>16735</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk2YTlkODZjOGY3ZTc1
MzRlMjBiYjgzZTFkNWRmZjJjNTJlYTg0My4uYjFmM2IwOTc0NDM4Nzk3ZDUxMjMyN2UxNDU1ODI4
OWJjZTI1ODEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEyLTEyLTI2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBd
IFJlbmFtZSBlZmZlY3RpdmVbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVyZU1h
cHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGV4dHVyZU1hcHBlckxheWVyIGhhcyB0d28gdHJhbnNmb3JtIG1lbWJlcnM6IGFuIG9yaWdp
bmFsIHZhbHVlIGFuZCBhCisgICAgICAgIGNoYW5nZWFibGUgdmFsdWUuIFRoZSBjaGFuZ2VhYmxl
IHZhbHVlIHdvdWxkIGJlIGNoYW5nZWQgYnkgYW5pbWF0aW9ucy4KKyAgICAgICAgVGhpcyBwYXRj
aCBwdXRzICdlZmZlY3RpdmUnIHByZWZpeCBvbiB0aGUgY2hhbmdlYWJsZSB2YWx1ZSB0byBjbGFy
aWZ5CisgICAgICAgIGl0cyBwdXJwb3NlLiBPcGFjaXR5IGFuZCBmaWx0ZXJzIGRpdHRvLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gUmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFjZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRQYWludFRv
SW50ZXJtZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OmlzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzeW5jQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJ
Zk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RWZmZWN0aXZlVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RWZmZWN0aXZlT3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEVmZmVjdGl2ZUZpbHRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpTdGF0ZTo6U3RhdGUpOgor
CisyMDEyLTEyLTI2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgor
CiAgICAgICAgIFtUZXhNYXBdIEEgTWlub3Igb3B0aW1pemF0aW9uIG9mIEdyYXBoaWNzTGF5ZXJU
cmFuc2Zvcm0uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDU3NTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyODRmNWRkN2M0NmQwZTg5YzkyMWIwN2U3NWQy
ZmJkYzI2MzVlMzU0Li4zZTI5YTJmMjgyYjc2ZjQyMTAwODg5MmZiMmEzZjcyMmIzMDllOTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTI2ICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBdIFJlbmFtZSBl
ZmZlY3RpdmVbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVyZU1hcHBlckxheWVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NzYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGV4dHVy
ZU1hcHBlckxheWVyQ2xpZW50UXQgdXNlcyBzZXRUcmFuc2Zvcm0oKSBhbmQgc2V0T3BhY2l0eSgp
IGluCisgICAgICAgIEdyYXBoaWNzTGF5ZXIgaW5zdGVhZCBvZiBUZXh0dXJlTWFwcGVyTGF5ZXIg
bGlrZSBMYXllclRyZWVSZW5kZXJlci4KKyAgICAgICAgSXQgY2FuIHJlZHVjZSB0aGUgbnVtYmVy
IG9mIHB1YmxpYyBBUEkgb2YgVGV4dHVyZU1hcHBlckxheWVyLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoVGV4dHVy
ZU1hcHBlckxheWVyQ2xpZW50UXQ6OnJlbmRlckNvbXBvc2l0ZWRMYXllcnMpOgorCiAyMDEyLTEy
LTIzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjgwODM3Nz4gTmV0d29yayBwcm9jZXNzIHNob3VsZCByZXNwZWN0IGNvb2tp
ZSBhY2NlcHQgcG9saWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGI1OWFmNjY4
NzlkNzhkMzRlYzg1OTQ1NTdkM2I1MzgxNzdhMzA2ZTcuLjg2MjkxNWJjMGZmZTQxNTIyM2U0OGUx
MDFlMWRlNzViMDFmNjlmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC00MCwx
MSArNDAsNiBAQCBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6
cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
KQotewotICAgIG1fdHJhbnNmb3JtLnNldExvY2FsVHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KIHZv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpjbGVhckJhY2tpbmdTdG9yZXNSZWN1cnNpdmUoKQogewog
ICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CkBAIC02MywxNSArNTgsMTUgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCkKICAgICAvLyBDb21w
dXRlIHRyYW5zZm9ybXMgcmVjdXJzaXZlbHkgb24gdGhlIHdheSBkb3duIHRvIGxlYWZzLgogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zZm9ybTsKICAgICBpZiAobV9wYXJlbnQp
Ci0gICAgICAgIHBhcmVudFRyYW5zZm9ybSA9IG1fcGFyZW50LT5tX3RyYW5zZm9ybS5jb21iaW5l
ZEZvckNoaWxkcmVuKCk7CisgICAgICAgIHBhcmVudFRyYW5zZm9ybSA9IG1fcGFyZW50LT5tX2Vm
ZmVjdGl2ZVRyYW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCk7CiAgICAgZWxzZSBpZiAobV9l
ZmZlY3RUYXJnZXQpCi0gICAgICAgIHBhcmVudFRyYW5zZm9ybSA9IG1fZWZmZWN0VGFyZ2V0LT5t
X3RyYW5zZm9ybS5jb21iaW5lZCgpOwotICAgIG1fdHJhbnNmb3JtLmNvbWJpbmVUcmFuc2Zvcm1z
KHBhcmVudFRyYW5zZm9ybSk7CisgICAgICAgIHBhcmVudFRyYW5zZm9ybSA9IG1fZWZmZWN0VGFy
Z2V0LT5tX2VmZmVjdGl2ZVRyYW5zZm9ybS5jb21iaW5lZCgpOworICAgIG1fZWZmZWN0aXZlVHJh
bnNmb3JtLmNvbWJpbmVUcmFuc2Zvcm1zKHBhcmVudFRyYW5zZm9ybSk7CiAKLSAgICBtX3N0YXRl
LnZpc2libGUgPSBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSB8fCAhbV90cmFuc2Zvcm0uY29t
YmluZWQoKS5pc0JhY2tGYWNlVmlzaWJsZSgpOworICAgIG1fc3RhdGUudmlzaWJsZSA9IG1fc3Rh
dGUuYmFja2ZhY2VWaXNpYmlsaXR5IHx8ICFtX2VmZmVjdGl2ZVRyYW5zZm9ybS5jb21iaW5lZCgp
LmlzQmFja0ZhY2VWaXNpYmxlKCk7CiAKICAgICBpZiAobV9wYXJlbnQgJiYgbV9wYXJlbnQtPm1f
c3RhdGUucHJlc2VydmVzM0QpCi0gICAgICAgIG1fY2VudGVyWiA9IG1fdHJhbnNmb3JtLmNvbWJp
bmVkKCkubWFwUG9pbnQoRmxvYXRQb2ludDNEKG1fc2l6ZS53aWR0aCgpIC8gMiwgbV9zaXplLmhl
aWdodCgpIC8gMiwgMCkpLnooKTsKKyAgICAgICAgbV9jZW50ZXJaID0gbV9lZmZlY3RpdmVUcmFu
c2Zvcm0uY29tYmluZWQoKS5tYXBQb2ludChGbG9hdFBvaW50M0QobV9zaXplLndpZHRoKCkgLyAy
LCBtX3NpemUuaGVpZ2h0KCkgLyAyLCAwKSkueigpOwogCiAgICAgaWYgKG1fc3RhdGUubWFza0xh
eWVyKQogICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+Y29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNp
dmUoKTsKQEAgLTEwNCw3ICs5OSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNl
bGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25z
Lm9mZnNldC53aWR0aCgpLCBvcHRpb25zLm9mZnNldC5oZWlnaHQoKSk7CiAgICAgdHJhbnNmb3Jt
Lm11bHRpcGx5KG9wdGlvbnMudHJhbnNmb3JtKTsKLSAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobV90
cmFuc2Zvcm0uY29tYmluZWQoKSk7CisgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1fZWZmZWN0aXZl
VHJhbnNmb3JtLmNvbWJpbmVkKCkpOwogCiAgICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMub3Bh
Y2l0eTsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzayA9IG9wdGlvbnMubWFzazsKQEAg
LTE1NCw3ICsxNDksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hp
bGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgbwogCiAgICAgYm9vbCBzaG91
bGRDbGlwID0gbV9zdGF0ZS5tYXNrc1RvQm91bmRzICYmICFtX3N0YXRlLnByZXNlcnZlczNEOwog
ICAgIGlmIChzaG91bGRDbGlwKQotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2lu
Q2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeChvcHRpb25zLnRyYW5zZm9ybSkubXVsdGlwbHkobV90
cmFuc2Zvcm0uY29tYmluZWQoKSksIGxheWVyUmVjdCgpKTsKKyAgICAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgob3B0aW9ucy50cmFuc2Zv
cm0pLm11bHRpcGx5KG1fZWZmZWN0aXZlVHJhbnNmb3JtLmNvbWJpbmVkKCkpLCBsYXllclJlY3Qo
KSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kp
CiAgICAgICAgIG1fY2hpbGRyZW5baV0tPnBhaW50UmVjdXJzaXZlKG9wdGlvbnMpOwpAQCAtMTY2
LDEzICsxNjEsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxk
cmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG8KIEludFJlY3QgVGV4dHVyZU1h
cHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpCiB7CiAgICAgLy8gRklYTUU6IEFk
ZCBhbiBpbnZlcnNlIHRyYW5zZm9ybSB0byBMYXllclRyYW5zZm9ybS4KLSAgICByZXR1cm4gaW50
ZXJtZWRpYXRlU3VyZmFjZVJlY3QobV90cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOwor
ICAgIHJldHVybiBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtX2VmZmVjdGl2ZVRyYW5zZm9ybS5j
b21iaW5lZCgpLmludmVyc2UoKSk7CiB9CiAKIEludFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjpp
bnRlcm1lZGlhdGVTdXJmYWNlUmVjdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
KQogewogICAgIEludFJlY3QgcmVjdDsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsb2NhbFRy
YW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KG1hdHJpeCkubXVsdGlwbHkobV90cmFuc2Zv
cm0uY29tYmluZWQoKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWxUcmFuc2Zvcm0g
PSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtYXRyaXgpLm11bHRpcGx5KG1fZWZmZWN0aXZlVHJhbnNm
b3JtLmNvbWJpbmVkKCkpOwogICAgIHJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxvY2FsVHJhbnNm
b3JtLm1hcFJlY3QobGF5ZXJSZWN0KCkpKTsKICAgICBpZiAoIW1fc3RhdGUubWFza3NUb0JvdW5k
cyAmJiAhbV9zdGF0ZS5tYXNrTGF5ZXIpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQpAQCAtMTgwLDEyICsxNzUsMTIgQEAgSW50UmVjdCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JgogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBpZiAo
bV9maWx0ZXJzLmhhc091dHNldHMoKSkgeworICAgIGlmIChtX2VmZmVjdGl2ZUZpbHRlcnMuaGFz
T3V0c2V0cygpKSB7CiAgICAgICAgIGludCBsZWZ0T3V0c2V0OwogICAgICAgICBpbnQgdG9wT3V0
c2V0OwogICAgICAgICBpbnQgYm90dG9tT3V0c2V0OwogICAgICAgICBpbnQgcmlnaHRPdXRzZXQ7
Ci0gICAgICAgIG1fZmlsdGVycy5nZXRPdXRzZXRzKHRvcE91dHNldCwgcmlnaHRPdXRzZXQsIGJv
dHRvbU91dHNldCwgbGVmdE91dHNldCk7CisgICAgICAgIG1fZWZmZWN0aXZlRmlsdGVycy5nZXRP
dXRzZXRzKHRvcE91dHNldCwgcmlnaHRPdXRzZXQsIGJvdHRvbU91dHNldCwgbGVmdE91dHNldCk7
CiAgICAgICAgIEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QocmVjdCk7CiAgICAgICAgIHJl
Y3QubW92ZShzdGQ6Om1heCgwLCAtbGVmdE91dHNldCksIHN0ZDo6bWF4KDAsIC10b3BPdXRzZXQp
KTsKICAgICAgICAgcmVjdC5leHBhbmQobGVmdE91dHNldCArIHJpZ2h0T3V0c2V0LCB0b3BPdXRz
ZXQgKyBib3R0b21PdXRzZXQpOwpAQCAtMjE5LDEwICsyMTQsMTAgQEAgVGV4dHVyZU1hcHBlckxh
eWVyOjpDb250ZW50c0xheWVyQ291bnQgVGV4dHVyZU1hcHBlckxheWVyOjpjb3VudFBvdGVudGlh
bExheWVyc1cKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRQYWludFRvSW50ZXJtZWRp
YXRlU3VyZmFjZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGlmICht
X2ZpbHRlcnMuc2l6ZSgpKQorICAgIGlmIChtX2VmZmVjdGl2ZUZpbHRlcnMuc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIGJvb2wgaGFzT3BhY2l0eSA9IG1fb3BhY2l0
eSA8IDAuOTk7CisgICAgYm9vbCBoYXNPcGFjaXR5ID0gbV9lZmZlY3RpdmVPcGFjaXR5IDwgMC45
OTsKICAgICBib29sIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ID0gY291bnRQb3Rl
bnRpYWxMYXllcnNXaXRoQ29udGVudHMoKSA9PSBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50czsK
ICAgICBib29sIGhhc1JlcGxpY2EgPSAhIW1fc3RhdGUucmVwbGljYUxheWVyOwogICAgIGJvb2wg
aGFzTWFzayA9ICEhbV9zdGF0ZS5tYXNrTGF5ZXI7CkBAIC0yNTMsNyArMjQ4LDcgQEAgYm9vbCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OmlzVmlzaWJsZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIW1fc3RhdGUuY29udGVudHNWaXNpYmxlICYmIG1fY2hpbGRyZW4uaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fb3BhY2l0eSA8IDAuMDEpCisg
ICAgaWYgKG1fZWZmZWN0aXZlT3BhY2l0eSA8IDAuMDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI2OCw4ICsyNjMsOCBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFw
cGVyUGFpbgogICAgICAgICAgICAgcmVwbGljYU9wdGlvbnMubWFzayA9IG1fc3RhdGUucmVwbGlj
YUxheWVyLT5tX3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpOwogCiAgICAgICAgIHJlcGxpY2FP
cHRpb25zLnRyYW5zZm9ybQotICAgICAgICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVw
bGljYUxheWVyLT5tX3RyYW5zZm9ybS5jb21iaW5lZCgpKQotICAgICAgICAgICAgICAgICAgLm11
bHRpcGx5KG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKKyAgICAgICAgICAgIC5t
dWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9lZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmlu
ZWQoKSkKKyAgICAgICAgICAgIC5tdWx0aXBseShtX2VmZmVjdGl2ZVRyYW5zZm9ybS5jb21iaW5l
ZCgpLmludmVyc2UoKSk7CiAgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKHJlcGxpY2FPcHRp
b25zKTsKICAgICB9CiAKQEAgLTMwOCw3ICszMDMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9u
cwogICAgIGlmICghaXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IG9w
YWNpdHkgPSBvcHRpb25zLm9wYWNpdHkgKiBtX29wYWNpdHk7CisgICAgZmxvYXQgb3BhY2l0eSA9
IG9wdGlvbnMub3BhY2l0eSAqIG1fZWZmZWN0aXZlT3BhY2l0eTsKICAgICBSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gbWFza1RleHR1cmUgPSBtX3N0YXRlLm1hc2tMYXllciA/IG1fc3RhdGUubWFza0xh
eWVyLT50ZXh0dXJlKCkgOiAwOwogCiAgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWlu
dE9wdGlvbnMob3B0aW9ucyk7CkBAIC0zMjgsNyArMzIzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50UmVjdXJzaXZlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9w
dGlvbnMKICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHN1cmZhY2UuZ2V0
KCkpOwogICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0gMTsKIAotICAgIHBhaW50T3B0aW9ucy50
cmFuc2Zvcm0gPSBtX3RyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKKyAgICBwYWludE9w
dGlvbnMudHJhbnNmb3JtID0gbV9lZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCk7CiAgICAgcGFpbnRPcHRpb25zLm9mZnNldCA9IC1JbnRTaXplKHN1cmZhY2VSZWN0LngoKSwg
c3VyZmFjZVJlY3QueSgpKTsKIAogICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2Eo
cGFpbnRPcHRpb25zKTsKQEAgLTMzOCwxNCArMzMzLDE0IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRp
b25zCiAgICAgICAgIG1hc2tUZXh0dXJlID0gMDsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
LSAgICBzdXJmYWNlID0gYXBwbHlGaWx0ZXJzKG1fZmlsdGVycywgb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLCBzdXJmYWNlLmdldCgpLCBzdXJmYWNlUmVjdCk7CisgICAgc3VyZmFjZSA9IGFwcGx5Rmls
dGVycyhtX2VmZmVjdGl2ZUZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5n
ZXQoKSwgc3VyZmFjZVJlY3QpOwogI2VuZGlmCiAKICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIt
PmJpbmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdldFRyYW5zZm9ybS50cmFuc2xhdGUob3B0
aW9ucy5vZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVpZ2h0KCkpOwogICAgIHRhcmdl
dFRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7Ci0gICAgdGFyZ2V0VHJhbnNm
b3JtLm11bHRpcGx5KG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkpOworICAgIHRhcmdldFRyYW5zZm9y
bS5tdWx0aXBseShtX2VmZmVjdGl2ZVRyYW5zZm9ybS5jb21iaW5lZCgpKTsKIAogICAgIG9wdGlv
bnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0
LCB0YXJnZXRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKIH0KQEAgLTQx
NiwxMSArNDExLDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAKICAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAKLSAgICBtX3RyYW5zZm9y
bS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwotICAgIG1fdHJhbnNmb3JtLnNldEFu
Y2hvclBvaW50KG1fc3RhdGUuYW5jaG9yUG9pbnQpOwotICAgIG1fdHJhbnNmb3JtLnNldFNpemUo
bV9zdGF0ZS5zaXplKTsKLSAgICBtX3RyYW5zZm9ybS5zZXRGbGF0dGVuaW5nKCFtX3N0YXRlLnBy
ZXNlcnZlczNEKTsKLSAgICBtX3RyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShtX3N0YXRl
LmNoaWxkcmVuVHJhbnNmb3JtKTsKKyAgICBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5zZXRQb3NpdGlv
bihhZGp1c3RlZFBvc2l0aW9uKCkpOworICAgIG1fZWZmZWN0aXZlVHJhbnNmb3JtLnNldEFuY2hv
clBvaW50KG1fc3RhdGUuYW5jaG9yUG9pbnQpOworICAgIG1fZWZmZWN0aXZlVHJhbnNmb3JtLnNl
dFNpemUobV9zdGF0ZS5zaXplKTsKKyAgICBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5zZXRGbGF0dGVu
aW5nKCFtX3N0YXRlLnByZXNlcnZlczNEKTsKKyAgICBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5zZXRM
b2NhbFRyYW5zZm9ybShtX3N0YXRlLnRyYW5zZm9ybSk7CisgICAgbV9lZmZlY3RpdmVUcmFuc2Zv
cm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0obV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7CiAKICAg
ICBzeW5jQW5pbWF0aW9ucygpOwogfQpAQCAtNDk1LDEyICs0OTEsMTIgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnN5bmNBbmltYXRpb25zKCkKIHsKICAgICBtX2FuaW1hdGlvbnMuYXBwbHko
dGhpcyk7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMuaGFzQWN0aXZlQW5pbWF0aW9uc09mVHlwZShB
bmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSkKLSAgICAgICAgc2V0VHJhbnNmb3JtKG1f
c3RhdGUudHJhbnNmb3JtKTsKKyAgICAgICAgc2V0RWZmZWN0aXZlVHJhbnNmb3JtKG1fc3RhdGUu
dHJhbnNmb3JtKTsKICAgICBpZiAoIW1fYW5pbWF0aW9ucy5oYXNBY3RpdmVBbmltYXRpb25zT2ZU
eXBlKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgc2V0T3BhY2l0eShtX3N0YXRl
Lm9wYWNpdHkpOworICAgICAgICBzZXRFZmZlY3RpdmVPcGFjaXR5KG1fc3RhdGUub3BhY2l0eSk7
CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGlmICghbV9hbmltYXRpb25zLmhhc0FjdGl2
ZUFuaW1hdGlvbnNPZlR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcikpCi0gICAgICAg
IHNldEZpbHRlcnMobV9zdGF0ZS5maWx0ZXJzKTsKKyAgICAgICAgc2V0RWZmZWN0aXZlRmlsdGVy
cyhtX3N0YXRlLmZpbHRlcnMpOwogI2VuZGlmCiB9CiAKQEAgLTUyNCw3ICs1MjAsNyBAQCB2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0
IEZsb2F0U2l6ZSYgZGVsdGEpCiAgICAgICAgIG1fc2Nyb2xsUG9zaXRpb25EZWx0YSA9IEZsb2F0
U2l6ZSgpOwogICAgIGVsc2UKICAgICAgICAgbV9zY3JvbGxQb3NpdGlvbkRlbHRhID0gZGVsdGE7
Ci0gICAgbV90cmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKKyAgICBt
X2VmZmVjdGl2ZVRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggM2JlNDg0MmQ2MDk0ZDBmMjZkMmM1Y2I5
M2VhZmY2MTlhYjAzYzM0Ni4uMTE4MjgwNTY3MjY4Yjk2YmI2ZTIxMmM4MjYyMzIxZjk2MWIxZGUz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV9wYXJlbnQoMCkKICAgICAgICAgLCBtX2VmZmVjdFRhcmdldCgwKQogICAgICAg
ICAsIG1fY29udGVudHNMYXllcigwKQotICAgICAgICAsIG1fb3BhY2l0eSgxKQorICAgICAgICAs
IG1fZWZmZWN0aXZlT3BhY2l0eSgxKQogICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAgICAs
IG1fdGV4dHVyZU1hcHBlcigwKQogICAgIHsgfQpAQCAtOTksMTEgKzk5LDYgQEAgcHVibGljOgog
CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0OwogICAgIHZvaWQgZmx1
c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlciopOwotICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7Ci0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKSB7IG1fb3BhY2l0eSA9IHZhbHVl
OyB9Ci0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVycyA9IGZpbHRlcnM7IH0KLSNlbmRp
ZgogICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90
ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CiAgICAgYm9vbCBkZXNjZW5kYW50c09yU2VsZkhhdmVS
dW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0OwogCkBAIC0xNDEsMTAgKzEzNiwxNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAgICAvLyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpD
bGllbnQKLSAgICB2b2lkIHNldEFuaW1hdGVkVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgpIHsgc2V0VHJhbnNmb3JtKG1hdHJpeCk7IH0KLSAgICB2b2lkIHNldEFu
aW1hdGVkT3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IHNldE9wYWNpdHkob3BhY2l0eSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCkgT1ZFUlJJREUgeyBzZXRFZmZlY3RpdmVUcmFuc2Zvcm0obWF0cml4KTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkgT1ZF
UlJJREUgeyBzZXRFZmZlY3RpdmVPcGFjaXR5KG9wYWNpdHkpOyB9CisjaWYgRU5BQkxFKENTU19G
SUxURVJTKQorICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykgT1ZFUlJJREUgeyBzZXRFZmZlY3RpdmVGaWx0ZXJzKGZpbHRl
cnMpOyB9CisjZW5kaWYKKworICAgIHZvaWQgc2V0RWZmZWN0aXZlVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9lZmZlY3RpdmVUcmFuc2Zvcm0uc2V0TG9j
YWxUcmFuc2Zvcm0obWF0cml4KTsgfQorICAgIHZvaWQgc2V0RWZmZWN0aXZlT3BhY2l0eShmbG9h
dCB2YWx1ZSkgeyBtX2VmZmVjdGl2ZU9wYWNpdHkgPSB2YWx1ZTsgfQogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgc2V0RmlsdGVycyhmaWx0ZXJzKTsgfQorICAgIHZvaWQg
c2V0RWZmZWN0aXZlRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1f
ZWZmZWN0aXZlRmlsdGVycyA9IGZpbHRlcnM7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzeW5jQW5p
bWF0aW9ucygpOwpAQCAtMTYzLDE3ICsxNjQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSk7CiAgICAgfQogCi0gICAgR3Jh
cGhpY3NMYXllclRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKLQogICAgIFZlY3RvcjxUZXh0dXJlTWFw
cGVyTGF5ZXIqPiBtX2NoaWxkcmVuOwogICAgIFRleHR1cmVNYXBwZXJMYXllciogbV9wYXJlbnQ7
CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX2VmZmVjdFRhcmdldDsKICAgICBSZWZQdHI8VGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIqIG1fY29udGVudHNMYXllcjsKICAgICBGbG9hdFNpemUgbV9zaXplOwot
ICAgIGZsb2F0IG1fb3BhY2l0eTsKKyAgICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fZWZmZWN0
aXZlVHJhbnNmb3JtOworICAgIGZsb2F0IG1fZWZmZWN0aXZlT3BhY2l0eTsKICNpZiBFTkFCTEUo
Q1NTX0ZJTFRFUlMpCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAgRmlsdGVy
T3BlcmF0aW9ucyBtX2VmZmVjdGl2ZUZpbHRlcnM7CiAjZW5kaWYKICAgICBmbG9hdCBtX2NlbnRl
clo7CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHZpc2libGUg
OiAxOwogCiAgICAgICAgIFN0YXRlKCkKLSAgICAgICAgICAgIDogb3BhY2l0eSgxLmYpCisgICAg
ICAgICAgICA6IG9wYWNpdHkoMSkKICAgICAgICAgICAgICwgbWFza0xheWVyKDApCiAgICAgICAg
ICAgICAsIHJlcGxpY2FMYXllcigwKQogICAgICAgICAgICAgLCBwcmVzZXJ2ZXMzRChmYWxzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBl
ckxheWVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0
dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKaW5kZXggNDQ0MmJhZmZmZjczNzg0NDYyMTlhMDkw
MmY2YzM5ZWQ2OWQ4ZWE4NS4uZWU4MmI5NjVhNDYwYzQxMWU1MWNhZDA4M2RjM2IwNWM0ZmIwMmNm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFw
cGVyTGF5ZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKQEAgLTExMyw4ICsxMTMsMTEgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6cmVuZGVyQ29tcG9zaXRlZExheWVycyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQKICAgICAgICAgMCwgMCwgMSwgMCwKICAgICAgICAgdHJhbnNm
b3JtLm0zMSgpLCB0cmFuc2Zvcm0ubTMyKCksIDAsIHRyYW5zZm9ybS5tMzMoKQogICAgICAgICAp
OwotICAgIG1fcm9vdFRleHR1cmVNYXBwZXJMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Ci0g
ICAgbV9yb290VGV4dHVyZU1hcHBlckxheWVyLT5zZXRPcGFjaXR5KHBhaW50ZXItPm9wYWNpdHko
KSk7CisgICAgaWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXItPm9wYWNpdHkoKSAhPSBwYWludGVyLT5v
cGFjaXR5KCkgfHwgbV9yb290R3JhcGhpY3NMYXllci0+dHJhbnNmb3JtKCkgIT0gbWF0cml4KSB7
CisgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNldE9wYWNpdHkocGFpbnRlci0+b3BhY2l0
eSgpKTsKKyAgICAgICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7
CisgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRo
aXNMYXllck9ubHkoKTsKKyAgICB9CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5n
KCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAobWF0cml4LCBjbGlwKTsKICAgICBt
X3Jvb3RUZXh0dXJlTWFwcGVyTGF5ZXItPnBhaW50KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181137</attachid>
            <date>2013-01-02 20:06:19 -0800</date>
            <delta_ts>2013-01-07 22:34:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105760-20130103130306.patch</filename>
            <type>text/plain</type>
            <size>16732</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWMyZjI5MTdjNThiYWZj
Zjg2M2Q2M2MxNjYwNjc3YzhiMzJmMzgwZC4uN2NhOTRkYzNiYzBmMDc2ODhkMzY1YWIyZGFmODY1
MzBhMDNjMzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEzLTAxLTAyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBd
IFJlbmFtZSBlZmZlY3RpdmVbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVyZU1h
cHBlckxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGV4dHVyZU1hcHBlckxheWVyIGhhcyB0d28gdHJhbnNmb3JtIG1lbWJlcnM6IGFuIG9yaWdp
bmFsIHZhbHVlIGFuZCBhCisgICAgICAgIGNoYW5nZWFibGUgdmFsdWUuIFRoZSBjaGFuZ2VhYmxl
IHZhbHVlIHdvdWxkIGJlIGNoYW5nZWQgYnkgYW5pbWF0aW9ucy4KKyAgICAgICAgVGhpcyBwYXRj
aCBwdXRzICdlZmZlY3RpdmUnIHByZWZpeCBvbiB0aGUgY2hhbmdlYWJsZSB2YWx1ZSB0byBjbGFy
aWZ5CisgICAgICAgIGl0cyBwdXJwb3NlLiBPcGFjaXR5IGFuZCBmaWx0ZXJzIGRpdHRvLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gUmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFjZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRQYWludFRv
SW50ZXJtZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OmlzVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzeW5jQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJ
Zk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RWZmZWN0aXZlVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0RWZmZWN0aXZlT3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEVmZmVjdGl2ZUZpbHRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpTdGF0ZTo6U3RhdGUpOgor
CisyMDEzLTAxLTAyICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgor
CiAgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBtX3NpemUgaW4gVGV4dHVyZU1hcHBlckxheWVyLgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NzgxCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggMjg0ZjVkZDdjNDZkMGU4OWM5MjFiMDdlNzVkMmZiZGMyNjM1ZTM1
NC4uMzg4NTMxZGNjOGUzZjU3MDBmMGY1ZGQyNDlhYjYwYmNmMTk5ODRlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wMS0wMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbVGV4TWFwXSBSZW5hbWUgZWZmZWN0aXZlW1Ry
YW5zZm9ybXxPcGFjaXR5fEZpbHRlcnNdIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc2MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRleHR1cmVNYXBwZXJMYXll
ckNsaWVudFF0IHVzZXMgc2V0VHJhbnNmb3JtKCkgYW5kIHNldE9wYWNpdHkoKSBpbgorICAgICAg
ICBHcmFwaGljc0xheWVyIGluc3RlYWQgb2YgVGV4dHVyZU1hcHBlckxheWVyIGxpa2UgTGF5ZXJU
cmVlUmVuZGVyZXIuCisgICAgICAgIEl0IGNhbiByZWR1Y2UgdGhlIG51bWJlciBvZiBwdWJsaWMg
QVBJIG9mIFRleHR1cmVNYXBwZXJMYXllci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Rl
eHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXll
ckNsaWVudFF0OjpyZW5kZXJDb21wb3NpdGVkTGF5ZXJzKToKKwogMjAxMi0xMi0yMyAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTI4MDgzNzc+IE5ldHdvcmsgcHJvY2VzcyBzaG91bGQgcmVzcGVjdCBjb29raWUgYWNjZXB0IHBv
bGljeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA1NjE4NmI1NWE2OWE3MWQwZjdm
ZjdmYTc1MDU1NjQzMDI1OWVhMTI3Li4zMzQ2NzRlNDg0ZjUwZDRkY2ZjMDJkNGNlNjE1OTQxMDgx
ZDI4NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtNTQsMTEgKzU0LDYgQEAg
Y29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJvb3RMYXllcigp
IGNvbnN0CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBt
X3RyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybShtYXRyaXgpOwotfQotCiB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZlKCkKIHsKICAgICBtX2JhY2tp
bmdTdG9yZS5jbGVhcigpOwpAQCAtNzcsMTUgKzcyLDE1IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSgpCiAgICAgLy8gQ29tcHV0ZSB0cmFuc2Zv
cm1zIHJlY3Vyc2l2ZWx5IG9uIHRoZSB3YXkgZG93biB0byBsZWFmcy4KICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBwYXJlbnRUcmFuc2Zvcm07CiAgICAgaWYgKG1fcGFyZW50KQotICAgICAgICBw
YXJlbnRUcmFuc2Zvcm0gPSBtX3BhcmVudC0+bV90cmFuc2Zvcm0uY29tYmluZWRGb3JDaGlsZHJl
bigpOworICAgICAgICBwYXJlbnRUcmFuc2Zvcm0gPSBtX3BhcmVudC0+bV9lZmZlY3RpdmVUcmFu
c2Zvcm0uY29tYmluZWRGb3JDaGlsZHJlbigpOwogICAgIGVsc2UgaWYgKG1fZWZmZWN0VGFyZ2V0
KQotICAgICAgICBwYXJlbnRUcmFuc2Zvcm0gPSBtX2VmZmVjdFRhcmdldC0+bV90cmFuc2Zvcm0u
Y29tYmluZWQoKTsKLSAgICBtX3RyYW5zZm9ybS5jb21iaW5lVHJhbnNmb3JtcyhwYXJlbnRUcmFu
c2Zvcm0pOworICAgICAgICBwYXJlbnRUcmFuc2Zvcm0gPSBtX2VmZmVjdFRhcmdldC0+bV9lZmZl
Y3RpdmVUcmFuc2Zvcm0uY29tYmluZWQoKTsKKyAgICBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5jb21i
aW5lVHJhbnNmb3JtcyhwYXJlbnRUcmFuc2Zvcm0pOwogCi0gICAgbV9zdGF0ZS52aXNpYmxlID0g
bV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgfHwgIW1fdHJhbnNmb3JtLmNvbWJpbmVkKCkuaXNC
YWNrRmFjZVZpc2libGUoKTsKKyAgICBtX3N0YXRlLnZpc2libGUgPSBtX3N0YXRlLmJhY2tmYWNl
VmlzaWJpbGl0eSB8fCAhbV9lZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmluZWQoKS5pc0JhY2tGYWNl
VmlzaWJsZSgpOwogCiAgICAgaWYgKG1fcGFyZW50ICYmIG1fcGFyZW50LT5tX3N0YXRlLnByZXNl
cnZlczNEKQotICAgICAgICBtX2NlbnRlclogPSBtX3RyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFBv
aW50KEZsb2F0UG9pbnQzRChtX3N0YXRlLnNpemUud2lkdGgoKSAvIDIsIG1fc3RhdGUuc2l6ZS5o
ZWlnaHQoKSAvIDIsIDApKS56KCk7CisgICAgICAgIG1fY2VudGVyWiA9IG1fZWZmZWN0aXZlVHJh
bnNmb3JtLmNvbWJpbmVkKCkubWFwUG9pbnQoRmxvYXRQb2ludDNEKG1fc3RhdGUuc2l6ZS53aWR0
aCgpIC8gMiwgbV9zdGF0ZS5zaXplLmhlaWdodCgpIC8gMiwgMCkpLnooKTsKIAogICAgIGlmICht
X3N0YXRlLm1hc2tMYXllcikKICAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmNvbXB1dGVUcmFu
c2Zvcm1zUmVjdXJzaXZlKCk7CkBAIC0xMTgsNyArMTEzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25z
KQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgpKTsK
ICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9ucy50cmFuc2Zvcm0pOwotICAgIHRyYW5zZm9y
bS5tdWx0aXBseShtX3RyYW5zZm9ybS5jb21iaW5lZCgpKTsKKyAgICB0cmFuc2Zvcm0ubXVsdGlw
bHkobV9lZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmluZWQoKSk7CiAKICAgICBmbG9hdCBvcGFjaXR5
ID0gb3B0aW9ucy5vcGFjaXR5OwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrID0gb3B0
aW9ucy5tYXNrOwpAQCAtMTY4LDcgKzE2Myw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpw
YWludFNlbGZBbmRDaGlsZHJlbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvCiAK
ICAgICBib29sIHNob3VsZENsaXAgPSBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgJiYgIW1fc3RhdGUu
cHJlc2VydmVzM0Q7CiAgICAgaWYgKHNob3VsZENsaXApCi0gICAgICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci0+YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KG9wdGlvbnMudHJhbnNmb3Jt
KS5tdWx0aXBseShtX3RyYW5zZm9ybS5jb21iaW5lZCgpKSwgbGF5ZXJSZWN0KCkpOworICAgICAg
ICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeChv
cHRpb25zLnRyYW5zZm9ybSkubXVsdGlwbHkobV9lZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmluZWQo
KSksIGxheWVyUmVjdCgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJl
bi5zaXplKCk7ICsraSkKICAgICAgICAgbV9jaGlsZHJlbltpXS0+cGFpbnRSZWN1cnNpdmUob3B0
aW9ucyk7CkBAIC0xODAsMTMgKzE3NSwxMyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFp
bnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgbwogSW50
UmVjdCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KCkKIHsKICAg
ICAvLyBGSVhNRTogQWRkIGFuIGludmVyc2UgdHJhbnNmb3JtIHRvIExheWVyVHJhbnNmb3JtLgot
ICAgIHJldHVybiBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtX3RyYW5zZm9ybS5jb21iaW5lZCgp
LmludmVyc2UoKSk7CisgICAgcmV0dXJuIGludGVybWVkaWF0ZVN1cmZhY2VSZWN0KG1fZWZmZWN0
aXZlVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKIH0KIAogSW50UmVjdCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgpCiB7CiAgICAgSW50UmVjdCByZWN0OwotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGxvY2FsVHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KS5tdWx0
aXBseShtX3RyYW5zZm9ybS5jb21iaW5lZCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBs
b2NhbFRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KG1hdHJpeCkubXVsdGlwbHkobV9l
ZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmluZWQoKSk7CiAgICAgcmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QobG9jYWxUcmFuc2Zvcm0ubWFwUmVjdChsYXllclJlY3QoKSkpOwogICAgIGlmICghbV9zdGF0
ZS5tYXNrc1RvQm91bmRzICYmICFtX3N0YXRlLm1hc2tMYXllcikgewogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCkBAIC0xOTQsMTIgKzE4OSwx
MiBAQCBJbnRSZWN0IFRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3Qo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmCiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQotICAgIGlmIChtX2ZpbHRlcnMuaGFzT3V0c2V0cygpKSB7CisgICAgaWYgKG1fZWZmZWN0
aXZlRmlsdGVycy5oYXNPdXRzZXRzKCkpIHsKICAgICAgICAgaW50IGxlZnRPdXRzZXQ7CiAgICAg
ICAgIGludCB0b3BPdXRzZXQ7CiAgICAgICAgIGludCBib3R0b21PdXRzZXQ7CiAgICAgICAgIGlu
dCByaWdodE91dHNldDsKLSAgICAgICAgbV9maWx0ZXJzLmdldE91dHNldHModG9wT3V0c2V0LCBy
aWdodE91dHNldCwgYm90dG9tT3V0c2V0LCBsZWZ0T3V0c2V0KTsKKyAgICAgICAgbV9lZmZlY3Rp
dmVGaWx0ZXJzLmdldE91dHNldHModG9wT3V0c2V0LCByaWdodE91dHNldCwgYm90dG9tT3V0c2V0
LCBsZWZ0T3V0c2V0KTsKICAgICAgICAgSW50UmVjdCB1bmZpbHRlcmVkVGFyZ2V0UmVjdChyZWN0
KTsKICAgICAgICAgcmVjdC5tb3ZlKHN0ZDo6bWF4KDAsIC1sZWZ0T3V0c2V0KSwgc3RkOjptYXgo
MCwgLXRvcE91dHNldCkpOwogICAgICAgICByZWN0LmV4cGFuZChsZWZ0T3V0c2V0ICsgcmlnaHRP
dXRzZXQsIHRvcE91dHNldCArIGJvdHRvbU91dHNldCk7CkBAIC0yMzMsMTAgKzIyOCwxMCBAQCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRzTGF5ZXJDb3VudCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmNvdW50UG90ZW50aWFsTGF5ZXJzVwogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNob3VsZFBh
aW50VG9JbnRlcm1lZGlhdGVTdXJmYWNlKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCi0gICAgaWYgKG1fZmlsdGVycy5zaXplKCkpCisgICAgaWYgKG1fZWZmZWN0aXZlRmlsdGVy
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0gICAgYm9vbCBoYXNPcGFj
aXR5ID0gbV9vcGFjaXR5IDwgMC45OTsKKyAgICBib29sIGhhc09wYWNpdHkgPSBtX2VmZmVjdGl2
ZU9wYWNpdHkgPCAwLjk5OwogICAgIGJvb2wgY2FuSGF2ZU11bHRpcGxlTGF5ZXJzV2l0aENvbnRl
bnQgPSBjb3VudFBvdGVudGlhbExheWVyc1dpdGhDb250ZW50cygpID09IE11bHRpcGxlTGF5ZXJz
V2l0aENvbnRlbnRzOwogICAgIGJvb2wgaGFzUmVwbGljYSA9ICEhbV9zdGF0ZS5yZXBsaWNhTGF5
ZXI7CiAgICAgYm9vbCBoYXNNYXNrID0gISFtX3N0YXRlLm1hc2tMYXllcjsKQEAgLTI2Nyw3ICsy
NjIsNyBAQCBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6aXNWaXNpYmxlKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgbV9j
aGlsZHJlbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9vcGFj
aXR5IDwgMC4wMSkKKyAgICBpZiAobV9lZmZlY3RpdmVPcGFjaXR5IDwgMC4wMSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjgyLDggKzI3Nyw4IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKGNv
bnN0IFRleHR1cmVNYXBwZXJQYWluCiAgICAgICAgICAgICByZXBsaWNhT3B0aW9ucy5tYXNrID0g
bV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7CiAKICAg
ICAgICAgcmVwbGljYU9wdGlvbnMudHJhbnNmb3JtCi0gICAgICAgICAgICAgICAgICAubXVsdGlw
bHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fdHJhbnNmb3JtLmNvbWJpbmVkKCkpCi0gICAgICAg
ICAgICAgICAgICAubXVsdGlwbHkobV90cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOwor
ICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2VmZmVjdGl2ZVRy
YW5zZm9ybS5jb21iaW5lZCgpKQorICAgICAgICAgICAgLm11bHRpcGx5KG1fZWZmZWN0aXZlVHJh
bnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKICAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRy
ZW4ocmVwbGljYU9wdGlvbnMpOwogICAgIH0KIApAQCAtMzIyLDcgKzMxNyw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zJiBvcHRpb25zCiAgICAgaWYgKCFpc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fb3BhY2l0eTsKKyAgICBm
bG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5ICogbV9lZmZlY3RpdmVPcGFjaXR5OwogICAg
IFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrVGV4dHVyZSA9IG1fc3RhdGUubWFza0xheWVyID8g
bV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1cmUoKSA6IDA7CiAKICAgICBUZXh0dXJlTWFwcGVyUGFp
bnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKQEAgLTM0Miw3ICszMzcsNyBAQCB2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYgb3B0aW9ucwogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZh
Y2Uoc3VyZmFjZS5nZXQoKSk7CiAgICAgcGFpbnRPcHRpb25zLm9wYWNpdHkgPSAxOwogCi0gICAg
cGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgp
OworICAgIHBhaW50T3B0aW9ucy50cmFuc2Zvcm0gPSBtX2VmZmVjdGl2ZVRyYW5zZm9ybS5jb21i
aW5lZCgpLmludmVyc2UoKTsKICAgICBwYWludE9wdGlvbnMub2Zmc2V0ID0gLUludFNpemUoc3Vy
ZmFjZVJlY3QueCgpLCBzdXJmYWNlUmVjdC55KCkpOwogCiAgICAgcGFpbnRTZWxmQW5kQ2hpbGRy
ZW5XaXRoUmVwbGljYShwYWludE9wdGlvbnMpOwpAQCAtMzUyLDE0ICszNDcsMTQgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dE9wdGlvbnMmIG9wdGlvbnMKICAgICAgICAgbWFza1RleHR1cmUgPSAwOwogCiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKQotICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9maWx0ZXJzLCBvcHRp
b25zLnRleHR1cmVNYXBwZXIsIHN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0KTsKKyAgICBzdXJm
YWNlID0gYXBwbHlGaWx0ZXJzKG1fZWZmZWN0aXZlRmlsdGVycywgb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLCBzdXJmYWNlLmdldCgpLCBzdXJmYWNlUmVjdCk7CiAjZW5kaWYKIAogICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNlLmdldCgpKTsKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAgdGFyZ2V0VHJhbnNmb3Jt
LnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25zLm9mZnNldC5oZWlnaHQo
KSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMudHJhbnNmb3JtKTsKLSAg
ICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV90cmFuc2Zvcm0uY29tYmluZWQoKSk7CisgICAg
dGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG1fZWZmZWN0aXZlVHJhbnNmb3JtLmNvbWJpbmVkKCkp
OwogCiAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQo
KSwgc3VyZmFjZVJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFza1RleHR1cmUuZ2V0
KCkpOwogfQpAQCAtNDI4LDExICs0MjMsMTIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKIAog
ICAgIG1fY29udGVudHNMYXllciA9IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKIAot
ICAgIG1fdHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7Ci0gICAgbV90
cmFuc2Zvcm0uc2V0QW5jaG9yUG9pbnQobV9zdGF0ZS5hbmNob3JQb2ludCk7Ci0gICAgbV90cmFu
c2Zvcm0uc2V0U2l6ZShtX3N0YXRlLnNpemUpOwotICAgIG1fdHJhbnNmb3JtLnNldEZsYXR0ZW5p
bmcoIW1fc3RhdGUucHJlc2VydmVzM0QpOwotICAgIG1fdHJhbnNmb3JtLnNldENoaWxkcmVuVHJh
bnNmb3JtKG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pOworICAgIG1fZWZmZWN0aXZlVHJhbnNm
b3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CisgICAgbV9lZmZlY3RpdmVUcmFu
c2Zvcm0uc2V0QW5jaG9yUG9pbnQobV9zdGF0ZS5hbmNob3JQb2ludCk7CisgICAgbV9lZmZlY3Rp
dmVUcmFuc2Zvcm0uc2V0U2l6ZShtX3N0YXRlLnNpemUpOworICAgIG1fZWZmZWN0aXZlVHJhbnNm
b3JtLnNldEZsYXR0ZW5pbmcoIW1fc3RhdGUucHJlc2VydmVzM0QpOworICAgIG1fZWZmZWN0aXZl
VHJhbnNmb3JtLnNldExvY2FsVHJhbnNmb3JtKG1fc3RhdGUudHJhbnNmb3JtKTsKKyAgICBtX2Vm
ZmVjdGl2ZVRyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShtX3N0YXRlLmNoaWxkcmVuVHJh
bnNmb3JtKTsKIAogICAgIHN5bmNBbmltYXRpb25zKCk7CiB9CkBAIC01MDcsMTIgKzUwMywxMiBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c3luY0FuaW1hdGlvbnMoKQogewogICAgIG1fYW5p
bWF0aW9ucy5hcHBseSh0aGlzKTsKICAgICBpZiAoIW1fYW5pbWF0aW9ucy5oYXNBY3RpdmVBbmlt
YXRpb25zT2ZUeXBlKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pKQotICAgICAgICBz
ZXRUcmFuc2Zvcm0obV9zdGF0ZS50cmFuc2Zvcm0pOworICAgICAgICBzZXRFZmZlY3RpdmVUcmFu
c2Zvcm0obV9zdGF0ZS50cmFuc2Zvcm0pOwogICAgIGlmICghbV9hbmltYXRpb25zLmhhc0FjdGl2
ZUFuaW1hdGlvbnNPZlR5cGUoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpKQotICAgICAgICBzZXRP
cGFjaXR5KG1fc3RhdGUub3BhY2l0eSk7CisgICAgICAgIHNldEVmZmVjdGl2ZU9wYWNpdHkobV9z
dGF0ZS5vcGFjaXR5KTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKCFtX2FuaW1h
dGlvbnMuaGFzQWN0aXZlQW5pbWF0aW9uc09mVHlwZShBbmltYXRlZFByb3BlcnR5V2Via2l0Rmls
dGVyKSkKLSAgICAgICAgc2V0RmlsdGVycyhtX3N0YXRlLmZpbHRlcnMpOworICAgICAgICBzZXRF
ZmZlY3RpdmVGaWx0ZXJzKG1fc3RhdGUuZmlsdGVycyk7CiAjZW5kaWYKIH0KIApAQCAtNTM2LDcg
KzUzMiw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxQb3NpdGlvbkRlbHRh
SWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKICAgICAgICAgbV9zY3JvbGxQb3NpdGlv
bkRlbHRhID0gRmxvYXRTaXplKCk7CiAgICAgZWxzZQogICAgICAgICBtX3Njcm9sbFBvc2l0aW9u
RGVsdGEgPSBkZWx0YTsKLSAgICBtX3RyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0
aW9uKCkpOworICAgIG1fZWZmZWN0aXZlVHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9z
aXRpb24oKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCBmODRlMmFiNjQ1
MzU3NjkwNWU4MjcxYzhlYWM5ODAwZjdjZmU1MzQ0Li42MGRhM2UwMmFkZTI1MDBhMGRmYmI3OTM3
NjNjZDNiNzlmMGExMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC03OCw3ICs3OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3BhcmVudCgwKQogICAgICAgICAsIG1fZWZmZWN0VGFy
Z2V0KDApCiAgICAgICAgICwgbV9jb250ZW50c0xheWVyKDApCi0gICAgICAgICwgbV9vcGFjaXR5
KDEpCisgICAgICAgICwgbV9lZmZlY3RpdmVPcGFjaXR5KDEpCiAgICAgICAgICwgbV9jZW50ZXJa
KDApCiAgICAgICAgICwgbV90ZXh0dXJlTWFwcGVyKDApCiAgICAgeyB9CkBAIC04NywxMSArODcs
NiBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29uc3Q7
CiAgICAgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKik7Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKLSAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgdmFsdWUpIHsgbV9v
cGFjaXR5ID0gdmFsdWU7IH0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgdm9pZCBzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmls
dGVyczsgfQotI2VuZGlmCiAgICAgdm9pZCBzZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
IHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KICAgICBib29sIGRlc2NlbmRh
bnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7CiAKQEAgLTEyOSwxMCArMTI0
LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNh
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKIAogICAgIC8vIEdyYXBoaWNzTGF5
ZXJBbmltYXRpb246OkNsaWVudAotICAgIHZvaWQgc2V0QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBzZXRUcmFuc2Zvcm0obWF0cml4KTsgfQot
ICAgIHZvaWQgc2V0QW5pbWF0ZWRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpIHsgc2V0T3BhY2l0eShv
cGFjaXR5KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZFRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KSBPVkVSUklERSB7IHNldEVmZmVjdGl2ZVRyYW5z
Zm9ybShtYXRyaXgpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGVkT3BhY2l0eShmbG9h
dCBvcGFjaXR5KSBPVkVSUklERSB7IHNldEVmZmVjdGl2ZU9wYWNpdHkob3BhY2l0eSk7IH0KKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGVkRmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBPVkVSUklERSB7IHNldEVmZmVjdGl2
ZUZpbHRlcnMoZmlsdGVycyk7IH0KKyNlbmRpZgorCisgICAgdm9pZCBzZXRFZmZlY3RpdmVUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX2VmZmVjdGl2ZVRy
YW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybShtYXRyaXgpOyB9CisgICAgdm9pZCBzZXRFZmZlY3Rp
dmVPcGFjaXR5KGZsb2F0IHZhbHVlKSB7IG1fZWZmZWN0aXZlT3BhY2l0eSA9IHZhbHVlOyB9CiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBzZXRGaWx0ZXJzKGZpbHRlcnMp
OyB9CisgICAgdm9pZCBzZXRFZmZlY3RpdmVGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpIHsgbV9lZmZlY3RpdmVGaWx0ZXJzID0gZmlsdGVyczsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIHN5bmNBbmltYXRpb25zKCk7CkBAIC0xNTEsMTYgKzE1MiwxNSBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zdGF0ZS5zaXpl
KTsKICAgICB9CiAKLSAgICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fdHJhbnNmb3JtOwotCiAg
ICAgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+IG1fY2hpbGRyZW47CiAgICAgVGV4dHVyZU1h
cHBlckxheWVyKiBtX3BhcmVudDsKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIG1fZWZmZWN0VGFy
Z2V0OwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9y
ZTsKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogbV9jb250ZW50c0xheWVyOwotICAg
IGZsb2F0IG1fb3BhY2l0eTsKKyAgICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fZWZmZWN0aXZl
VHJhbnNmb3JtOworICAgIGZsb2F0IG1fZWZmZWN0aXZlT3BhY2l0eTsKICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAgRmlsdGVyT3Bl
cmF0aW9ucyBtX2VmZmVjdGl2ZUZpbHRlcnM7CiAjZW5kaWYKICAgICBmbG9hdCBtX2NlbnRlclo7
CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHZpc2libGUgOiAx
OwogCiAgICAgICAgIFN0YXRlKCkKLSAgICAgICAgICAgIDogb3BhY2l0eSgxLmYpCisgICAgICAg
ICAgICA6IG9wYWNpdHkoMSkKICAgICAgICAgICAgICwgbWFza0xheWVyKDApCiAgICAgICAgICAg
ICAsIHJlcGxpY2FMYXllcigwKQogICAgICAgICAgICAgLCBwcmVzZXJ2ZXMzRChmYWxzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxh
eWVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJl
TWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKaW5kZXggNDQ0MmJhZmZmZjczNzg0NDYyMTlhMDkwMmY2
YzM5ZWQ2OWQ4ZWE4NS4uZWU4MmI5NjVhNDYwYzQxMWU1MWNhZDA4M2RjM2IwNWM0ZmIwMmNmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVy
TGF5ZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9U
ZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKQEAgLTExMyw4ICsxMTMsMTEgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6cmVuZGVyQ29tcG9zaXRlZExheWVycyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQKICAgICAgICAgMCwgMCwgMSwgMCwKICAgICAgICAgdHJhbnNmb3Jt
Lm0zMSgpLCB0cmFuc2Zvcm0ubTMyKCksIDAsIHRyYW5zZm9ybS5tMzMoKQogICAgICAgICApOwot
ICAgIG1fcm9vdFRleHR1cmVNYXBwZXJMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Ci0gICAg
bV9yb290VGV4dHVyZU1hcHBlckxheWVyLT5zZXRPcGFjaXR5KHBhaW50ZXItPm9wYWNpdHkoKSk7
CisgICAgaWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXItPm9wYWNpdHkoKSAhPSBwYWludGVyLT5vcGFj
aXR5KCkgfHwgbV9yb290R3JhcGhpY3NMYXllci0+dHJhbnNmb3JtKCkgIT0gbWF0cml4KSB7Cisg
ICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNldE9wYWNpdHkocGFpbnRlci0+b3BhY2l0eSgp
KTsKKyAgICAgICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Cisg
ICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNM
YXllck9ubHkoKTsKKyAgICB9CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7
CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAobWF0cml4LCBjbGlwKTsKICAgICBtX3Jv
b3RUZXh0dXJlTWFwcGVyTGF5ZXItPnBhaW50KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181643</attachid>
            <date>2013-01-07 22:34:58 -0800</date>
            <delta_ts>2013-01-11 17:36:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105760-20130108153147.patch</filename>
            <type>text/plain</type>
            <size>16084</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk2MmM1NGQzY2JhNTMy
MzdjNmM5OWQxZjI5YTBiZjhmNjllZjhlNy4uMmQ4N2MyY2RiOWQ4ZmE3MTdiZGY2YTgyNTBhODg3
ODFiOWMwYjFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAxLTA3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBd
IFJlbmFtZSBjdXJyZW50W1RyYW5zZm9ybXxPcGFjaXR5fEZpbHRlcnNdIGluIFRleHR1cmVNYXBw
ZXJMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNTc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRleHR1cmVNYXBwZXJMYXllciBoYXMgdHdvIHRyYW5zZm9ybSBtZW1iZXJzOiBhbiBvcmlnaW5h
bCB2YWx1ZSBhbmQgYQorICAgICAgICBjaGFuZ2VhYmxlIHZhbHVlLiBUaGUgY2hhbmdlYWJsZSB2
YWx1ZSB3b3VsZCBiZSBjaGFuZ2VkIGJ5IGFuaW1hdGlvbnMuCisgICAgICAgIFRoaXMgcGF0Y2gg
cHV0cyAnY3VycmVudCcgcHJlZml4IG9uIHRoZSBjaGFuZ2VhYmxlIHZhbHVlIHRvIGNsYXJpZnkK
KyAgICAgICAgaXRzIHB1cnBvc2UuIE9wYWNpdHkgYW5kIGZpbHRlcnMgZGl0dG8uCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBSZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNob3VsZFBhaW50VG9JbnRl
cm1lZGlhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRT
ZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnN5bmNBbmltYXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBw
ZXJMYXllcik6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjpTdGF0ZTo6U3RhdGUpOgorCiAyMDEzLTAxLTA3ICBTdGV2
ZSBCbG9jayAgPHN0ZXZlYmxvY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVzZSBleHBsaWNp
dCBjb25zdHJ1Y3RvciB0byBjb252ZXJ0IGZyb20gSW50L0Zsb2F0U2l6ZSB0byBJbnQvRmxvYXRQ
b2ludApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCA2MDA1ZDAwNzRlMWQyODc1MDQzZmY3Y2E4NDM0NGMyZGZj
YjBhNmJhLi4zNTM1OTU3NjY1ZDJlZGZiZDMxODVjMjgwNjU3MTYzYzMyMTI3MmVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAxLTA3ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBdIFJlbmFtZSBjdXJyZW50
W1RyYW5zZm9ybXxPcGFjaXR5fEZpbHRlcnNdIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRleHR1cmVNYXBwZXJM
YXllckNsaWVudFF0IHVzZXMgc2V0VHJhbnNmb3JtKCkgYW5kIHNldE9wYWNpdHkoKSBpbgorICAg
ICAgICBHcmFwaGljc0xheWVyIGluc3RlYWQgb2YgVGV4dHVyZU1hcHBlckxheWVyIGxpa2UgTGF5
ZXJUcmVlUmVuZGVyZXIuCisgICAgICAgIFRoaXMgcmVtb3ZlcyB1bm5lY2Vzc2FyeSBwdWJsaWMg
QVBJIGZvciBUZXh0dXJlTWFwcGVyTGF5ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9U
ZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5
ZXJDbGllbnRRdDo6cmVuZGVyQ29tcG9zaXRlZExheWVycyk6CisKIDIwMTMtMDEtMDcgIE1pa2Ug
V2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbcXRdIEZpeCBFTkFCTEVfSUZS
QU1FX1NFQU1MRVNTPTAgYnVpbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA1
NjE4NmI1NWE2OWE3MWQwZjdmZjdmYTc1MDU1NjQzMDI1OWVhMTI3Li5jNmQ5ZGRjODI1MTY3MmIy
YzAzOTA1ZjQ0NDFkNzcwOWE4M2YyNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApA
QCAtNTQsMTEgKzU0LDYgQEAgY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCkKLXsKLSAgICBtX3RyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybShtYXRyaXgpOwot
fQotCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y2xlYXJCYWNraW5nU3RvcmVzUmVjdXJzaXZl
KCkKIHsKICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwpAQCAtNzcsMTUgKzcyLDE1IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSgpCiAgICAg
Ly8gQ29tcHV0ZSB0cmFuc2Zvcm1zIHJlY3Vyc2l2ZWx5IG9uIHRoZSB3YXkgZG93biB0byBsZWFm
cy4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRUcmFuc2Zvcm07CiAgICAgaWYgKG1f
cGFyZW50KQotICAgICAgICBwYXJlbnRUcmFuc2Zvcm0gPSBtX3BhcmVudC0+bV90cmFuc2Zvcm0u
Y29tYmluZWRGb3JDaGlsZHJlbigpOworICAgICAgICBwYXJlbnRUcmFuc2Zvcm0gPSBtX3BhcmVu
dC0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKTsKICAgICBlbHNlIGlm
IChtX2VmZmVjdFRhcmdldCkKLSAgICAgICAgcGFyZW50VHJhbnNmb3JtID0gbV9lZmZlY3RUYXJn
ZXQtPm1fdHJhbnNmb3JtLmNvbWJpbmVkKCk7Ci0gICAgbV90cmFuc2Zvcm0uY29tYmluZVRyYW5z
Zm9ybXMocGFyZW50VHJhbnNmb3JtKTsKKyAgICAgICAgcGFyZW50VHJhbnNmb3JtID0gbV9lZmZl
Y3RUYXJnZXQtPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpOworICAgIG1fY3VycmVudFRy
YW5zZm9ybS5jb21iaW5lVHJhbnNmb3JtcyhwYXJlbnRUcmFuc2Zvcm0pOwogCi0gICAgbV9zdGF0
ZS52aXNpYmxlID0gbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgfHwgIW1fdHJhbnNmb3JtLmNv
bWJpbmVkKCkuaXNCYWNrRmFjZVZpc2libGUoKTsKKyAgICBtX3N0YXRlLnZpc2libGUgPSBtX3N0
YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSB8fCAhbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCku
aXNCYWNrRmFjZVZpc2libGUoKTsKIAogICAgIGlmIChtX3BhcmVudCAmJiBtX3BhcmVudC0+bV9z
dGF0ZS5wcmVzZXJ2ZXMzRCkKLSAgICAgICAgbV9jZW50ZXJaID0gbV90cmFuc2Zvcm0uY29tYmlu
ZWQoKS5tYXBQb2ludChGbG9hdFBvaW50M0QobV9zdGF0ZS5zaXplLndpZHRoKCkgLyAyLCBtX3N0
YXRlLnNpemUuaGVpZ2h0KCkgLyAyLCAwKSkueigpOworICAgICAgICBtX2NlbnRlclogPSBtX2N1
cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5tYXBQb2ludChGbG9hdFBvaW50M0QobV9zdGF0ZS5z
aXplLndpZHRoKCkgLyAyLCBtX3N0YXRlLnNpemUuaGVpZ2h0KCkgLyAyLCAwKSkueigpOwogCiAg
ICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQogICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+Y29t
cHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKQEAgLTExOCw3ICsxMTMsNyBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMm
IG9wdGlvbnMpCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUob3B0aW9ucy5vZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVp
Z2h0KCkpOwogICAgIHRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7Ci0gICAg
dHJhbnNmb3JtLm11bHRpcGx5KG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkpOworICAgIHRyYW5zZm9y
bS5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSk7CiAKICAgICBmbG9hdCBv
cGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5OwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNr
ID0gb3B0aW9ucy5tYXNrOwpAQCAtMTY4LDcgKzE2Myw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
JiBvCiAKICAgICBib29sIHNob3VsZENsaXAgPSBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgJiYgIW1f
c3RhdGUucHJlc2VydmVzM0Q7CiAgICAgaWYgKHNob3VsZENsaXApCi0gICAgICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci0+YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KG9wdGlvbnMudHJh
bnNmb3JtKS5tdWx0aXBseShtX3RyYW5zZm9ybS5jb21iaW5lZCgpKSwgbGF5ZXJSZWN0KCkpOwor
ICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1h
dHJpeChvcHRpb25zLnRyYW5zZm9ybSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJp
bmVkKCkpLCBsYXllclJlY3QoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hp
bGRyZW4uc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fY2hpbGRyZW5baV0tPnBhaW50UmVjdXJzaXZl
KG9wdGlvbnMpOwpAQCAtMTgwLDEzICsxNzUsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG8K
IEludFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpCiB7
CiAgICAgLy8gRklYTUU6IEFkZCBhbiBpbnZlcnNlIHRyYW5zZm9ybSB0byBMYXllclRyYW5zZm9y
bS4KLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobV90cmFuc2Zvcm0uY29tYmlu
ZWQoKS5pbnZlcnNlKCkpOworICAgIHJldHVybiBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtX2N1
cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOwogfQogCiBJbnRSZWN0IFRleHR1
cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QoY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCkKIHsKICAgICBJbnRSZWN0IHJlY3Q7Ci0gICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbG9jYWxUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtYXRyaXgpLm11
bHRpcGx5KG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGxvY2FsVHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KS5tdWx0aXBseSht
X2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSk7CiAgICAgcmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QobG9jYWxUcmFuc2Zvcm0ubWFwUmVjdChsYXllclJlY3QoKSkpOwogICAgIGlmICghbV9zdGF0
ZS5tYXNrc1RvQm91bmRzICYmICFtX3N0YXRlLm1hc2tMYXllcikgewogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCkBAIC0xOTQsMTIgKzE4OSwx
MiBAQCBJbnRSZWN0IFRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3Qo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmCiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQotICAgIGlmIChtX2ZpbHRlcnMuaGFzT3V0c2V0cygpKSB7CisgICAgaWYgKG1fY3VycmVu
dEZpbHRlcnMuaGFzT3V0c2V0cygpKSB7CiAgICAgICAgIGludCBsZWZ0T3V0c2V0OwogICAgICAg
ICBpbnQgdG9wT3V0c2V0OwogICAgICAgICBpbnQgYm90dG9tT3V0c2V0OwogICAgICAgICBpbnQg
cmlnaHRPdXRzZXQ7Ci0gICAgICAgIG1fZmlsdGVycy5nZXRPdXRzZXRzKHRvcE91dHNldCwgcmln
aHRPdXRzZXQsIGJvdHRvbU91dHNldCwgbGVmdE91dHNldCk7CisgICAgICAgIG1fY3VycmVudEZp
bHRlcnMuZ2V0T3V0c2V0cyh0b3BPdXRzZXQsIHJpZ2h0T3V0c2V0LCBib3R0b21PdXRzZXQsIGxl
ZnRPdXRzZXQpOwogICAgICAgICBJbnRSZWN0IHVuZmlsdGVyZWRUYXJnZXRSZWN0KHJlY3QpOwog
ICAgICAgICByZWN0Lm1vdmUoc3RkOjptYXgoMCwgLWxlZnRPdXRzZXQpLCBzdGQ6Om1heCgwLCAt
dG9wT3V0c2V0KSk7CiAgICAgICAgIHJlY3QuZXhwYW5kKGxlZnRPdXRzZXQgKyByaWdodE91dHNl
dCwgdG9wT3V0c2V0ICsgYm90dG9tT3V0c2V0KTsKQEAgLTIzMywxMCArMjI4LDEwIEBAIFRleHR1
cmVNYXBwZXJMYXllcjo6Q29udGVudHNMYXllckNvdW50IFRleHR1cmVNYXBwZXJMYXllcjo6Y291
bnRQb3RlbnRpYWxMYXllcnNXCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2hvdWxkUGFpbnRU
b0ludGVybWVkaWF0ZVN1cmZhY2UoKSBjb25zdAogewogI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
LSAgICBpZiAobV9maWx0ZXJzLnNpemUoKSkKKyAgICBpZiAobV9jdXJyZW50RmlsdGVycy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0gICAgYm9vbCBoYXNPcGFjaXR5ID0g
bV9vcGFjaXR5IDwgMC45OTsKKyAgICBib29sIGhhc09wYWNpdHkgPSBtX2N1cnJlbnRPcGFjaXR5
IDwgMC45OTsKICAgICBib29sIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ID0gY291
bnRQb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMoKSA9PSBNdWx0aXBsZUxheWVyc1dpdGhDb250
ZW50czsKICAgICBib29sIGhhc1JlcGxpY2EgPSAhIW1fc3RhdGUucmVwbGljYUxheWVyOwogICAg
IGJvb2wgaGFzTWFzayA9ICEhbV9zdGF0ZS5tYXNrTGF5ZXI7CkBAIC0yNjcsNyArMjYyLDcgQEAg
Ym9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmlzVmlzaWJsZSgpIGNvbnN0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIW1fc3RhdGUuY29udGVudHNWaXNpYmxlICYmIG1fY2hpbGRyZW4u
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fb3BhY2l0eSA8IDAu
MDEpCisgICAgaWYgKG1fY3VycmVudE9wYWNpdHkgPCAwLjAxKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yODIsOCArMjc3LDggQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVy
ZU1hcHBlclBhaW4KICAgICAgICAgICAgIHJlcGxpY2FPcHRpb25zLm1hc2sgPSBtX3N0YXRlLnJl
cGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1cmUoKTsKIAogICAgICAgICByZXBs
aWNhT3B0aW9ucy50cmFuc2Zvcm0KLSAgICAgICAgICAgICAgICAgIC5tdWx0aXBseShtX3N0YXRl
LnJlcGxpY2FMYXllci0+bV90cmFuc2Zvcm0uY29tYmluZWQoKSkKLSAgICAgICAgICAgICAgICAg
IC5tdWx0aXBseShtX3RyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKSk7CisgICAgICAgICAg
ICAubXVsdGlwbHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21i
aW5lZCgpKQorICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5l
ZCgpLmludmVyc2UoKSk7CiAgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKHJlcGxpY2FPcHRp
b25zKTsKICAgICB9CiAKQEAgLTMyMiw3ICszMTcsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9u
cwogICAgIGlmICghaXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IG9w
YWNpdHkgPSBvcHRpb25zLm9wYWNpdHkgKiBtX29wYWNpdHk7CisgICAgZmxvYXQgb3BhY2l0eSA9
IG9wdGlvbnMub3BhY2l0eSAqIG1fY3VycmVudE9wYWNpdHk7CiAgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IG1hc2tUZXh0dXJlID0gbV9zdGF0ZS5tYXNrTGF5ZXIgPyBtX3N0YXRlLm1hc2tMYXll
ci0+dGV4dHVyZSgpIDogMDsKIAogICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcGFpbnRP
cHRpb25zKG9wdGlvbnMpOwpAQCAtMzQyLDcgKzMzNyw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRp
b25zCiAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgp
KTsKICAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9IDE7CiAKLSAgICBwYWludE9wdGlvbnMudHJh
bnNmb3JtID0gbV90cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCk7CisgICAgcGFpbnRPcHRp
b25zLnRyYW5zZm9ybSA9IG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsK
ICAgICBwYWludE9wdGlvbnMub2Zmc2V0ID0gLUludFNpemUoc3VyZmFjZVJlY3QueCgpLCBzdXJm
YWNlUmVjdC55KCkpOwogCiAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShwYWlu
dE9wdGlvbnMpOwpAQCAtMzUyLDE0ICszNDcsMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnBhaW50UmVjdXJzaXZlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMK
ICAgICAgICAgbWFza1RleHR1cmUgPSAwOwogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAg
IHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9maWx0ZXJzLCBvcHRpb25zLnRleHR1cmVNYXBwZXIs
IHN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0KTsKKyAgICBzdXJmYWNlID0gYXBwbHlGaWx0ZXJz
KG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5nZXQoKSwg
c3VyZmFjZVJlY3QpOwogI2VuZGlmCiAKICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRT
dXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdldFRyYW5zZm9ybS50cmFuc2xhdGUob3B0aW9ucy5v
ZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVpZ2h0KCkpOwogICAgIHRhcmdldFRyYW5z
Zm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7Ci0gICAgdGFyZ2V0VHJhbnNmb3JtLm11
bHRpcGx5KG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkpOworICAgIHRhcmdldFRyYW5zZm9ybS5tdWx0
aXBseShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSk7CiAKICAgICBvcHRpb25zLnRleHR1
cmVNYXBwZXItPmRyYXdUZXh0dXJlKCpzdXJmYWNlLmdldCgpLCBzdXJmYWNlUmVjdCwgdGFyZ2V0
VHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrVGV4dHVyZS5nZXQoKSk7CiB9CkBAIC00MjgsMTEgKzQy
MywxMiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogCiAgICAgbV9jb250ZW50c0xheWVyID0g
Z3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCi0gICAgbV90cmFuc2Zvcm0uc2V0UG9z
aXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKLSAgICBtX3RyYW5zZm9ybS5zZXRBbmNob3JQb2lu
dChtX3N0YXRlLmFuY2hvclBvaW50KTsKLSAgICBtX3RyYW5zZm9ybS5zZXRTaXplKG1fc3RhdGUu
c2l6ZSk7Ci0gICAgbV90cmFuc2Zvcm0uc2V0RmxhdHRlbmluZyghbV9zdGF0ZS5wcmVzZXJ2ZXMz
RCk7Ci0gICAgbV90cmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0obV9zdGF0ZS5jaGlsZHJl
blRyYW5zZm9ybSk7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVk
UG9zaXRpb24oKSk7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEFuY2hvclBvaW50KG1fc3Rh
dGUuYW5jaG9yUG9pbnQpOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRTaXplKG1fc3RhdGUu
c2l6ZSk7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldEZsYXR0ZW5pbmcoIW1fc3RhdGUucHJl
c2VydmVzM0QpOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRMb2NhbFRyYW5zZm9ybShtX3N0
YXRlLnRyYW5zZm9ybSk7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNm
b3JtKG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pOwogCiAgICAgc3luY0FuaW1hdGlvbnMoKTsK
IH0KQEAgLTUwNywxMiArNTAzLDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzeW5jQW5p
bWF0aW9ucygpCiB7CiAgICAgbV9hbmltYXRpb25zLmFwcGx5KHRoaXMpOwogICAgIGlmICghbV9h
bmltYXRpb25zLmhhc0FjdGl2ZUFuaW1hdGlvbnNPZlR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybSkpCi0gICAgICAgIHNldFRyYW5zZm9ybShtX3N0YXRlLnRyYW5zZm9ybSk7Cisg
ICAgICAgIHNldEFuaW1hdGVkVHJhbnNmb3JtKG1fc3RhdGUudHJhbnNmb3JtKTsKICAgICBpZiAo
IW1fYW5pbWF0aW9ucy5oYXNBY3RpdmVBbmltYXRpb25zT2ZUeXBlKEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5KSkKLSAgICAgICAgc2V0T3BhY2l0eShtX3N0YXRlLm9wYWNpdHkpOworICAgICAgICBz
ZXRBbmltYXRlZE9wYWNpdHkobV9zdGF0ZS5vcGFjaXR5KTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCiAgICAgaWYgKCFtX2FuaW1hdGlvbnMuaGFzQWN0aXZlQW5pbWF0aW9uc09mVHlwZShBbmlt
YXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKSkKLSAgICAgICAgc2V0RmlsdGVycyhtX3N0YXRlLmZp
bHRlcnMpOworICAgICAgICBzZXRBbmltYXRlZEZpbHRlcnMobV9zdGF0ZS5maWx0ZXJzKTsKICNl
bmRpZgogfQogCkBAIC01MzYsNyArNTMyLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogICAg
ICAgICBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgPSBGbG9hdFNpemUoKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fc2Nyb2xsUG9zaXRpb25EZWx0YSA9IGRlbHRhOwotICAgIG1fdHJhbnNmb3JtLnNldFBv
c2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBv
c2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aAppbmRleCBmODRlMmFiNjQ1MzU3NjkwNWU4MjcxYzhlYWM5ODAwZjdjZmU1MzQ0Li5mNDFlNTJh
OTdjNGIzMjhjNDRjZjY1MGFlZTM0Y2QzMDBhNDY1MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3BhcmVudCgwKQogICAg
ICAgICAsIG1fZWZmZWN0VGFyZ2V0KDApCiAgICAgICAgICwgbV9jb250ZW50c0xheWVyKDApCi0g
ICAgICAgICwgbV9vcGFjaXR5KDEpCisgICAgICAgICwgbV9jdXJyZW50T3BhY2l0eSgxKQogICAg
ICAgICAsIG1fY2VudGVyWigwKQogICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQogICAgIHsg
fQpAQCAtODcsMTEgKzg3LDYgQEAgcHVibGljOgogCiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlcigpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seShHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciopOwotICAgIHZvaWQgc2V0VHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgdm9pZCBzZXRPcGFjaXR5KGZs
b2F0IHZhbHVlKSB7IG1fb3BhY2l0eSA9IHZhbHVlOyB9Ci0jaWYgRU5BQkxFKENTU19GSUxURVJT
KQotICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7
IG1fZmlsdGVycyA9IGZpbHRlcnM7IH0KLSNlbmRpZgogICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CiAg
ICAgYm9vbCBkZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0Owog
CkBAIC0xMjksMTAgKzEyNCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hp
bGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAg
ICAvLyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQKLSAgICB2b2lkIHNldEFuaW1hdGVk
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgc2V0VHJhbnNm
b3JtKG1hdHJpeCk7IH0KLSAgICB2b2lkIHNldEFuaW1hdGVkT3BhY2l0eShmbG9hdCBvcGFjaXR5
KSB7IHNldE9wYWNpdHkob3BhY2l0eSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRU
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgT1ZFUlJJREUgeyBt
X2N1cnJlbnRUcmFuc2Zvcm0uc2V0TG9jYWxUcmFuc2Zvcm0obWF0cml4KTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRBbmltYXRlZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkgT1ZFUlJJREUgeyBtX2N1
cnJlbnRPcGFjaXR5ID0gb3BhY2l0eTsgfQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpIHsgc2V0RmlsdGVycyhmaWx0ZXJzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRBbmlt
YXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgT1ZFUlJJREUgeyBt
X2N1cnJlbnRGaWx0ZXJzID0gZmlsdGVyczsgfQogI2VuZGlmCiAKICAgICB2b2lkIHN5bmNBbmlt
YXRpb25zKCk7CkBAIC0xNTEsMTYgKzE0NiwxNSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
RmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zdGF0ZS5zaXplKTsKICAgICB9CiAKLSAg
ICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fdHJhbnNmb3JtOwotCiAgICAgVmVjdG9yPFRleHR1
cmVNYXBwZXJMYXllcio+IG1fY2hpbGRyZW47CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX3Bh
cmVudDsKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIG1fZWZmZWN0VGFyZ2V0OwogICAgIFJlZlB0
cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllciogbV9jb250ZW50c0xheWVyOwotICAgIGZsb2F0IG1fb3BhY2l0
eTsKKyAgICBHcmFwaGljc0xheWVyVHJhbnNmb3JtIG1fY3VycmVudFRyYW5zZm9ybTsKKyAgICBm
bG9hdCBtX2N1cnJlbnRPcGFjaXR5OwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBGaWx0
ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fY3VycmVudEZp
bHRlcnM7CiAjZW5kaWYKICAgICBmbG9hdCBtX2NlbnRlclo7CiAKQEAgLTE4OCw3ICsxODIsNyBA
QCBwcml2YXRlOgogICAgICAgICBib29sIHZpc2libGUgOiAxOwogCiAgICAgICAgIFN0YXRlKCkK
LSAgICAgICAgICAgIDogb3BhY2l0eSgxLmYpCisgICAgICAgICAgICA6IG9wYWNpdHkoMSkKICAg
ICAgICAgICAgICwgbWFza0xheWVyKDApCiAgICAgICAgICAgICAsIHJlcGxpY2FMYXllcigwKQog
ICAgICAgICAgICAgLCBwcmVzZXJ2ZXMzRChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5j
cHAKaW5kZXggNDQ0MmJhZmZmZjczNzg0NDYyMTlhMDkwMmY2YzM5ZWQ2OWQ4ZWE4NS4uZWU4MmI5
NjVhNDYwYzQxMWU1MWNhZDA4M2RjM2IwNWM0ZmIwMmNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdC5jcHAKQEAgLTExMyw4ICsxMTMsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdDo6cmVuZGVyQ29tcG9zaXRlZExheWVycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQKICAg
ICAgICAgMCwgMCwgMSwgMCwKICAgICAgICAgdHJhbnNmb3JtLm0zMSgpLCB0cmFuc2Zvcm0ubTMy
KCksIDAsIHRyYW5zZm9ybS5tMzMoKQogICAgICAgICApOwotICAgIG1fcm9vdFRleHR1cmVNYXBw
ZXJMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Ci0gICAgbV9yb290VGV4dHVyZU1hcHBlckxh
eWVyLT5zZXRPcGFjaXR5KHBhaW50ZXItPm9wYWNpdHkoKSk7CisgICAgaWYgKG1fcm9vdEdyYXBo
aWNzTGF5ZXItPm9wYWNpdHkoKSAhPSBwYWludGVyLT5vcGFjaXR5KCkgfHwgbV9yb290R3JhcGhp
Y3NMYXllci0+dHJhbnNmb3JtKCkgIT0gbWF0cml4KSB7CisgICAgICAgIG1fcm9vdEdyYXBoaWNz
TGF5ZXItPnNldE9wYWNpdHkocGFpbnRlci0+b3BhY2l0eSgpKTsKKyAgICAgICAgbV9yb290R3Jh
cGhpY3NMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7CisgICAgICAgIG1fcm9vdEdyYXBoaWNz
TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICB9CiAg
ICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVy
LT5iZWdpbkNsaXAobWF0cml4LCBjbGlwKTsKICAgICBtX3Jvb3RUZXh0dXJlTWFwcGVyTGF5ZXIt
PnBhaW50KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>