<?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>88924</bug_id>
          
          <creation_ts>2012-06-12 14:47:20 -0700</creation_ts>
          <short_desc>[chromium] Add an allocation step for CCRenderer before drawing a frame</short_desc>
          <delta_ts>2012-06-19 15:19:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          <blocked>89474</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>647360</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-12 14:47:20 -0700</bug_when>
    <thetext>[chromium] Add an allocation step for CCRenderer before drawing a frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647362</commentid>
    <comment_count>1</comment_count>
      <attachid>147168</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-12 14:47:49 -0700</bug_when>
    <thetext>Created attachment 147168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648061</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-13 08:35:16 -0700</bug_when>
    <thetext>Not for review yet (misclick on EWS) just putting up steps as I work on this RenderSurface textures in LRC code. (Longing for github :))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649659</commentid>
    <comment_count>3</comment_count>
      <attachid>147686</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-14 17:23:37 -0700</bug_when>
    <thetext>Created attachment 147686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651621</commentid>
    <comment_count>4</comment_count>
      <attachid>148150</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-18 12:37:33 -0700</bug_when>
    <thetext>Created attachment 148150
Patch

another peek before i hook this up to LRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651622</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-18 12:40:55 -0700</bug_when>
    <thetext>I&apos;m planning to do something like this for allocation of RenderPass textures (this is always in the root/host compositor).

I&apos;m going to start hooking this up to LRC and see how it fares, I had done this earlier without the CCScopedTexture class and it was a bit ugly, so I&apos;ve cleaned it up some before attempting again.

If anyone wants to look at it and tell me they like/dislike the design ideas here that would be very nice as I&apos;m still not overly committed to it.

Basic idea:

Add a step before drawing to decide what passes will get allocated, and which saved textures from the previous frame will not be clobbered and will be available when they are needed in the current frame.

Then when drawing we already know which passes we draw, and can allocate textures as needed on the fly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652689</commentid>
    <comment_count>6</comment_count>
      <attachid>148391</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-19 12:40:56 -0700</bug_when>
    <thetext>Created attachment 148391
Patch

This is just the piece to add the allocation step to the draw-a-frame process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652724</commentid>
    <comment_count>7</comment_count>
      <attachid>148402</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-19 13:17:23 -0700</bug_when>
    <thetext>Created attachment 148402
Patch

Decide allocations/Set the memory limit before reserving/testing cached surface textures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652799</commentid>
    <comment_count>8</comment_count>
      <attachid>148402</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-19 14:17:16 -0700</bug_when>
    <thetext>Comment on attachment 148402
Patch

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

R=me.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h:71
&gt; +    // This method should be a no-op in a nested compositor that does not render its passes directly.

Not sure this comment adds anything.  Other functions will probably be a no-op too.  We can document that in the derived interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652802</commentid>
    <comment_count>9</comment_count>
      <attachid>148402</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-19 14:20:16 -0700</bug_when>
    <thetext>Comment on attachment 148402
Patch

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

thanks!

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h:71
&gt;&gt; +    // This method should be a no-op in a nested compositor that does not render its passes directly.
&gt; 
&gt; Not sure this comment adds anything.  Other functions will probably be a no-op too.  We can document that in the derived interface.

Ya.. good call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652805</commentid>
    <comment_count>10</comment_count>
      <attachid>148419</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-19 14:21:04 -0700</bug_when>
    <thetext>Created attachment 148419
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652806</commentid>
    <comment_count>11</comment_count>
      <attachid>148420</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-19 14:22:09 -0700</bug_when>
    <thetext>Created attachment 148420
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652809</commentid>
    <comment_count>12</comment_count>
      <attachid>148422</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-19 14:23:49 -0700</bug_when>
    <thetext>Created attachment 148422
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652810</commentid>
    <comment_count>13</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-19 14:23:55 -0700</bug_when>
    <thetext>Learning about webkit-patch land-safely :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652875</commentid>
    <comment_count>14</comment_count>
      <attachid>148422</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 15:19:04 -0700</bug_when>
    <thetext>Comment on attachment 148422
Patch for landing

Clearing flags on attachment: 148422

Committed r120759: &lt;http://trac.webkit.org/changeset/120759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652876</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 15:19:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147168</attachid>
            <date>2012-06-12 14:47:49 -0700</date>
            <delta_ts>2012-06-14 17:23:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88924-20120612174749.patch</filename>
            <type>text/plain</type>
            <size>6724</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU1MTU0NTUzNDIxZWIz
NDE2MjBmODE2ZDM1ZTJlMGM4ZjI4MDZmMS4uZmIzYjdmZGE4MTAxZGU3M2E2NTliNDZlOGQxMzJj
ZjhhZWI1YzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTEyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IGFuIGFsbG9jYXRpb24gc3RlcCBmb3IgQ0NSZW5kZXJlciBiZWZvcmUgZHJhd2luZyBhIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YWxsb2NhdGVSZW5kZXJQYXNzZXMpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmJlZ2luRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJv
bWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpk
cmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlcmVyLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKwogMjAxMi0wNi0xMiAgU2hyZXkgQmFu
Z2EgIDxiYW5nYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSFRNTCBwYXJzZXIgc2hvdWxkIHlp
ZWxkIG1vcmUgdG8gaW1wcm92ZSBwZXJjZWl2ZWQgcGFnZSBsb2FkIHRpbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDNlMjA4OGE4YWY5NThjYzA0ZDUyZTVlMTg0
YmJkNzYxMDk2ZmI3ZTMuLmJkZGQzOGViY2ZhN2I3ZTViNjc1YjljNGY4ZmFmODRlYjBhNDVkMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNDI3LDYgKzQyNywx
MSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJQYXNzKGNvbnN0IEND
UmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29ucwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIH0KIAordm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmFsbG9jYXRlUmVuZGVyUGFzc2VzKGNvbnN0IENDUmVuZGVy
UGFzc0xpc3QmIHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLCBzaXplX3QgbWVtb3J5TGltaXRCeXRl
cykKK3sKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyht
ZW1vcnlMaW1pdEJ5dGVzKTsKK30KKwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2lu
RHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBhc3MpCiB7CiAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgZnJhbWVidWZmZXIgaXMgYXV0b21hdGljYWxseSBy
ZWNyZWF0ZWQgb24gZmlyc3QgdXNlCkBAIC00MzUsMTEgKzQ0MCw2IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RS
ZW5kZXJQYXNzCiAgICAgbV9kZWZhdWx0UmVuZGVyUGFzcyA9IHJvb3RSZW5kZXJQYXNzOwogICAg
IEFTU0VSVChtX2RlZmF1bHRSZW5kZXJQYXNzKTsKIAotICAgIHNpemVfdCBjb250ZW50c01lbW9y
eVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPmN1cnJlbnRNZW1vcnlVc2VC
eXRlcygpOwotICAgIHNpemVfdCBtYXhMaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRC
eXRlcyh2aWV3cG9ydFNpemUoKSk7Ci0gICAgc2l6ZV90IG5ld0xpbWl0ID0gKG1heExpbWl0ID4g
Y29udGVudHNNZW1vcnlVc2VCeXRlcykgPyBtYXhMaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0
ZXMgOiAwOwotICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVz
KG5ld0xpbWl0KTsKLQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBkNzNjMTUy
NzQ0Y2E0YzNmMDRkMmMxMTY4Zjc2MTcwYzhiOGM3YjM4Li5mYWI1OGIxZjU1YWJlNmFmM2ExYjkx
NGE4YmY1NjYxMzEwMmZjM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApA
QCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBGbG9hdFF1YWQmIHNoYXJlZEdl
b21ldHJ5UXVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnlRdWFkOyB9CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgYWxsb2NhdGVSZW5kZXJQYXNzZXMoY29uc3QgQ0NSZW5kZXJQYXNzTGlz
dCYsIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiBkZWZhdWx0UmVuZGVyUGFzcykg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVy
UGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgT1ZFUlJJREU7CkBAIC0xMDEs
NiArMTAyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogaW1wbFRl
eHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltcGxUZXh0dXJlQWxs
b2NhdG9yLmdldCgpOyB9CiAgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBjb250ZW50c1Rl
eHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvci5nZXQoKTsgfQogCisgICAgdmlydHVhbCBzaXplX3QgY3VycmVudENvbnRlbnRz
TWVtb3J5VXNlQnl0ZXMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7IH0KKwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc0NvbnRleHRMb3N0KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IDYwYzQyZDdkNzQzM2I0ZGEyNmMyNTAwMjJmZWY4ZjkwMjQw
NmZiZTUuLjFmNzZjM2VmOTYyMTEyZTYzODEwZjIzZTQyYmM5YzM0MzczMzc3MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00MDksNiArNDA5LDEyIEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1l
KQogICAgIC8vIFRoaXMgdmFsdWUgaXMgY3VycmVudGx5IGluYWNjZXNzaWJsZSBiZWNhdXNlIGl0
IGlzIHVwIGluIENocm9taXVtJ3MKICAgICAvLyBSZW5kZXJXaWRnZXQuCiAKKyAgICAvLyBGSVhN
RTogR2V0IHRoaXMgbWVtb3J5IGxpbWl0IGZyb20gR1BVIE1lbW9yeSBNYW5hZ2VyCisgICAgc2l6
ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPSBsYXllclJlbmRlcmVyKCktPmN1cnJlbnRDb250
ZW50c01lbW9yeVVzZUJ5dGVzKCk7CisgICAgc2l6ZV90IG1heExpbWl0Qnl0ZXMgPSBUZXh0dXJl
TWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpOworICAgIHNpemVfdCBsaW1p
dEJ5dGVzID0gbWF4TGltaXRCeXRlcyAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPiAwdSA/IG1h
eExpbWl0Qnl0ZXMgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzIDogMHU7CisgICAgbV9sYXllclJl
bmRlcmVyLT5hbGxvY2F0ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMsIGxpbWl0Qnl0
ZXMpOworCiAgICAgLy8gVGhlIHJvb3QgUmVuZGVyUGFzcyBpcyB0aGUgbGFzdCBvbmUgdG8gYmUg
ZHJhd24uCiAgICAgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBh
c3Nlcy5sYXN0KCkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRleCA5YzkzOGE5OTBhYmM0
ZDliNTU1NDY4ZTcwODZkN2I1MzYxYjYwNTE5Li43ZmNhZWRiOTA2NWJjY2ZmZDRkNjExNDhlNGI2
ZGI3ZGE0MDY1ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCkBAIC0yOSwxMiArMjksMTIgQEAKICNp
bmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ1JlbmRlclBhc3M7CiBjbGFzcyBUZXh0dXJlQWxs
b2NhdG9yOwogY2xhc3MgVGV4dHVyZUNvcGllcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwpAQCAt
NjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1h
dHJpeDsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHdpbmRv
d01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9CiAKKyAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgYmUgYSBuby1vcCBpbiBhIG5lc3RlZCBjb21wb3NpdG9yIHRoYXQgZG9l
cyBub3QgcmVuZGVyIGl0cyBwYXNzZXMgZGlyZWN0bHkuCisgICAgdmlydHVhbCB2b2lkIGFsbG9j
YXRlUmVuZGVyUGFzc2VzKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmLCBzaXplX3QgbWVtb3J5TGlt
aXRCeXRlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBD
Q1JlbmRlclBhc3MqIGRlZmF1bHRSZW5kZXJQYXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNj
aXNzb3JSZWN0SW5DdXJyZW50UGFzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3
aW5nRnJhbWUoKSA9IDA7CkBAIC04OSw2ICs5MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFRl
eHR1cmVBbGxvY2F0b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3Qg
PSAwOwogCisgICAgdmlydHVhbCBzaXplX3QgY3VycmVudENvbnRlbnRzTWVtb3J5VXNlQnl0ZXMo
KSBjb25zdCA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJ
bnRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dExvc3QoKSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147686</attachid>
            <date>2012-06-14 17:23:37 -0700</date>
            <delta_ts>2012-06-18 12:37:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88924-20120614202336.patch</filename>
            <type>text/plain</type>
            <size>25384</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU1MTU0NTUzNDIxZWIz
NDE2MjBmODE2ZDM1ZTJlMGM4ZjI4MDZmMS4uZmIzYjdmZGE4MTAxZGU3M2E2NTliNDZlOGQxMzJj
ZjhhZWI1YzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTEyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IGFuIGFsbG9jYXRpb24gc3RlcCBmb3IgQ0NSZW5kZXJlciBiZWZvcmUgZHJhd2luZyBhIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YWxsb2NhdGVSZW5kZXJQYXNzZXMpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmJlZ2luRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJv
bWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpk
cmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlcmVyLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKwogMjAxMi0wNi0xMiAgU2hyZXkgQmFu
Z2EgIDxiYW5nYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSFRNTCBwYXJzZXIgc2hvdWxkIHlp
ZWxkIG1vcmUgdG8gaW1wcm92ZSBwZXJjZWl2ZWQgcGFnZSBsb2FkIHRpbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA3YTIxY2I1YjI1ZTNjZTIyMmIwZDc0ZGFjNzIyYWNmMDVmZTYwYjJkLi4wNTdjZmY4
ZmU3OWE1MmE1M2NkY2VjODg2ZDY3MzgxNmExZjJlZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
NzM3LDYgKzM3MzcsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc1RleHR1cmVBbGxv
Y2F0b3IuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJz
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAzZTIwODhh
OGFmOTU4Y2MwNGQ1MmU1ZTE4NGJiZDc2MTA5NmZiN2UzLi5kNTVjNThlYWZhODRmY2FkYjRkMmQ5
NzcxZDNmMmQyMzNkMzVjNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKQEAgLTQyNyw2ICs0MjcsMTUgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFy
UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnMKICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUKSk7CiB9CiAKKwordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJlbmRlclBh
c3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBhc3Nl
c0luRHJhd09yZGVyLCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcykKK3sKKyAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgbGluZSB3aGVuIHdlIGFsbG9jYXRlIFJlbmRlclBhc3MgdGV4dHVyZXMgb3Vy
c2VsZi4KKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyht
ZW1vcnlMaW1pdEJ5dGVzKTsKKworICAgIG1fcmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3ItPmRl
Y2lkZUFsbG9jYXRpb25zRm9yRnJhbWUocmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIsIG1lbW9yeUxp
bWl0Qnl0ZXMpOworfQorCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5n
RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcykKIHsKICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSBmcmFtZWJ1ZmZlciBpcyBhdXRvbWF0aWNhbGx5IHJlY3JlYXRl
ZCBvbiBmaXJzdCB1c2UKQEAgLTQzNSwxMSArNDQ0LDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBh
c3MKICAgICBtX2RlZmF1bHRSZW5kZXJQYXNzID0gcm9vdFJlbmRlclBhc3M7CiAgICAgQVNTRVJU
KG1fZGVmYXVsdFJlbmRlclBhc3MpOwogCi0gICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0
ZXMgPSBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7
Ci0gICAgc2l6ZV90IG1heExpbWl0ID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZp
ZXdwb3J0U2l6ZSgpKTsKLSAgICBzaXplX3QgbmV3TGltaXQgPSAobWF4TGltaXQgPiBjb250ZW50
c01lbW9yeVVzZUJ5dGVzKSA/IG1heExpbWl0IC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA6IDA7
Ci0gICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobmV3TGlt
aXQpOwotCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMjAxLDYgKzEyMDUsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Zmlu
aXNoRHJhd2luZ0ZyYW1lKCkKICAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVk
TWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7CiAgICAgbV9pbXBsVGV4dHVyZU1hbmFn
ZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXQpOwogICAgIG1faW1wbFRleHR1
cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5n
ZXQoKSk7CisKKyAgICBtX3JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yLT5yZW1vdmVBbGxvY2F0
aW9uc05vdFNhdmVkRm9yTmV4dEZyYW1lKCk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0b0dMTWF0cml4KGZsb2F0KiBmbGF0dGVuZWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtKQpAQCAtMTUzMSw2ICsxNTM3LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVB
bGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOwogICAgICAgICBtX2ltcGxU
ZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJlU3RvcmFnZUV4dCh0cnVlKTsKICAgICB9Cisg
ICAgbV9yZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvciA9IENDUmVuZGVyUGFzc1RleHR1cmVBbGxv
Y2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGQ3M2MxNTI3NDRjYTRjM2YwNGQy
YzExNjhmNzYxNzBjOGI4YzdiMzguLjk3MGFjYzA1MmQ5MGNlZGNmNDdiZGY1NmY2ZDAzNGI1M2Nh
MTBkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1
cmVVcGxvYWRlci5oIgogI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgorI2lu
Y2x1ZGUgImNjL0NDUmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9D
Q1JlbmRlcmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNzUsNiArNzYs
NyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBGbG9hdFF1YWQmIHNoYXJlZEdlb21ldHJ5UXVhZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnlRdWFkOyB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNz
TGlzdCYsIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiBkZWZhdWx0UmVuZGVyUGFz
cykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVu
ZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgT1ZFUlJJREU7CkBAIC0x
MDEsNiArMTAzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogaW1w
bFRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltcGxUZXh0dXJl
QWxsb2NhdG9yLmdldCgpOyB9CiAgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBjb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvci5nZXQoKTsgfQogCisgICAgdmlydHVhbCBzaXplX3QgY3VycmVudENvbnRl
bnRzTWVtb3J5VXNlQnl0ZXMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7IH0KKwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc0NvbnRleHRMb3N0KCkgT1ZFUlJJREU7CkBAIC0yNTYsNiArMjYwLDggQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBt
X2ltcGxUZXh0dXJlQWxsb2NhdG9yOwogCisgICAgT3duUHRyPENDUmVuZGVyUGFzc1RleHR1cmVB
bGxvY2F0b3I+IG1fcmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3I7CisKICAgICBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKIAogICAgIGNvbnN0IENDUmVuZGVyUGFzcyogbV9k
ZWZhdWx0UmVuZGVyUGFzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggNjBjNDJkN2Q3NDMzYjRkYTI2YzI1MDAyMmZlZjhmOTAyNDA2ZmJlNS4uZTg3MWQwMTE5
MzJhYzVkYmJhOGFmM2YzNDhiYzExMzU5NTA0MjBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTQwOSw2ICs0MDksMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgLy8gVGhpcyB2
YWx1ZSBpcyBjdXJyZW50bHkgaW5hY2Nlc3NpYmxlIGJlY2F1c2UgaXQgaXMgdXAgaW4gQ2hyb21p
dW0ncwogICAgIC8vIFJlbmRlcldpZGdldC4KIAorICAgIC8vIEZJWE1FOiBHZXQgdGhpcyBtZW1v
cnkgbGltaXQgZnJvbSBHUFUgTWVtb3J5IE1hbmFnZXIKKyAgICBzaXplX3QgY29udGVudHNNZW1v
cnlVc2VCeXRlcyA9IGxheWVyUmVuZGVyZXIoKS0+Y3VycmVudENvbnRlbnRzTWVtb3J5VXNlQnl0
ZXMoKTsKKyAgICBzaXplX3QgbWF4TGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGlt
aXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7CisgICAgc2l6ZV90IGxpbWl0Qnl0ZXMgPSBtYXhMaW1p
dEJ5dGVzIC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA+IDB1ID8gbWF4TGltaXRCeXRlcyAtIGNv
bnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAwdTsKKyAgICBtX2xheWVyUmVuZGVyZXItPmRlY2lkZVJl
bmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGZyYW1lLnJlbmRlclBhc3NlcywgbGltaXRCeXRl
cyk7CisKICAgICAvLyBUaGUgcm9vdCBSZW5kZXJQYXNzIGlzIHRoZSBsYXN0IG9uZSB0byBiZSBk
cmF3bi4KICAgICBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzID0gZnJhbWUucmVuZGVyUGFz
c2VzLmxhc3QoKS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NU
ZXh0dXJlQWxsb2NhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGJjOTcwOWMzN2E0YTcxMTk0MjM5MWE3
ODM2OWRhNGIyMjMxOTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvci5jcHAK
QEAgLTAsMCArMSwyNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJjYy9DQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yLmgiCisKKyNpbmNsdWRlICJjYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDUmVuZGVyUGFz
c1RleHR1cmVBbGxvY2F0b3I6OkNDUmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3IoUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQor
eworICAgIEFTU0VSVChtX2NvbnRleHQpOworfQorCitDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2Nh
dG9yOjp+Q0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcigpCit7CisgICAgZm9yIChSZW5kZXJQ
YXNzQWxsb2NhdGlvbkxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9rbm93blJlbmRlclBhc3Nl
cy5iZWdpbigpOyBpdCAhPSBtX2tub3duUmVuZGVyUGFzc2VzLmVuZCgpOyArK2l0KSB7CisgICAg
ICAgIERhdGEqIGRhdGEgPSBtX3JlbmRlclBhc3NNYXAuZ2V0KCppdCk7CisgICAgICAgIGlmIChk
YXRhLT50ZXh0dXJlSWQpCisgICAgICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUoZGF0
YS0+dGV4dHVyZUlkKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9j
YXRvcjo6Y291bnRTYXZlZEFsbG9jYXRpb25zKHNpemVfdCYgaW5Vc2VCeXRlcykKK3sKKyAgICBB
U1NFUlQoIWluVXNlQnl0ZXMpOworCisgICAgZm9yIChSZW5kZXJQYXNzQWxsb2NhdGlvbkxpc3Q6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9rbm93blJlbmRlclBhc3Nlcy5iZWdpbigpOyBpdCAhPSBt
X2tub3duUmVuZGVyUGFzc2VzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIERhdGEqIGRhdGEgPSBt
X3JlbmRlclBhc3NNYXAuZ2V0KCppdCk7CisKKyAgICAgICAgZGF0YS0+c2hvdWxkQWxsb2NhdGVU
ZXh0dXJlID0gZmFsc2U7CisgICAgICAgIGRhdGEtPnNob3VsZFNhdmVUZXh0dXJlRm9yTmV4dEZy
YW1lID0gZmFsc2U7CisgICAgICAgIGRhdGEtPnRleHR1cmVJc0luVXNlRm9yQ3VycmVudEZyYW1l
ID0gZmFsc2U7CisgICAgICAgIGRhdGEtPnNob3VsZEFsbG9jYXRlQmFja2dyb3VuZFRleHR1cmUg
PSBmYWxzZTsKKworICAgICAgICBBU1NFUlQoZGF0YS0+dGV4dHVyZUlkKTsKKyAgICAgICAgQVNT
RVJUKGRhdGEtPnRleHR1cmVTaXplLndpZHRoKCkgJiYgZGF0YS0+dGV4dHVyZVNpemUuaGVpZ2h0
KCkpOworICAgICAgICBpblVzZUJ5dGVzICs9IGRhdGEtPnRleHR1cmVTaXplLndpZHRoKCkgKiBk
YXRhLT50ZXh0dXJlU2l6ZS5oZWlnaHQoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NSZW5kZXJQYXNz
VGV4dHVyZUFsbG9jYXRvcjo6YWRkQWxsb2NhdGlvbkludGVudGlvbnNGb3JDdXJyZW50RnJhbWUo
Y29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIsIHNpemVfdCBp
blVzZUJ5dGVzKQoreworICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIGtub3duIHBhc3Nlcy4gVGhl
IG9uZXMgdGhhdCBhcmVuJ3QgaW4gdGhpcyBmcmFtZSBzaG91bGQKKyAgICAvLyBiZSB0aGUgZmly
c3QgdG8gYmUgZHJvcHBlZCBzbyB3ZSBsZWF2ZSB0aGVtIGF0IHRoZSBmcm9udCBvZiB0aGUgbGlz
dCwgYW5kCisgICAgLy8gYXBwZW5kIChvciBtb3ZlKSBhbnkgcGFzc2VzIGluIHRoZSBjdXJyZW50
IGZyYW1lIG9udG8gdGhlIGVuZCBvZiB0aGUgbGlzdAorICAgIC8vIGluIGRyYXcgb3JkZXIuCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5zaXplKCk7
ICsraSkgeworICAgICAgICBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MgPSByZW5kZXJQYXNzZXNJ
bkRyYXdPcmRlcltpXS5nZXQoKTsKKworICAgICAgICBtX2tub3duUmVuZGVyUGFzc2VzLnJlbW92
ZShyZW5kZXJQYXNzKTsKKyAgICAgICAgbV9rbm93blJlbmRlclBhc3Nlcy5hZGQocmVuZGVyUGFz
cyk7CisKKyAgICAgICAgRGF0YSogZGF0YTsKKyAgICAgICAgaWYgKG1fcmVuZGVyUGFzc01hcC5j
b250YWlucyhyZW5kZXJQYXNzKSkKKyAgICAgICAgICAgIGRhdGEgPSBtX3JlbmRlclBhc3NNYXAu
Z2V0KHJlbmRlclBhc3MpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIE93blB0cjxEYXRh
PiBuZXdEYXRhID0gYWRvcHRQdHIobmV3IERhdGEpOworICAgICAgICAgICAgZGF0YSA9IG5ld0Rh
dGEuZ2V0KCk7CisgICAgICAgICAgICBtX3JlbmRlclBhc3NNYXAuc2V0KHJlbmRlclBhc3MsIG5l
d0RhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERyb3AgY2FjaGVkIHRl
eHR1cmVzIGZyb20gdGhlIHByZXZpb3VzIGZyYW1lIHRoYXQgYXJlIHRoZSB3cm9uZyBzaXplLgor
ICAgICAgICBpZiAoZGF0YS0+dGV4dHVyZUlkICYmIGRhdGEtPnRleHR1cmVTaXplICE9IHJlbmRl
clBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpLnNpemUoKSkgeworICAgICAgICAgICAgbV9j
b250ZXh0LT5kZWxldGVUZXh0dXJlKGRhdGEtPnRleHR1cmVJZCk7CisgICAgICAgICAgICBkYXRh
LT50ZXh0dXJlSWQgPSAwOworCisgICAgICAgICAgICBBU1NFUlQoZGF0YS0+dGV4dHVyZVNpemUu
d2lkdGgoKSAmJiBkYXRhLT50ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICBpblVz
ZUJ5dGVzIC09IGRhdGEtPnRleHR1cmVTaXplLndpZHRoKCkgKiBkYXRhLT50ZXh0dXJlU2l6ZS5o
ZWlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgcmVuZGVyUGFzc1VzZXNUZXh0dXJl
ID0gaSA8IHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLnNpemUoKSAtIDE7CisgICAgICAgIGRhdGEt
PnNob3VsZEFsbG9jYXRlVGV4dHVyZSA9IHJlbmRlclBhc3NVc2VzVGV4dHVyZTsKKyAgICAgICAg
ZGF0YS0+dGV4dHVyZVNpemUgPSByZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKS5z
aXplKCk7CisgICAgfQorfQorCit2b2lkIENDUmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3I6OmRl
Y2lkZUFsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFz
c2VzSW5EcmF3T3JkZXIsIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzKQoreworICAgIHNpemVfdCBp
blVzZUJ5dGVzID0gMDsKKworICAgIGNvdW50U2F2ZWRBbGxvY2F0aW9ucyhpblVzZUJ5dGVzKTsK
KyAgICBhZGRBbGxvY2F0aW9uSW50ZW50aW9uc0ZvckN1cnJlbnRGcmFtZShyZW5kZXJQYXNzZXNJ
bkRyYXdPcmRlciwgaW5Vc2VCeXRlcyk7CisKKyAgICAvLyBXYWxrIHRoZSBwYXNzZXMgaW4gdGhl
IHNhbWUgb3JkZXIgYXMgdGhleSB3aWxsIGJlIGRyYXduIHRvIGRldGVybWluZSBtZW1vcnkgcmVx
dWlyZW1lbnRzLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFzc2VzSW5EcmF3
T3JkZXIuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzID0g
cmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0uZ2V0KCk7CisgICAgICAgIGNvbnN0IENDUXVhZExp
c3QmIGNvbnRyaWJ1dGluZ1F1YWRzID0gcmVuZGVyUGFzcy0+cXVhZExpc3QoKTsKKyAgICAgICAg
RGF0YSogZGF0YSA9IG1fcmVuZGVyUGFzc01hcC5nZXQocmVuZGVyUGFzcyk7CisgICAgICAgIEFT
U0VSVChkYXRhKTsKKworICAgICAgICBpZiAoIWRhdGEtPnNob3VsZEFsbG9jYXRlVGV4dHVyZSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIE1hcmsgdGhpcyB0ZXh0dXJlIGFz
IGluIHVzZSBmb3IgZHJhd2luZyB0byBpdC4KKyAgICAgICAgYm9vbCBhbHJlYWR5QWxsb2NhdGVk
VGV4dHVyZSA9IGRhdGEtPnRleHR1cmVJZDsKKyAgICAgICAgaWYgKCFhbHJlYWR5QWxsb2NhdGVk
VGV4dHVyZSkKKyAgICAgICAgICAgIGluVXNlQnl0ZXMgKz0gZGF0YS0+dGV4dHVyZVNpemUud2lk
dGgoKSAqIGRhdGEtPnRleHR1cmVTaXplLmhlaWdodCgpOworICAgICAgICBkYXRhLT50ZXh0dXJl
SXNJblVzZUZvckN1cnJlbnRGcmFtZSA9IHRydWU7CisKKyAgICAgICAgLy8gV2Ugb3B0aW1pc3Rp
Y2FsbHkgdHJ5IHRvIHNhdmUgZXZlcnkgdGV4dHVyZS4KKyAgICAgICAgZGF0YS0+c2hvdWxkU2F2
ZVRleHR1cmVGb3JOZXh0RnJhbWUgPSB0cnVlOworCisgICAgICAgIC8vIEFkZCBtZW1vcnkgbmVl
ZGVkIGZvciBiYWNrZ3JvdW5kIGZpbHRlcnMuIEZpbmQgdGhlIGxhcmdlc3QgYW1vdW50IG9mIHRl
eHR1cmUgbWVtb3J5IG5lZWRlZC4KKyAgICAgICAgc2l6ZV90IGJhY2tncm91bmRUZXh0dXJlSW5V
c2VCeXRlczsKKyAgICAgICAgZm9yIChDQ1F1YWRMaXN0Ojpjb25zdEJhY2tUb0Zyb250SXRlcmF0
b3IgaXQgPSBjb250cmlidXRpbmdRdWFkcy5iYWNrVG9Gcm9udEJlZ2luKCk7IGl0ICE9IGNvbnRy
aWJ1dGluZ1F1YWRzLmJhY2tUb0Zyb250RW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGNvbnN0
IENDRHJhd1F1YWQqIGNvbnRyaWJ1dGluZ1F1YWQgPSBpdC0+Z2V0KCk7CisgICAgICAgICAgICBp
ZiAoY29udHJpYnV0aW5nUXVhZC0+bWF0ZXJpYWwoKSAhPSBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNz
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29uc3QgQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQqIGNvbnRyaWJ1dGluZ1Bhc3NRdWFkID0gY29udHJpYnV0aW5nUXVhZC0+dG9S
ZW5kZXJQYXNzRHJhd1F1YWQoKTsKKyAgICAgICAgICAgIGlmIChjb250cmlidXRpbmdQYXNzUXVh
ZC0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIERhdGEqIGNvbnRyaWJ1dGluZ0FsbG9jYXRpb24gPSBtX3JlbmRl
clBhc3NNYXAuZ2V0KGNvbnRyaWJ1dGluZ1Bhc3NRdWFkLT5yZW5kZXJQYXNzKCkpOworICAgICAg
ICAgICAgaWYgKCFjb250cmlidXRpbmdBbGxvY2F0aW9uLT5zaG91bGRBbGxvY2F0ZVRleHR1cmUp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHNpemVfdCBiYWNrZ3Jv
dW5kQnl0ZXMgPSBjb250cmlidXRpbmdBbGxvY2F0aW9uLT50ZXh0dXJlU2l6ZS53aWR0aCgpICog
Y29udHJpYnV0aW5nQWxsb2NhdGlvbi0+dGV4dHVyZVNpemUuaGVpZ2h0KCk7CisgICAgICAgICAg
ICBpZiAoYmFja2dyb3VuZEJ5dGVzID4gYmFja2dyb3VuZFRleHR1cmVJblVzZUJ5dGVzKQorICAg
ICAgICAgICAgICAgIGJhY2tncm91bmRUZXh0dXJlSW5Vc2VCeXRlcyA9IGJhY2tncm91bmRCeXRl
czsKKyAgICAgICAgfQorICAgICAgICBpblVzZUJ5dGVzICs9IGJhY2tncm91bmRUZXh0dXJlSW5V
c2VCeXRlczsKKworICAgICAgICBSZW5kZXJQYXNzQWxsb2NhdGlvbkxpc3Q6OmNvbnN0X2l0ZXJh
dG9yIGRyb3BJdGVyYXRvciA9IG1fa25vd25SZW5kZXJQYXNzZXMuYmVnaW4oKTsKKworICAgICAg
ICAvLyBEcm9wIGNhY2hlZCB0ZXh0dXJlcyBmcm9tIHRoaXMgZnJhbWUgdW50aWwgd2UncmUgYmVs
b3cgdGhlIG1lbW9yeSBsaW1pdC4KKyAgICAgICAgZm9yICg7IGluVXNlQnl0ZXMgPiBtZW1vcnlM
aW1pdEJ5dGVzICYmICpkcm9wSXRlcmF0b3IgIT0gcmVuZGVyUGFzczsgKytkcm9wSXRlcmF0b3Ip
IHsKKyAgICAgICAgICAgIERhdGEqIGFscmVhZHlEcmF3bkFsbG9jYXRpb24gPSBtX3JlbmRlclBh
c3NNYXAuZ2V0KCpkcm9wSXRlcmF0b3IpOworICAgICAgICAgICAgaWYgKCFhbHJlYWR5RHJhd25B
bGxvY2F0aW9uLT50ZXh0dXJlSXNJblVzZUZvckN1cnJlbnRGcmFtZSAmJiBhbHJlYWR5RHJhd25B
bGxvY2F0aW9uLT5zaG91bGRTYXZlVGV4dHVyZUZvck5leHRGcmFtZSkgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChhbHJlYWR5RHJhd25BbGxvY2F0aW9uLT50ZXh0dXJlU2l6ZS53aWR0aCgpICYm
IGFscmVhZHlEcmF3bkFsbG9jYXRpb24tPnRleHR1cmVTaXplLmhlaWdodCgpKTsKKyAgICAgICAg
ICAgICAgICBpblVzZUJ5dGVzIC09IGFscmVhZHlEcmF3bkFsbG9jYXRpb24tPnRleHR1cmVTaXpl
LndpZHRoKCkgKiBhbHJlYWR5RHJhd25BbGxvY2F0aW9uLT50ZXh0dXJlU2l6ZS5oZWlnaHQoKTsK
KyAgICAgICAgICAgICAgICBhbHJlYWR5RHJhd25BbGxvY2F0aW9uLT5zaG91bGRTYXZlVGV4dHVy
ZUZvck5leHRGcmFtZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgLy8gU2tpcCB0byBqdXN0IHBhc3QgdGhlIHRleHR1cmUgY3VycmVudGx5IGJlaW5nIGRyYXdu
LgorICAgICAgICBkcm9wSXRlcmF0b3IgPSBtX2tub3duUmVuZGVyUGFzc2VzLmZpbmQocmVuZGVy
UGFzcyk7CisgICAgICAgIEFTU0VSVChkcm9wSXRlcmF0b3IgIT0gbV9rbm93blJlbmRlclBhc3Nl
cy5lbmQoKSk7CisgICAgICAgICsrZHJvcEl0ZXJhdG9yOworCisgICAgICAgIC8vIERyb3AgY2Fj
aGVkIHRleHR1cmVzIGZyb20gdGhlIHByZXZpb3VzIGZyYW1lIHVudGlsIHdlJ3JlIGJlbG93IHRo
ZSBtZW1vcnkgbGltaXQuCisgICAgICAgIGZvciAoOyBpblVzZUJ5dGVzID4gbWVtb3J5TGltaXRC
eXRlcyAmJiBkcm9wSXRlcmF0b3IgIT0gbV9rbm93blJlbmRlclBhc3Nlcy5lbmQoKTsgKytkcm9w
SXRlcmF0b3IpIHsKKyAgICAgICAgICAgIERhdGEqIGNoZWNrRGF0YSA9IG1fcmVuZGVyUGFzc01h
cC5nZXQoKmRyb3BJdGVyYXRvcik7CisgICAgICAgICAgICBpZiAoIWNoZWNrRGF0YS0+dGV4dHVy
ZUlzSW5Vc2VGb3JDdXJyZW50RnJhbWUgJiYgY2hlY2tEYXRhLT50ZXh0dXJlSWQpIHsKKyAgICAg
ICAgICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUoY2hlY2tEYXRhLT50ZXh0dXJlSWQp
OworICAgICAgICAgICAgICAgIGNoZWNrRGF0YS0+dGV4dHVyZUlkID0gMDsKKworICAgICAgICAg
ICAgICAgIEFTU0VSVChjaGVja0RhdGEtPnRleHR1cmVTaXplLndpZHRoKCkgJiYgY2hlY2tEYXRh
LT50ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgaW5Vc2VCeXRlcyAtPSBj
aGVja0RhdGEtPnRleHR1cmVTaXplLndpZHRoKCkgKiBjaGVja0RhdGEtPnRleHR1cmVTaXplLmhl
aWdodCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBiYWNrZ3JvdW5kIGZpbHRlcnMgZnJvbSB0aGUgbWVtb3J5IGluIHVzZS4gV2UgZG9uJ3Qgd2Fu
dCB0aGVtIHRvIGNhdXNlIHVzIHRvIHNraXAgZHJhd2luZyBhIFJlbmRlclBhc3MuCisgICAgICAg
IGluVXNlQnl0ZXMgLT0gYmFja2dyb3VuZFRleHR1cmVJblVzZUJ5dGVzOworCisgICAgICAgIC8v
IENvbXBsZXRlbHkgc2tpcCBkcmF3aW5nIHBhc3NlcyB3ZSd2ZSBhbHJlYWR5IGRyYXduIHVudGls
IHdlJ3JlIGJlbG93IHRoZSBtZW1vcnkgbGltaXQuCisgICAgICAgIGRyb3BJdGVyYXRvciA9IG1f
a25vd25SZW5kZXJQYXNzZXMuYmVnaW4oKTsKKworICAgICAgICBmb3IgKDsgaW5Vc2VCeXRlcyA+
IG1lbW9yeUxpbWl0Qnl0ZXMgJiYgKmRyb3BJdGVyYXRvciAhPSByZW5kZXJQYXNzOyArK2Ryb3BJ
dGVyYXRvcikgeworICAgICAgICAgICAgRGF0YSogY2hlY2tEYXRhID0gbV9yZW5kZXJQYXNzTWFw
LmdldCgqZHJvcEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChjaGVja0RhdGEtPnRleHR1cmVJ
c0luVXNlRm9yQ3VycmVudEZyYW1lICYmIGNoZWNrRGF0YS0+c2hvdWxkQWxsb2NhdGVUZXh0dXJl
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNoZWNrRGF0YS0+dGV4dHVyZVNpemUud2lkdGgo
KSAmJiBjaGVja0RhdGEtPnRleHR1cmVTaXplLmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBp
blVzZUJ5dGVzIC09IGNoZWNrRGF0YS0+dGV4dHVyZVNpemUud2lkdGgoKSAqIGNoZWNrRGF0YS0+
dGV4dHVyZVNpemUuaGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgY2hlY2tEYXRhLT5zaG91bGRB
bGxvY2F0ZVRleHR1cmUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFNraXAgZHJhd2luZyB0aGlzIHBhc3MgaWYgd2Ugc3RpbGwgZG9uJ3QgaGF2ZSBtZW1v
cnkgYXZhaWxhYmxlLgorICAgICAgICBpZiAoaW5Vc2VCeXRlcyA+IG1lbW9yeUxpbWl0Qnl0ZXMp
IHsKKyAgICAgICAgICAgIEFTU0VSVChjaGVja0RhdGEtPnRleHR1cmVTaXplLndpZHRoKCkgJiYg
Y2hlY2tEYXRhLT50ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICBpblVzZUJ5dGVz
IC09IGRhdGEtPnRleHR1cmVTaXplLndpZHRoKCkgKiBkYXRhLT50ZXh0dXJlU2l6ZS5oZWlnaHQo
KTsKKyAgICAgICAgICAgIGRhdGEtPnNob3VsZEFsbG9jYXRlVGV4dHVyZSA9IGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgZm9yIChDQ1F1YWRMaXN0Ojpjb25zdEJhY2tUb0Zyb250SXRlcmF0
b3IgaXQgPSBjb250cmlidXRpbmdRdWFkcy5iYWNrVG9Gcm9udEJlZ2luKCk7IGl0ICE9IGNvbnRy
aWJ1dGluZ1F1YWRzLmJhY2tUb0Zyb250RW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGNvbnN0
IENDRHJhd1F1YWQqIGNvbnRyaWJ1dGluZ1F1YWQgPSBpdC0+Z2V0KCk7CisgICAgICAgICAgICBp
ZiAoY29udHJpYnV0aW5nUXVhZC0+bWF0ZXJpYWwoKSAhPSBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNz
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBUaGUgcGFzcyBo
YXMgYmVlbiBkcmF3biB0byBpdHMgdGFyZ2V0LCBzbyBkb2VzIG5vdCBuZWVkIHRvIGJlIGtlcHQg
aW4gbWVtb3J5IGFueW1vcmUuCisgICAgICAgICAgICBEYXRhKiBjb250cmlidXRpbmdBbGxvY2F0
aW9uID0gbV9yZW5kZXJQYXNzTWFwLmdldChjb250cmlidXRpbmdRdWFkLT50b1JlbmRlclBhc3NE
cmF3UXVhZCgpLT5yZW5kZXJQYXNzKCkpOworICAgICAgICAgICAgY29udHJpYnV0aW5nQWxsb2Nh
dGlvbi0+dGV4dHVyZUlzSW5Vc2VGb3JDdXJyZW50RnJhbWUgPSBmYWxzZTsKKworICAgICAgICAg
ICAgLy8gRGVjaWRlIGlmIHdlIHNob3VsZCBhbGxvdyBpdHMgYmFja2dyb3VuZCBmaWx0ZXJzIHRv
IGJlIHVzZWQuCisgICAgICAgICAgICBzaXplX3QgYmFja2dyb3VuZFRleHR1cmVOZWVkZWRCeXRl
cyA9IGNvbnRyaWJ1dGluZ0FsbG9jYXRpb24tPnRleHR1cmVTaXplLndpZHRoKCkgKiBjb250cmli
dXRpbmdBbGxvY2F0aW9uLT50ZXh0dXJlU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgICAgIHNpemVf
dCBhdmFpbGFibGVNZW1vcnkgPSBtZW1vcnlMaW1pdEJ5dGVzIC0gaW5Vc2VCeXRlczsKKyAgICAg
ICAgICAgIGNvbnRyaWJ1dGluZ0FsbG9jYXRpb24tPnNob3VsZEFsbG9jYXRlQmFja2dyb3VuZFRl
eHR1cmUgPSBiYWNrZ3JvdW5kVGV4dHVyZU5lZWRlZEJ5dGVzIDw9IGF2YWlsYWJsZU1lbW9yeTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9y
OjpyZW1vdmVBbGxvY2F0aW9uc05vdFNhdmVkRm9yTmV4dEZyYW1lKCkKK3sKKyAgICBWZWN0b3I8
Y29uc3QgQ0NSZW5kZXJQYXNzKj4gdG9SZW1vdmU7CisKKyAgICBmb3IgKFJlbmRlclBhc3NBbGxv
Y2F0aW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2tub3duUmVuZGVyUGFzc2VzLmJlZ2lu
KCk7IGl0ICE9IG1fa25vd25SZW5kZXJQYXNzZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgRGF0
YSogYWxsb2NhdGlvbiA9IG1fcmVuZGVyUGFzc01hcC5nZXQoKml0KTsKKyAgICAgICAgaWYgKGFs
bG9jYXRpb24tPnNob3VsZFNhdmVUZXh0dXJlRm9yTmV4dEZyYW1lKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT50ZXh0dXJlSWQpOworICAgICAg
ICB0b1JlbW92ZS5hcHBlbmQoKml0KTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHRvUmVtb3ZlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IENDUmVuZGVyUGFzcyog
cmVuZGVyUGFzcyA9IHRvUmVtb3ZlW2ldOworICAgICAgICBtX2tub3duUmVuZGVyUGFzc2VzLnJl
bW92ZShyZW5kZXJQYXNzKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFwLnJlbW92ZShyZW5kZXJQ
YXNzKTsKKyAgICB9Cit9CisKK2Jvb2wgQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcjo6aGFz
Q2FjaGVkVGV4dHVyZShjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpIGNvbnN0Cit7Cisg
ICAgRGF0YSogYWxsb2NhdGlvbiA9IG1fcmVuZGVyUGFzc01hcC5nZXQocmVuZGVyUGFzcyk7Cisg
ICAgQVNTRVJUKGFsbG9jYXRpb24pOworCisgICAgaWYgKCFhbGxvY2F0aW9uLT50ZXh0dXJlSWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChhbGxvY2F0aW9uLT50ZXh0dXJl
U2l6ZSA9PSByZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKS5zaXplKCkpOworICAg
IHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NU
ZXh0dXJlQWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk0NzlkNjMxMTgzNzBmNTgwZGUzMjJjNmRk
NGIzNTFiYWM2NjQzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3IuaApAQCAt
MCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9y
X2gKKyNkZWZpbmUgQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcl9oCisKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJjYy9D
Q1JlbmRlclBhc3MuaCIgLy8gRm9yIENDUmVuZGVyUGFzc0xpc3QuCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yKTsKKworICAgIHN0cnVjdCBE
YXRhIHsKKyAgICAgICAgYm9vbCBzaG91bGRBbGxvY2F0ZVRleHR1cmU7CisgICAgICAgIGJvb2wg
c2hvdWxkU2F2ZVRleHR1cmVGb3JOZXh0RnJhbWU7CisgICAgICAgIGJvb2wgdGV4dHVyZUlzSW5V
c2VGb3JDdXJyZW50RnJhbWU7CisKKyAgICAgICAgYm9vbCBzaG91bGRBbGxvY2F0ZUJhY2tncm91
bmRUZXh0dXJlOworCisgICAgICAgIEludFNpemUgdGV4dHVyZVNpemU7CisgICAgICAgIGludCB0
ZXh0dXJlSWQ7CisKKyAgICAgICAgRGF0YSgpCisgICAgICAgICAgICA6IHNob3VsZEFsbG9jYXRl
VGV4dHVyZShmYWxzZSkKKyAgICAgICAgICAgICwgc2hvdWxkU2F2ZVRleHR1cmVGb3JOZXh0RnJh
bWUoZmFsc2UpCisgICAgICAgICAgICAsIHRleHR1cmVJc0luVXNlRm9yQ3VycmVudEZyYW1lKGZh
bHNlKQorICAgICAgICAgICAgLCBzaG91bGRBbGxvY2F0ZUJhY2tncm91bmRUZXh0dXJlKGZhbHNl
KQorICAgICAgICAgICAgLCB0ZXh0dXJlSWQoMCkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
fTsKKworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8Y29uc3QgQ0NSZW5kZXJQYXNzKj4gUmVuZGVy
UGFzc0FsbG9jYXRpb25MaXN0OworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDQ1JlbmRlclBh
c3MqLCBPd25QdHI8RGF0YT4gPiBSZW5kZXJQYXNzQWxsb2NhdGlvbk1hcDsKKworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3I+IGNyZWF0
ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFB0
cihuZXcgQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcihjb250ZXh0KSk7IH0KKyAgICB+Q0NS
ZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcigpOworCisgICAgdm9pZCBkZWNpZGVBbGxvY2F0aW9u
c0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBhc3Nlc0luRHJhd09yZGVy
LCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcyk7CisgICAgdm9pZCByZW1vdmVBbGxvY2F0aW9uc05v
dFNhdmVkRm9yTmV4dEZyYW1lKCk7CisKKyAgICB1bnNpZ25lZCBiZWdpbkRyYXdpbmdUb1JlbmRl
clBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29uc3Q7CisgICAgdm9pZCBlbmREcmF3aW5nVG9S
ZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopIGNvbnN0OworCisgICAgdW5zaWduZWQgYmVn
aW5EcmF3aW5nQmFja2dyb3VuZEZvclJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29u
c3Q7CisgICAgdW5zaWduZWQgZW5kRHJhd2luZ0JhY2tncm91bmRGb3JSZW5kZXJQYXNzKGNvbnN0
IENDUmVuZGVyUGFzcyopIGNvbnN0OworICAgIHVuc2lnbmVkIGJlZ2luRHJhd2luZ0NvbnRlbnRz
RnJvbVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29uc3Q7CisgICAgdW5zaWduZWQg
ZW5kRHJhd2luZ0NvbnRlbnRzRnJvbVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29u
c3Q7CisKKyAgICBib29sIGhhc0NhY2hlZFRleHR1cmUoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRv
cihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisKKyAgICB2b2lkIGNvdW50U2F2ZWRB
bGxvY2F0aW9ucyhzaXplX3QmIGluVXNlQnl0ZXMpOworICAgIHZvaWQgYWRkQWxsb2NhdGlvbklu
dGVudGlvbnNGb3JDdXJyZW50RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFz
c2VzSW5EcmF3T3JkZXIsIHNpemVfdCBpblVzZUJ5dGVzKTsKKworICAgIFJlbmRlclBhc3NBbGxv
Y2F0aW9uTGlzdCBtX2tub3duUmVuZGVyUGFzc2VzOworICAgIFJlbmRlclBhc3NBbGxvY2F0aW9u
TWFwIG1fcmVuZGVyUGFzc01hcDsKKworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9j
b250ZXh0OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRleCA5YzkzOGE5
OTBhYmM0ZDliNTU1NDY4ZTcwODZkN2I1MzYxYjYwNTE5Li45MjU2MzdhMzg4YTM4NzNmZDUyYjlh
NTQ3YmZiOTA5Yzk2MzEzNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCkBAIC0yOSwxMiArMjksMTIg
QEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ1JlbmRlclBhc3M7CiBjbGFzcyBUZXh0
dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4dHVyZUNvcGllcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2Vy
OwpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVj
dGlvbk1hdHJpeDsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9CiAKKyAgICAv
LyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgYSBuby1vcCBpbiBhIG5lc3RlZCBjb21wb3NpdG9yIHRo
YXQgZG9lcyBub3QgcmVuZGVyIGl0cyBwYXNzZXMgZGlyZWN0bHkuCisgICAgdmlydHVhbCB2b2lk
IGRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xp
c3QmLCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiZWdp
bkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIGRlZmF1bHRSZW5kZXJQYXNzKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNv
bnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50UGFzcykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSA9IDA7CkBAIC04OSw2ICs5MSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9y
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBzaXplX3QgY3VycmVudENv
bnRlbnRzTWVtb3J5VXNlQnl0ZXMoKSBjb25zdCA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlz
Q29udGV4dExvc3QoKSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148150</attachid>
            <date>2012-06-18 12:37:33 -0700</date>
            <delta_ts>2012-06-19 12:40:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88924-20120618153733.patch</filename>
            <type>text/plain</type>
            <size>36482</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTExYzBhMTQ1ZWI0NzA4
OTJhMTg1ZGY3YzIzOWJlY2QzNWYzYjI2NS4uZjdiYWQyYTY5YWQzMTQ2ZTgyZWNiZDkzOTU1Yzhk
NjNkNTFlYTU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTEyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IGFuIGFsbG9jYXRpb24gc3RlcCBmb3IgQ0NSZW5kZXJlciBiZWZvcmUgZHJhd2luZyBhIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YWxsb2NhdGVSZW5kZXJQYXNzZXMpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmJlZ2luRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJv
bWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpk
cmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlcmVyLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKwogMjAxMi0wNi0xOCAgUm9iZXJ0IEty
b2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVG91Y2ggZXZlbnRzIHdp
dGggZGVmYXVsdCBhY3Rpb25zIHNob3VsZCBiZSBoYW5kbGVkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IGUxODM0NTcyNzM3YjA2NThkNjY3NDlmYTMwYzRjNjU5MWE5NWFmMjcuLmJiNzY4MDUzNTc5NThk
MDAzMTIzYTA3MGQxYmVmOTZhYjI3OGFhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3NDMsNiAr
Mzc0Myw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvci5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzc1RleHR1cmVBbGxvY2F0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwJywK
QEAgLTM3NTEsNiArMzc1Myw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1
cmUuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
b3BlZFRleHR1cmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMTYxNzI5Yzk1OTNkOTM1YzQw
MmQzZTM5N2UyOGM5ZWEwNzY4ODBiNC4uNDM2ZjJkY2UyN2Y5ZGExYWRlYTI2ZWMwMGQ3NjIxZjRj
ZmVkZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00Mjks
NiArNDI5LDE1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhclJlbmRlclBhc3Mo
Y29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBjb25zCiAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogfQog
CisKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlv
bnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXNJbkRyYXdPcmRl
ciwgc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCit7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGxpbmUgd2hlbiB3ZSBhbGxvY2F0ZSBSZW5kZXJQYXNzIHRleHR1cmVzIG91cnNlbGYuCisgICAg
bV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRC
eXRlcyk7CisKKyAgICBtX3JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yLT5kZWNpZGVBbGxvY2F0
aW9uc0ZvckZyYW1lKHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLCB2aWV3cG9ydFNpemUoKSwgbWVt
b3J5TGltaXRCeXRlcyk7Cit9CisKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRy
YXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKQogewogICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIGZyYW1lYnVmZmVyIGlzIGF1dG9tYXRpY2FsbHkgcmVj
cmVhdGVkIG9uIGZpcnN0IHVzZQpAQCAtNDM3LDExICs0NDYsNiBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVu
ZGVyUGFzcwogICAgIG1fZGVmYXVsdFJlbmRlclBhc3MgPSByb290UmVuZGVyUGFzczsKICAgICBB
U1NFUlQobV9kZWZhdWx0UmVuZGVyUGFzcyk7CiAKLSAgICBzaXplX3QgY29udGVudHNNZW1vcnlV
c2VCeXRlcyA9IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKTsKLSAgICBzaXplX3QgbWF4TGltaXQgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0
ZXModmlld3BvcnRTaXplKCkpOwotICAgIHNpemVfdCBuZXdMaW1pdCA9IChtYXhMaW1pdCA+IGNv
bnRlbnRzTWVtb3J5VXNlQnl0ZXMpID8gbWF4TGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVz
IDogMDsKLSAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhu
ZXdMaW1pdCk7Ci0KICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTExOTEsNiArMTE5NSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpmaW5pc2hEcmF3aW5nRnJhbWUoKQogICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT5zZXRQcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0KTsKICAgICBtX2ltcGxUZXh0dXJl
TWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7CiAgICAgbV9pbXBs
VGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX2ltcGxUZXh0dXJlQWxsb2Nh
dG9yLmdldCgpKTsKKworICAgIG1fcmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3ItPnJlbW92ZUFs
bG9jYXRpb25zTm90U2F2ZWRGb3JOZXh0RnJhbWUoKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRvR0xNYXRyaXgoZmxvYXQqIGZsYXR0ZW5lZCwgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG0pCkBAIC0xNTIxLDYgKzE1MjcsNyBAQCBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgICAgICBtX2NvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7CiAgICAgICAgIG1f
aW1wbFRleHR1cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOwogICAg
IH0KKyAgICBtX3JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yID0gQ0NSZW5kZXJQYXNzVGV4dHVy
ZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYzM2OWRkMmE3NzBlZWQw
OGUxNjllNGVhMDI0MDc5OTg1ZDIwYjM5Ni4uNmQyODk5NThlNWIwOTRiYmZhYmVhODkyMzYyYTZj
NTFiYjNiOTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAjaW5jbHVkZSAiVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgi
CisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUg
ImNjL0NDUmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC03Niw2
ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEZsb2F0UXVhZCYgc2hhcmVkR2VvbWV0cnlR
dWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeVF1YWQ7IH0KIAorICAgIHZpcnR1
YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRl
clBhc3NMaXN0Jiwgc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIGRlZmF1bHRSZW5k
ZXJQYXNzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlbmRlclBhc3MoY29uc3Qg
Q0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSBPVkVSUklERTsK
QEAgLTEwMiw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9y
KiBpbXBsVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1wbFRl
eHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9CiAKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50
Q29udGVudHNNZW1vcnlVc2VCeXRlcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsgfQorCiAgICAgdmly
dHVhbCB2b2lkIHNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCBib29sIGlzQ29udGV4dExvc3QoKSBPVkVSUklERTsKQEAgLTI1Myw2ICsyNTcs
OCBAQCBwcml2YXRlOgogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yOwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0
b3I+IG1faW1wbFRleHR1cmVBbGxvY2F0b3I7CiAKKyAgICBPd25QdHI8Q0NSZW5kZXJQYXNzVGV4
dHVyZUFsbG9jYXRvcj4gbV9yZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcjsKKwogICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwogCiAgICAgY29uc3QgQ0NSZW5kZXJQYXNz
KiBtX2RlZmF1bHRSZW5kZXJQYXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAppbmRleCA0OTRmOTA4NWJmNjA2MWYxYTk3MjVhM2I3YTQ4NjcyMzE1NWE1YmI1Li5lNGZi
NjBhZTljZjVjZTgxMWU5NmY3NzMzNDY2ZjcyYzY5NTdkMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNDgzLDYgKzQ4MywxMiBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKICAgICAvLyBU
aGlzIHZhbHVlIGlzIGN1cnJlbnRseSBpbmFjY2Vzc2libGUgYmVjYXVzZSBpdCBpcyB1cCBpbiBD
aHJvbWl1bSdzCiAgICAgLy8gUmVuZGVyV2lkZ2V0LgogCisgICAgLy8gRklYTUU6IEdldCB0aGlz
IG1lbW9yeSBsaW1pdCBmcm9tIEdQVSBNZW1vcnkgTWFuYWdlcgorICAgIHNpemVfdCBjb250ZW50
c01lbW9yeVVzZUJ5dGVzID0gbGF5ZXJSZW5kZXJlcigpLT5jdXJyZW50Q29udGVudHNNZW1vcnlV
c2VCeXRlcygpOworICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6Omhp
Z2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKTsKKyAgICBzaXplX3QgbGltaXRCeXRlcyA9IG1h
eExpbWl0Qnl0ZXMgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzID4gMHUgPyBtYXhMaW1pdEJ5dGVz
IC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA6IDB1OworICAgIG1fbGF5ZXJSZW5kZXJlci0+ZGVj
aWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoZnJhbWUucmVuZGVyUGFzc2VzLCBsaW1p
dEJ5dGVzKTsKKwogICAgIC8vIFRoZSByb290IFJlbmRlclBhc3MgaXMgdGhlIGxhc3Qgb25lIHRv
IGJlIGRyYXduLgogICAgIENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBhc3MgPSBmcmFtZS5yZW5k
ZXJQYXNzZXMubGFzdCgpLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzc1RleHR1cmVBbGxvY2F0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YzhkZGI3MjgwZjIxYzk0NmMx
MDViN2Q3OTc4NjFhM2Y0MWE5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9y
LmNwcApAQCAtMCwwICsxLDI5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgImNjL0NDUmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgImNj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NSZW5k
ZXJQYXNzVGV4dHVyZUFsbG9jYXRvcjo6Q0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcihQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRl
eHQpCit7CisgICAgQVNTRVJUKG1fY29udGV4dCk7Cit9CisKK0NDUmVuZGVyUGFzc1RleHR1cmVB
bGxvY2F0b3I6On5DQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yKCkKK3sKK30KKwordm9pZCBD
Q1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yOjpjb3VudFNhdmVkQWxsb2NhdGlvbnMoc2l6ZV90
JiBpblVzZUJ5dGVzKQoreworICAgIEFTU0VSVCghaW5Vc2VCeXRlcyk7CisKKyAgICBmb3IgKFJl
bmRlclBhc3NBbGxvY2F0aW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2tub3duUmVuZGVy
UGFzc2VzLmJlZ2luKCk7IGl0ICE9IG1fa25vd25SZW5kZXJQYXNzZXMuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA9IG1fcmVuZGVyUGFzc01hcC5nZXQoKml0
KTsKKworICAgICAgICBhbGxvY2F0aW9uLT5zaG91bGRBbGxvY2F0ZVRleHR1cmUgPSBmYWxzZTsK
KyAgICAgICAgYWxsb2NhdGlvbi0+c2hvdWxkU2F2ZVRleHR1cmVGb3JOZXh0RnJhbWUgPSBmYWxz
ZTsKKyAgICAgICAgYWxsb2NhdGlvbi0+dGV4dHVyZUlzSW5Vc2VGb3JDdXJyZW50RnJhbWUgPSBm
YWxzZTsKKyAgICAgICAgYWxsb2NhdGlvbi0+bnVtYmVyT2ZVc2VzT2ZUZXh0dXJlRm9yQ3VycmVu
dEZyYW1lID0gMDsKKyAgICAgICAgYWxsb2NhdGlvbi0+c2hvdWxkQWxsb2NhdGVCYWNrZ3JvdW5k
VGV4dHVyZSA9IGZhbHNlOworCisgICAgICAgIEFTU0VSVChhbGxvY2F0aW9uLT50ZXh0dXJlKTsK
KyAgICAgICAgQVNTRVJUKCFhbGxvY2F0aW9uLT50ZXh0dXJlLnNpemUoKS5pc0VtcHR5KCkpOwor
ICAgICAgICBpblVzZUJ5dGVzICs9IGFsbG9jYXRpb24tPnRleHR1cmUuYnl0ZXMoKTsKKyAgICB9
Cit9CisKK3ZvaWQgQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcjo6YWRkQWxsb2NhdGlvbklu
dGVudGlvbnNGb3JDdXJyZW50RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFz
c2VzSW5EcmF3T3JkZXIsIHNpemVfdCBpblVzZUJ5dGVzKQoreworICAgIC8vIFdlIGhhdmUgYSBs
aXN0IG9mIGtub3duIHBhc3Nlcy4gVGhlIG9uZXMgdGhhdCBhcmVuJ3QgaW4gdGhpcyBmcmFtZSBz
aG91bGQKKyAgICAvLyBiZSB0aGUgZmlyc3QgdG8gYmUgZHJvcHBlZCBzbyB3ZSBsZWF2ZSB0aGVt
IGF0IHRoZSBmcm9udCBvZiB0aGUgbGlzdCwgYW5kCisgICAgLy8gYXBwZW5kIChvciBtb3ZlKSBh
bnkgcGFzc2VzIGluIHRoZSBjdXJyZW50IGZyYW1lIG9udG8gdGhlIGVuZCBvZiB0aGUgbGlzdAor
ICAgIC8vIGluIGRyYXcgb3JkZXIuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5kZXJQ
YXNzZXNJbkRyYXdPcmRlci5zaXplKCk7ICsraSkgeworICAgICAgICBDQ1JlbmRlclBhc3MqIHJl
bmRlclBhc3MgPSByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS5nZXQoKTsKKworICAgICAgICBt
X2tub3duUmVuZGVyUGFzc2VzLnJlbW92ZShyZW5kZXJQYXNzKTsKKyAgICAgICAgbV9rbm93blJl
bmRlclBhc3Nlcy5hZGQocmVuZGVyUGFzcyk7CisKKyAgICAgICAgQWxsb2NhdGlvbiogYWxsb2Nh
dGlvbjsKKyAgICAgICAgaWYgKG1fcmVuZGVyUGFzc01hcC5jb250YWlucyhyZW5kZXJQYXNzKSkK
KyAgICAgICAgICAgIGFsbG9jYXRpb24gPSBtX3JlbmRlclBhc3NNYXAuZ2V0KHJlbmRlclBhc3Mp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIE93blB0cjxBbGxvY2F0aW9uPiBuZXdBbGxv
Y2F0aW9uID0gYWRvcHRQdHIobmV3IEFsbG9jYXRpb24obV9jb250ZXh0KSk7CisgICAgICAgICAg
ICBhbGxvY2F0aW9uID0gbmV3QWxsb2NhdGlvbi5nZXQoKTsKKyAgICAgICAgICAgIG1fcmVuZGVy
UGFzc01hcC5zZXQocmVuZGVyUGFzcywgbmV3QWxsb2NhdGlvbi5yZWxlYXNlKCkpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gRHJvcCBjYWNoZWQgdGV4dHVyZXMgZnJvbSB0aGUgcHJldmlvdXMg
ZnJhbWUgdGhhdCBhcmUgdGhlIHdyb25nIHNpemUuCisgICAgICAgIGlmIChhbGxvY2F0aW9uLT50
ZXh0dXJlICYmIGFsbG9jYXRpb24tPnRleHR1cmUuc2l6ZSgpICE9IHJlbmRlclBhc3MtPmZyYW1l
YnVmZmVyT3V0cHV0UmVjdCgpLnNpemUoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFhbGxvY2F0
aW9uLT50ZXh0dXJlLnNpemUoKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgaW5Vc2VCeXRlcyAt
PSBhbGxvY2F0aW9uLT50ZXh0dXJlLmJ5dGVzKCk7CisKKyAgICAgICAgICAgIGFsbG9jYXRpb24t
PnRleHR1cmUuY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgcmVuZGVyUGFzc1Vz
ZXNUZXh0dXJlID0gaSA8IHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLnNpemUoKSAtIDE7CisgICAg
ICAgIGFsbG9jYXRpb24tPnNob3VsZEFsbG9jYXRlVGV4dHVyZSA9IHJlbmRlclBhc3NVc2VzVGV4
dHVyZTsKKyAgICAgICAgYWxsb2NhdGlvbi0+dGV4dHVyZS5wcmVwYXJlKHJlbmRlclBhc3MtPmZy
YW1lYnVmZmVyT3V0cHV0UmVjdCgpLnNpemUoKSwgcmVuZGVyUGFzcy0+aGFzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSA6IEdyYXBoaWNzQ29udGV4dDNE
OjpSR0IpOworICAgIH0KK30KKworYm9vbCBDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yOjpi
YWNrZ3JvdW5kRmlsdGVyTWF4Qnl0ZXMoY29uc3QgQ0NRdWFkTGlzdCYgY29udHJpYnV0aW5nUXVh
ZHMsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSkKK3sKKyAgICBzaXplX3QgbWF4
Qnl0ZXMgPSAwdTsKKworICAgIGZvciAoQ0NRdWFkTGlzdDo6Y29uc3RCYWNrVG9Gcm9udEl0ZXJh
dG9yIGl0ID0gY29udHJpYnV0aW5nUXVhZHMuYmFja1RvRnJvbnRCZWdpbigpOyBpdCAhPSBjb250
cmlidXRpbmdRdWFkcy5iYWNrVG9Gcm9udEVuZCgpOyArK2l0KSB7CisgICAgICAgIGNvbnN0IEND
RHJhd1F1YWQqIGNvbnRyaWJ1dGluZ1F1YWQgPSBpdC0+Z2V0KCk7CisgICAgICAgIGlmIChjb250
cmlidXRpbmdRdWFkLT5tYXRlcmlhbCgpICE9IENDRHJhd1F1YWQ6OlJlbmRlclBhc3MpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIGNv
bnRyaWJ1dGluZ1Bhc3NRdWFkID0gY29udHJpYnV0aW5nUXVhZC0+dG9SZW5kZXJQYXNzRHJhd1F1
YWQoKTsKKyAgICAgICAgaWYgKGNvbnRyaWJ1dGluZ1Bhc3NRdWFkLT5iYWNrZ3JvdW5kRmlsdGVy
cygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEFsbG9jYXRp
b24qIGNvbnRyaWJ1dGluZ0FsbG9jYXRpb24gPSBtX3JlbmRlclBhc3NNYXAuZ2V0KGNvbnRyaWJ1
dGluZ1Bhc3NRdWFkLT5yZW5kZXJQYXNzKCkpOworICAgICAgICBpZiAoIWNvbnRyaWJ1dGluZ0Fs
bG9jYXRpb24tPnNob3VsZEFsbG9jYXRlVGV4dHVyZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIC8vIEJhY2tncm91bmQgdGV4dHVyZXMgdXNlIGEgcmVhZGJhY2sgYnVmZmVyIChh
dCBtb3N0IHRoZSBzaXplIG9mIHRoZSB2aWV3cG9ydCkKKyAgICAgICAgLy8gYW5kIGEgc2Vjb25k
IHRleHR1cmUgbWF0Y2hpbmcgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJpYnV0aW5nIFJlbmRlclBh
c3MuCisgICAgICAgIHNpemVfdCBieXRlcyA9IENDU2NvcGVkVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5
dGVzKGRldmljZVZpZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQikKKyAgICAgICAg
ICAgICAgICAgICAgICsgQ0NTY29wZWRUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMoY29udHJpYnV0
aW5nQWxsb2NhdGlvbi0+dGV4dHVyZS5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IpOwor
ICAgICAgICBpZiAoYnl0ZXMgPiBtYXhCeXRlcykKKyAgICAgICAgICAgIG1heEJ5dGVzID0gYnl0
ZXM7CisgICAgfQorCisgICAgcmV0dXJuIG1heEJ5dGVzOworfQorCit2b2lkIENDUmVuZGVyUGFz
c1RleHR1cmVBbGxvY2F0b3I6OmRlY2lkZUFsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5k
ZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIsIGNvbnN0IEludFNpemUmIGRldmlj
ZVZpZXdwb3J0U2l6ZSwgc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCit7CisgICAgc2l6ZV90IGlu
VXNlQnl0ZXMgPSAwOworCisgICAgY291bnRTYXZlZEFsbG9jYXRpb25zKGluVXNlQnl0ZXMpOwor
ICAgIGFkZEFsbG9jYXRpb25JbnRlbnRpb25zRm9yQ3VycmVudEZyYW1lKHJlbmRlclBhc3Nlc0lu
RHJhd09yZGVyLCBpblVzZUJ5dGVzKTsKKworICAgIC8vIFdhbGsgdGhlIHBhc3NlcyBpbiB0aGUg
c2FtZSBvcmRlciBhcyB0aGV5IHdpbGwgYmUgZHJhd24gdG8gZGV0ZXJtaW5lIG1lbW9yeSByZXF1
aXJlbWVudHMuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5kZXJQYXNzZXNJbkRyYXdP
cmRlci5zaXplKCk7ICsraSkgeworICAgICAgICBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MgPSBy
ZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS5nZXQoKTsKKyAgICAgICAgQWxsb2NhdGlvbiogYWxs
b2NhdGlvbiA9IG1fcmVuZGVyUGFzc01hcC5nZXQocmVuZGVyUGFzcyk7CisgICAgICAgIEFTU0VS
VChhbGxvY2F0aW9uKTsKKworICAgICAgICBpZiAoIWFsbG9jYXRpb24tPnNob3VsZEFsbG9jYXRl
VGV4dHVyZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIE1hcmsgdGhpcyB0
ZXh0dXJlIGFzIGluIHVzZSBmb3IgZHJhd2luZyB0byBpdC4KKyAgICAgICAgYm9vbCBhbHJlYWR5
QWxsb2NhdGVkQW5kQ291bnRlZFRleHR1cmUgPSBhbGxvY2F0aW9uLT50ZXh0dXJlOworICAgICAg
ICBpZiAoIWFscmVhZHlBbGxvY2F0ZWRBbmRDb3VudGVkVGV4dHVyZSkKKyAgICAgICAgICAgIGlu
VXNlQnl0ZXMgKz0gYWxsb2NhdGlvbi0+dGV4dHVyZS5tYXliZUJ5dGVzKCk7CisgICAgICAgIGFs
bG9jYXRpb24tPnRleHR1cmVJc0luVXNlRm9yQ3VycmVudEZyYW1lID0gdHJ1ZTsKKworICAgICAg
ICAvLyBXZSBvcHRpbWlzdGljYWxseSB0cnkgdG8gc2F2ZSBldmVyeSB0ZXh0dXJlLgorICAgICAg
ICBhbGxvY2F0aW9uLT5zaG91bGRTYXZlVGV4dHVyZUZvck5leHRGcmFtZSA9IHRydWU7CisKKyAg
ICAgICAgLy8gQWRkIG1lbW9yeSBuZWVkZWQgZm9yIGJhY2tncm91bmQgZmlsdGVycy4KKyAgICAg
ICAgc2l6ZV90IGJhY2tncm91bmRUZXh0dXJlTWF4Qnl0ZXMgPSBiYWNrZ3JvdW5kRmlsdGVyTWF4
Qnl0ZXMocmVuZGVyUGFzcy0+cXVhZExpc3QoKSwgZGV2aWNlVmlld3BvcnRTaXplKTsKKyAgICAg
ICAgaW5Vc2VCeXRlcyArPSBiYWNrZ3JvdW5kVGV4dHVyZU1heEJ5dGVzOworCisgICAgICAgIFJl
bmRlclBhc3NBbGxvY2F0aW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgZHJvcEl0ZXJhdG9yID0gbV9r
bm93blJlbmRlclBhc3Nlcy5iZWdpbigpOworCisgICAgICAgIC8vIERyb3AgY2FjaGVkIHRleHR1
cmVzIGZyb20gdGhpcyBmcmFtZSB1bnRpbCB3ZSdyZSBiZWxvdyB0aGUgbWVtb3J5IGxpbWl0Lgor
ICAgICAgICBmb3IgKDsgaW5Vc2VCeXRlcyA+IG1lbW9yeUxpbWl0Qnl0ZXMgJiYgKmRyb3BJdGVy
YXRvciAhPSByZW5kZXJQYXNzOyArK2Ryb3BJdGVyYXRvcikgeworICAgICAgICAgICAgQWxsb2Nh
dGlvbiogYWxyZWFkeURyYXduQWxsb2NhdGlvbiA9IG1fcmVuZGVyUGFzc01hcC5nZXQoKmRyb3BJ
dGVyYXRvcik7CisgICAgICAgICAgICBpZiAoIWFscmVhZHlEcmF3bkFsbG9jYXRpb24tPnRleHR1
cmVJc0luVXNlRm9yQ3VycmVudEZyYW1lICYmIGFscmVhZHlEcmF3bkFsbG9jYXRpb24tPnNob3Vs
ZFNhdmVUZXh0dXJlRm9yTmV4dEZyYW1lKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFhbHJl
YWR5RHJhd25BbGxvY2F0aW9uLT50ZXh0dXJlLnNpemUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAg
ICAgICBpblVzZUJ5dGVzIC09IGFscmVhZHlEcmF3bkFsbG9jYXRpb24tPnRleHR1cmUubWF5YmVC
eXRlcygpOworICAgICAgICAgICAgICAgIGFscmVhZHlEcmF3bkFsbG9jYXRpb24tPnNob3VsZFNh
dmVUZXh0dXJlRm9yTmV4dEZyYW1lID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBTa2lwIHRvIGp1c3QgcGFzdCB0aGUgdGV4dHVyZSBjdXJyZW50bHkgYmVp
bmcgZHJhd24uCisgICAgICAgIGRyb3BJdGVyYXRvciA9IG1fa25vd25SZW5kZXJQYXNzZXMuZmlu
ZChyZW5kZXJQYXNzKTsKKyAgICAgICAgQVNTRVJUKGRyb3BJdGVyYXRvciAhPSBtX2tub3duUmVu
ZGVyUGFzc2VzLmVuZCgpKTsKKyAgICAgICAgKytkcm9wSXRlcmF0b3I7CisKKyAgICAgICAgLy8g
RHJvcCBjYWNoZWQgdGV4dHVyZXMgZnJvbSB0aGUgcHJldmlvdXMgZnJhbWUgdW50aWwgd2UncmUg
YmVsb3cgdGhlIG1lbW9yeSBsaW1pdC4KKyAgICAgICAgZm9yICg7IGluVXNlQnl0ZXMgPiBtZW1v
cnlMaW1pdEJ5dGVzICYmIGRyb3BJdGVyYXRvciAhPSBtX2tub3duUmVuZGVyUGFzc2VzLmVuZCgp
OyArK2Ryb3BJdGVyYXRvcikgeworICAgICAgICAgICAgQWxsb2NhdGlvbiogbm90WWV0RHJhd25B
bGxvY2F0aW9uID0gbV9yZW5kZXJQYXNzTWFwLmdldCgqZHJvcEl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghbm90WWV0RHJhd25BbGxvY2F0aW9uLT50ZXh0dXJlSXNJblVzZUZvckN1cnJl
bnRGcmFtZSk7CisgICAgICAgICAgICBpZiAobm90WWV0RHJhd25BbGxvY2F0aW9uLT50ZXh0dXJl
KSB7CisgICAgICAgICAgICAgICAgaW5Vc2VCeXRlcyAtPSBub3RZZXREcmF3bkFsbG9jYXRpb24t
PnRleHR1cmUubWF5YmVCeXRlcygpOworICAgICAgICAgICAgICAgIG5vdFlldERyYXduQWxsb2Nh
dGlvbi0+dGV4dHVyZS5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgLy8gUmVtb3ZlIHRoZSBiYWNrZ3JvdW5kIGZpbHRlcnMgZnJvbSB0aGUgbWVtb3J5IGluIHVz
ZS4gV2UgZG9uJ3Qgd2FudCB0aGVtIHRvIGNhdXNlIHVzIHRvIHNraXAgZHJhd2luZyBhIFJlbmRl
clBhc3MuCisgICAgICAgIGluVXNlQnl0ZXMgLT0gYmFja2dyb3VuZFRleHR1cmVNYXhCeXRlczsK
KworICAgICAgICAvLyBDb21wbGV0ZWx5IHNraXAgZHJhd2luZyBwYXNzZXMgd2UndmUgYWxyZWFk
eSBkcmF3biB1bnRpbCB3ZSdyZSBiZWxvdyB0aGUgbWVtb3J5IGxpbWl0LgorICAgICAgICBmb3Ig
KGRyb3BJdGVyYXRvciA9IG1fa25vd25SZW5kZXJQYXNzZXMuYmVnaW4oKTsgaW5Vc2VCeXRlcyA+
IG1lbW9yeUxpbWl0Qnl0ZXMgJiYgKmRyb3BJdGVyYXRvciAhPSByZW5kZXJQYXNzOyArK2Ryb3BJ
dGVyYXRvcikgeworICAgICAgICAgICAgQWxsb2NhdGlvbiogYWxyZWFkeURyYXduQWxsb2NhdGlv
biA9IG1fcmVuZGVyUGFzc01hcC5nZXQoKmRyb3BJdGVyYXRvcik7CisgICAgICAgICAgICBpZiAo
YWxyZWFkeURyYXduQWxsb2NhdGlvbi0+dGV4dHVyZUlzSW5Vc2VGb3JDdXJyZW50RnJhbWUgJiYg
YWxyZWFkeURyYXduQWxsb2NhdGlvbi0+c2hvdWxkQWxsb2NhdGVUZXh0dXJlKSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFhbHJlYWR5RHJhd25BbGxvY2F0aW9uLT50ZXh0dXJlLnNpemUuaXNF
bXB0eSgpKTsKKyAgICAgICAgICAgICAgICBpblVzZUJ5dGVzIC09IGFscmVhZHlEcmF3bkFsbG9j
YXRpb24tPnRleHR1cmUubWF5YmVCeXRlcygpOworICAgICAgICAgICAgICAgIGFscmVhZHlEcmF3
bkFsbG9jYXRpb24tPnNob3VsZEFsbG9jYXRlVGV4dHVyZSA9IGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgLy8gU2tpcCBkcmF3aW5nIHRoaXMgcGFzcyBpZiB3ZSBz
dGlsbCBkb24ndCBoYXZlIG1lbW9yeSBhdmFpbGFibGUuCisgICAgICAgIGlmIChpblVzZUJ5dGVz
ID4gbWVtb3J5TGltaXRCeXRlcykgeworICAgICAgICAgICAgQVNTRVJUKGNoZWNrQWxsb2NhdGlv
bi0+dGV4dHVyZVNpemUud2lkdGgoKSAmJiBjaGVja0FsbG9jYXRpb24tPnRleHR1cmVTaXplLmhl
aWdodCgpKTsKKyAgICAgICAgICAgIGluVXNlQnl0ZXMgLT0gYWxsb2NhdGlvbi0+dGV4dHVyZS5t
YXliZUJ5dGVzKCk7CisgICAgICAgICAgICBhbGxvY2F0aW9uLT5zaG91bGRBbGxvY2F0ZVRleHR1
cmUgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IENDUXVhZExpc3QmIGNvbnRy
aWJ1dGluZ1F1YWRzID0gcmVuZGVyUGFzcy0+cXVhZExpc3QoKTsKKyAgICAgICAgZm9yIChDQ1F1
YWRMaXN0Ojpjb25zdEJhY2tUb0Zyb250SXRlcmF0b3IgaXQgPSBjb250cmlidXRpbmdRdWFkcy5i
YWNrVG9Gcm9udEJlZ2luKCk7IGl0ICE9IGNvbnRyaWJ1dGluZ1F1YWRzLmJhY2tUb0Zyb250RW5k
KCk7ICsraXQpIHsKKyAgICAgICAgICAgIGNvbnN0IENDRHJhd1F1YWQqIGNvbnRyaWJ1dGluZ1F1
YWQgPSBpdC0+Z2V0KCk7CisgICAgICAgICAgICBpZiAoY29udHJpYnV0aW5nUXVhZC0+bWF0ZXJp
YWwoKSAhPSBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIGNvbnRyaWJ1dGluZ1Bh
c3NRdWFkID0gY29udHJpYnV0aW5nUXVhZC0+dG9SZW5kZXJQYXNzRHJhd1F1YWQoKTsKKworICAg
ICAgICAgICAgQWxsb2NhdGlvbiogY29udHJpYnV0aW5nQWxsb2NhdGlvbiA9IG1fcmVuZGVyUGFz
c01hcC5nZXQoY29udHJpYnV0aW5nUGFzc1F1YWQtPnJlbmRlclBhc3MoKSk7CisgICAgICAgICAg
ICBpZiAoIWNvbnRyaWJ1dGluZ0FsbG9jYXRpb24tPnNob3VsZEFsbG9jYXRlVGV4dHVyZSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gRGVjaWRlIGlmIHdlIHNo
b3VsZCBhbGxvdyBpdHMgYmFja2dyb3VuZCBmaWx0ZXJzIHRvIGJlIHVzZWQuCisgICAgICAgICAg
ICBzaXplX3QgYXZhaWxhYmxlTWVtb3J5ID0gbWVtb3J5TGltaXRCeXRlcyAtIGluVXNlQnl0ZXM7
CisgICAgICAgICAgICBjb250cmlidXRpbmdBbGxvY2F0aW9uLT5zaG91bGRBbGxvY2F0ZUJhY2tn
cm91bmRUZXh0dXJlID0gYmFja2dyb3VuZFRleHR1cmVNYXhCeXRlcyA8PSBhdmFpbGFibGVNZW1v
cnk7CisKKyAgICAgICAgICAgIC8vIFRoZSBwYXNzIGhhcyBiZWVuIGRyYXduIHRvIGl0cyB0YXJn
ZXQsIHNvIGRvZXMgbm90IG5lZWQgdG8gYmUga2VwdCBpbiBtZW1vcnkgYW55bW9yZS4KKyAgICAg
ICAgICAgIGNvbnRyaWJ1dGluZ0FsbG9jYXRpb24tPnRleHR1cmVJc0luVXNlRm9yQ3VycmVudEZy
YW1lID0gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIEluZGljYXRlIHRoYXQgd2UgZHJldyBmcm9t
IHRoaXMgUmVuZGVyUGFzcyB0ZXh0dXJlLgorICAgICAgICAgICAgKytjb250cmlidXRpbmdBbGxv
Y2F0aW9uLT5udW1iZXJPZlVzZXNPZlRleHR1cmVGb3JDdXJyZW50RnJhbWU7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcjo6cmVtb3ZlQWxs
b2NhdGlvbnNOb3RTYXZlZEZvck5leHRGcmFtZSgpCit7CisgICAgVmVjdG9yPGNvbnN0IENDUmVu
ZGVyUGFzcyo+IHRvUmVtb3ZlOworCisgICAgZm9yIChSZW5kZXJQYXNzQWxsb2NhdGlvbkxpc3Q6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9rbm93blJlbmRlclBhc3Nlcy5iZWdpbigpOyBpdCAhPSBt
X2tub3duUmVuZGVyUGFzc2VzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIEFsbG9jYXRpb24qIGFs
bG9jYXRpb24gPSBtX3JlbmRlclBhc3NNYXAuZ2V0KCppdCk7CisgICAgICAgIGlmIChhbGxvY2F0
aW9uLT5zaG91bGRTYXZlVGV4dHVyZUZvck5leHRGcmFtZSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIEFTU0VSVCghYWxsb2NhdGlvbi0+dGV4dHVyZUlkKTsKKyAgICAgICAgdG9S
ZW1vdmUuYXBwZW5kKCppdCk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
b1JlbW92ZS5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRl
clBhc3MgPSB0b1JlbW92ZVtpXTsKKyAgICAgICAgbV9rbm93blJlbmRlclBhc3Nlcy5yZW1vdmUo
cmVuZGVyUGFzcyk7CisgICAgICAgIG1fcmVuZGVyUGFzc01hcC5yZW1vdmUocmVuZGVyUGFzcyk7
CisgICAgfQorfQorCitjb25zdCBDQ1Njb3BlZFRleHR1cmUmIENDUmVuZGVyUGFzc1RleHR1cmVB
bGxvY2F0b3I6OmJlZ2luRHJhd2luZ1RvUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJl
bmRlclBhc3MpIGNvbnN0Cit7CisgICAgQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA9IG1fcmVuZGVy
UGFzc01hcC5nZXQocmVuZGVyUGFzcyk7CisgICAgaWYgKGFsbG9jYXRpb24tPnNob3VsZEFsbG9j
YXRlVGV4dHVyZSAmJiAhYWxsb2NhdGlvbi0+dGV4dHVyZSkKKyAgICAgICAgYWxsb2NhdGlvbi0+
dGV4dHVyZS5jcmVhdGUoKTsKKyAgICByZXR1cm4gYWxsb2NhdGlvbi0+dGV4dHVyZTsKK30KKwor
dm9pZCBDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yOjplbmREcmF3aW5nVG9SZW5kZXJQYXNz
KGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykgY29uc3QKK3sKKyAgICAvLyBOb3RoaW5n
IHRvIGRvIGhlcmUsIHRoaXMgaXMgbm90IHRoZSBjb2RlIHlvdSdyZSBsb29raW5nIGZvci4KK30K
KworYm9vbCBDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yOjpzaG91bGRBbGxvY2F0ZUJhY2tn
cm91bmRGaWx0ZXJUZXh0dXJlcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpIGNvbnN0
Cit7CisgICAgQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA9IG1fcmVuZGVyUGFzc01hcC5nZXQocmVu
ZGVyUGFzcyk7CisgICAgcmV0dXJuIGFsbG9jYXRpb24tPnNob3VsZEFsbG9jYXRlQmFja2dyb3Vu
ZFRleHR1cmU7Cit9CisKK2NvbnN0IENDU2NvcGVkVGV4dHVyZSYgQ0NSZW5kZXJQYXNzVGV4dHVy
ZUFsbG9jYXRvcjo6YmVnaW5EcmF3aW5nRnJvbVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNz
KiByZW5kZXJQYXNzKSBjb25zdAoreworICAgIEFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBtX3Jl
bmRlclBhc3NNYXAuZ2V0KHJlbmRlclBhc3MpOworICAgIEFTU0VSVChhbGxvY2F0aW9uKTsKKwor
ICAgIHJldHVybiBhbGxvY2F0aW9uLT50ZXh0dXJlOworfQorCit2b2lkIENDUmVuZGVyUGFzc1Rl
eHR1cmVBbGxvY2F0b3I6OmVuZERyYXdpbmdGcm9tUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBh
c3MqIHJlbmRlclBhc3MpIGNvbnN0Cit7CisgICAgQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA9IG1f
cmVuZGVyUGFzc01hcC5nZXQocmVuZGVyUGFzcyk7CisgICAgaWYgKGFsbG9jYXRpb24tPnNob3Vs
ZFNhdmVUZXh0dXJlRm9yTmV4dEZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFhbGxv
Y2F0aW9uLT50ZXh0dXJlKQorICAgICAgICByZXR1cm47CisKKyAgICAtLWFsbG9jYXRpb24tPm51
bWJlck9mVXNlc09mVGV4dHVyZUZvckN1cnJlbnRGcmFtZTsKKyAgICBpZiAoYWxsb2NhdGlvbi0+
bnVtYmVyT2ZVc2VzT2ZUZXh0dXJlRm9yQ3VycmVudEZyYW1lKQorICAgICAgICByZXR1cm47CisK
KyAgICBhbGxvY2F0aW9uLT50ZXh0dXJlLmNsZWFyKCk7Cit9CisKK2Jvb2wgQ0NSZW5kZXJQYXNz
VGV4dHVyZUFsbG9jYXRvcjo6aGFzQ2FjaGVkVGV4dHVyZShjb25zdCBDQ1JlbmRlclBhc3MqIHJl
bmRlclBhc3MpIGNvbnN0Cit7CisgICAgQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA9IG1fcmVuZGVy
UGFzc01hcC5nZXQocmVuZGVyUGFzcyk7CisgICAgaWYgKCFhbGxvY2F0aW9uLT50ZXh0dXJlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQoYWxsb2NhdGlvbi0+dGV4dHVyZS5z
aXplKCkgPT0gcmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkuc2l6ZSgpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
VGV4dHVyZUFsbG9jYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MTgxMTllZmJlMDViYWYyY2VhMmFkODVh
N2E1MTEyZmU0OThiOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yLmgKQEAg
LTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVuZGVyUGFzc1RleHR1cmVBbGxvY2F0
b3JfaAorI2RlZmluZSBDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yX2gKKworI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgImNj
L0NDUmVuZGVyUGFzcy5oIiAvLyBGb3IgQ0NSZW5kZXJQYXNzTGlzdC4KKyNpbmNsdWRlICJjYy9D
Q1Njb3BlZFRleHR1cmUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDUmVuZGVyUGFz
c1RleHR1cmVBbGxvY2F0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFz
c1RleHR1cmVBbGxvY2F0b3IpOworCisgICAgc3RydWN0IEFsbG9jYXRpb24geworICAgICAgICBi
b29sIHNob3VsZEFsbG9jYXRlVGV4dHVyZTsKKyAgICAgICAgYm9vbCBzaG91bGRTYXZlVGV4dHVy
ZUZvck5leHRGcmFtZTsKKyAgICAgICAgYm9vbCB0ZXh0dXJlSXNJblVzZUZvckN1cnJlbnRGcmFt
ZTsKKyAgICAgICAgaW50IG51bWJlck9mVXNlc09mVGV4dHVyZUZvckN1cnJlbnRGcmFtZTsKKwor
ICAgICAgICBib29sIHNob3VsZEFsbG9jYXRlQmFja2dyb3VuZFRleHR1cmU7CisKKyAgICAgICAg
Q0NTY29wZWRUZXh0dXJlIHRleHR1cmU7CisKKyAgICAgICAgQWxsb2NhdGlvbihQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgICAgICAgICAgOiBzaG91bGRBbGxvY2F0
ZVRleHR1cmUoZmFsc2UpCisgICAgICAgICAgICAsIHNob3VsZFNhdmVUZXh0dXJlRm9yTmV4dEZy
YW1lKGZhbHNlKQorICAgICAgICAgICAgLCB0ZXh0dXJlSXNJblVzZUZvckN1cnJlbnRGcmFtZShm
YWxzZSkKKyAgICAgICAgICAgICwgc2hvdWxkQWxsb2NhdGVCYWNrZ3JvdW5kVGV4dHVyZShmYWxz
ZSkKKyAgICAgICAgICAgICwgdGV4dHVyZShjb250ZXh0KQorICAgICAgICB7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxjb25zdCBDQ1JlbmRlclBhc3MqPiBS
ZW5kZXJQYXNzQWxsb2NhdGlvbkxpc3Q7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENDUmVu
ZGVyUGFzcyosIE93blB0cjxBbGxvY2F0aW9uPiA+IFJlbmRlclBhc3NBbGxvY2F0aW9uTWFwOwor
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9j
YXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpIHsgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yKGNvbnRleHQpKTsg
fQorICAgIH5DQ1JlbmRlclBhc3NUZXh0dXJlQWxsb2NhdG9yKCk7CisKKyAgICB2b2lkIGRlY2lk
ZUFsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2Vz
SW5EcmF3T3JkZXIsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSwgc2l6ZV90IG1l
bW9yeUxpbWl0Qnl0ZXMpOworICAgIHZvaWQgcmVtb3ZlQWxsb2NhdGlvbnNOb3RTYXZlZEZvck5l
eHRGcmFtZSgpOworCisgICAgY29uc3QgQ0NTY29wZWRUZXh0dXJlJiBiZWdpbkRyYXdpbmdUb1Jl
bmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29uc3Q7CisgICAgdm9pZCBlbmREcmF3aW5n
VG9SZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyopIGNvbnN0OworCisgICAgYm9vbCBzaG91
bGRBbGxvY2F0ZUJhY2tncm91bmRGaWx0ZXJUZXh0dXJlcyhjb25zdCBDQ1JlbmRlclBhc3MqKSBj
b25zdDsKKworICAgIGNvbnN0IENDU2NvcGVkVGV4dHVyZSYgYmVnaW5EcmF3aW5nRnJvbVJlbmRl
clBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29uc3Q7CisgICAgdm9pZCBlbmREcmF3aW5nRnJv
bVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29uc3Q7CisKKyAgICBib29sIGhhc0Nh
Y2hlZFRleHR1cmUoY29uc3QgQ0NSZW5kZXJQYXNzKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgQ0NSZW5kZXJQYXNzVGV4dHVyZUFsbG9jYXRvcihQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPik7CisKKyAgICB2b2lkIGNvdW50U2F2ZWRBbGxvY2F0aW9ucyhzaXplX3QmIGlu
VXNlQnl0ZXMpOworICAgIHZvaWQgYWRkQWxsb2NhdGlvbkludGVudGlvbnNGb3JDdXJyZW50RnJh
bWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIsIHNpemVf
dCBpblVzZUJ5dGVzKTsKKworICAgIGJvb2wgYmFja2dyb3VuZEZpbHRlck1heEJ5dGVzKGNvbnN0
IENDUXVhZExpc3QmIGNvbnRyaWJ1dGluZ1F1YWRzLCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3
cG9ydFNpemUpOworCisgICAgUmVuZGVyUGFzc0FsbG9jYXRpb25MaXN0IG1fa25vd25SZW5kZXJQ
YXNzZXM7CisgICAgUmVuZGVyUGFzc0FsbG9jYXRpb25NYXAgbV9yZW5kZXJQYXNzTWFwOworCisg
ICAgLy8gRklYTUU6IFRyYWNrIHRoZSBtX2Rlc2lyZWRUZXh0dXJlTWVtb3J5Qnl0ZXMKKworICAg
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyZXIuaAppbmRleCAzMmY4MzU4Yzc0NGRjMGU4YzE4ZTk0YjA2NGE5MWQ1MDQ4
MDVlZmE2Li42MjE1Yzg3NmQyNjVmODMxYjdlMWViY2JhNzU3OTBhYTRlM2RiMGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
cmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJlci5oCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisj
aW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDQ1JlbmRlclBhc3M7CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4dHVy
ZUNvcGllcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1h
dHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQogICAgIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2luZG93TWF0cml4OyB9CiAKKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgYSBu
by1vcCBpbiBhIG5lc3RlZCBjb21wb3NpdG9yIHRoYXQgZG9lcyBub3QgcmVuZGVyIGl0cyBwYXNz
ZXMgZGlyZWN0bHkuCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9u
c0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmLCBzaXplX3QgbWVtb3J5TGltaXRCeXRl
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRl
clBhc3MqIGRlZmF1bHRSZW5kZXJQYXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5k
ZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JS
ZWN0SW5DdXJyZW50UGFzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJh
bWUoKSA9IDA7CkBAIC04OSw2ICs5MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFRleHR1cmVB
bGxvY2F0b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
VGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwog
CisgICAgdmlydHVhbCBzaXplX3QgY3VycmVudENvbnRlbnRzTWVtb3J5VXNlQnl0ZXMoKSBjb25z
dCA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0
JikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dExvc3QoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3Bl
ZFRleHR1cmUuYyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NvcGVkVGV4dHVyZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MDFkZTQxZTU0YzM2N2Q4YjU1MGZhYzY2
MDcyMTMyOTJjMmE3ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuYwpAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0
dXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NTY29wZWRUZXh0dXJlOjpDQ1Njb3Bl
ZFRleHR1cmUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAgICA6IG1f
Y29udGV4dChjb250ZXh0KQorICAgICwgbV90ZXh0dXJlSWQoMCkKK3sKK30KKworQ0NTY29wZWRU
ZXh0dXJlOjpDQ1Njb3BlZFRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkLCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAg
LCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCit7Cit9CisKK0NDU2NvcGVkVGV4dHVyZTo6b3BlcmF0
b3I9KHVuc2lnbmVkIHRleHR1cmVJZCkKK3sKKyAgICBjbGVhcigpOworICAgIG1fdGV4dHVyZUlk
ID0gdGV4dHVyZUlkOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMWViOWRhYTYzMzBkYWIzNjkzMmMwYzgzYjZlYTdkYTc1ODljZWEwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY29wZWRUZXh0dXJlLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDU2NvcGVkVGV4dHVyZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0NDU2NvcGVkVGV4dHVyZTo6Q0NTY29wZWRUZXh0dXJlKFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAg
ICAsIG1fdGV4dHVyZUlkKDApCit7CisgICAgQVNTRVJUKG1fY29udGV4dCk7Cit9CisKK0NDU2Nv
cGVkVGV4dHVyZTo6fkNDU2NvcGVkVGV4dHVyZSgpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9p
ZCBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZSgpCit7CisgICAgQVNTRVJUKCFtX3RleHR1cmVJZCk7
CisgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9mb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQiB8fCBtX2Zvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisKKyAgICBtX3RleHR1cmVJZCA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwor
fQorCit2b2lkIENDU2NvcGVkVGV4dHVyZTo6cHJlcGFyZShjb25zdCBJbnRTaXplJiBzaXplLCBH
QzNEZW51bSBmb3JtYXQpCit7CisgICAgQVNTRVJUKCFtX3RleHR1cmVJZCk7CisKKyAgICBtX3Np
emUgPSBzaXplOworICAgIG1fZm9ybWF0ID0gZm9ybWF0OworfQorCitDQ1Njb3BlZFRleHR1cmUm
IENDU2NvcGVkVGV4dHVyZTo6b3BlcmF0b3I9KHVuc2lnbmVkIHRleHR1cmVJZCkKK3sKKyAgICBj
bGVhcigpOworICAgIG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOworICAgIHJldHVybiAqdGhpczsK
K30KKwordm9pZCBDQ1Njb3BlZFRleHR1cmU6OmNsZWFyKCkKK3sKKyAgICBpZiAobV90ZXh0dXJl
SWQpCisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX3RleHR1cmVJZCk7CisgICAg
bV90ZXh0dXJlSWQgPSAwOworfQorCit1bnNpZ25lZCBDQ1Njb3BlZFRleHR1cmU6OnJlbGVhc2Uo
KQoreworICAgIHVuc2lnbmVkIHJlbGVhc2VkVGV4dHVyZUlkID0gbV90ZXh0dXJlSWQ7CisgICAg
bV90ZXh0dXJlSWQgPSAwOworICAgIHJldHVybiByZWxlYXNlZFRleHR1cmVJZDsKK30KKworc2l6
ZV90IENDU2NvcGVkVGV4dHVyZTo6Ynl0ZXMoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0dXJl
SWQpCisgICAgICAgIHJldHVybiAwdTsKKworICAgIHJldHVybiBtYXliZUJ5dGVzKCk7Cit9CisK
K3NpemVfdCBDQ1Njb3BlZFRleHR1cmU6Om1heWJlQnl0ZXMoKSBjb25zdAoreworICAgIHJldHVy
biBDQ1Njb3BlZFRleHR1cmU6Om1lbW9yeVNpemVCeXRlcyhtX3NpemUsIG1fZm9ybWF0KTsKK30K
Kworc2l6ZV90IENDU2NvcGVkVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKGNvbnN0IEludFNpemUm
IHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgY29tcG9uZW50c1Bl
clBpeGVsOworICAgIHVuc2lnbmVkIGludCBieXRlc1BlckNvbXBvbmVudDsKKyAgICBpZiAoIUdy
YXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoZm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgJmNvbXBvbmVudHNQZXJQaXhlbCwgJmJ5
dGVzUGVyQ29tcG9uZW50KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDB1OworICAgIH0KKyAgICByZXR1cm4gY29tcG9uZW50c1BlclBpeGVsICogYnl0
ZXNQZXJDb21wb25lbnQgKiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njb3BlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1OTg2MjI5M2JkMTIzN2I4M2Yy
ZjFhZDM0MTExOWNmMjFhNmZlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaApAQCAtMCwwICsx
LDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1Njb3BlZFRleHR1cmVfaAorI2RlZmluZSBDQ1Njb3Bl
ZFRleHR1cmVfaAorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBDQ1Njb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENDU2NvcGVkVGV4dHVyZSk7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ0NTY29wZWRUZXh0
dXJlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKyAgICB+Q0NTY29wZWRUZXh0dXJl
KCk7CisKKyAgICBDQ1Njb3BlZFRleHR1cmUmIG9wZXJhdG9yPSh1bnNpZ25lZCB0ZXh0dXJlSWQp
OworCisgICAgdm9pZCBwcmVwYXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOwor
CisgICAgdm9pZCBjcmVhdGUoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdW5zaWduZWQgcmVs
ZWFzZSgpOworCisgICAgb3BlcmF0b3IgdW5zaWduZWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVJZDsgfQorICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KKyAgICBHQzNEZW51bSBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQorICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTsgfQorCisgICAgc2l6ZV90IGJ5dGVzKCkgY29uc3Q7CisgICAgc2l6ZV90IG1h
eWJlQnl0ZXMoKSBjb25zdDsKKworICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmVJZDsgfQorCisgICAgc3RhdGljIHNpemVfdCBtZW1vcnlTaXplQnl0ZXMoY29uc3Qg
SW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAg
SW50U2l6ZSBtX3NpemU7CisgICAgR0MzRGVudW0gbV9mb3JtYXQ7Cit9OworCit9CisKKyNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148391</attachid>
            <date>2012-06-19 12:40:56 -0700</date>
            <delta_ts>2012-06-19 13:17:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88924-20120619154056.patch</filename>
            <type>text/plain</type>
            <size>6097</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY2YmM4MzIzMGU2MTE4
NGRhN2FjYjM1ZGMzZmMzNzFmOTZlZjhhYS4uNWJiZjVhYjI4MjIxN2IyM2M0MTY0Njg5YTNmMTY5
YTBjZDMyYTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA2LTE5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IGFuIGFsbG9jYXRpb24gc3RlcCBmb3IgQ0NSZW5kZXJlciBiZWZvcmUgZHJhd2luZyBhIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgc3Rl
cCB3aWxsIGJlIHVzZWQgdG8gZGVjaWRlIHdoaWNoIFJlbmRlclBhc3MgdGV4dHVyZXMgY2FuIGJl
IGtlcHQKKyAgICAgICAgYWxpdmUgYW5kIGRvIG5vdCBuZWVkIHRvIGJlIGRyYXduIGFnYWluLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmg6CisgICAgICAgIChDQ1Jl
bmRlcmVyKToKKworMjAxMi0wNi0xOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9y
Zz4KKwogICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSBDQ1Njb3BlZFRleHR1cmUgY2xhc3MgZm9y
IGNyZWF0aW5nL2ZyZWVpbmcgdGV4dHVyZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5NDg1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCmluZGV4IDE2MTcyOWM5NTkzZDkzNWM0MDJkM2UzOTdlMjhjOWVhMDc2ODgwYjQuLjg5
ZGRlZjU0N2MxNDBlZWJlZDUyODFhNjg1MGM2ZDVmMzYxNGNiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNDI5LDYgKzQyOSwxNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVy
UGFzcywgY29ucwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNz
Q29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIH0KIAorCit2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQ
YXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCit7CisgICAgLy8gRklYTUU6IEdldCB0
aGlzIG1lbW9yeSBsaW1pdCBmcm9tIEdQVSBNZW1vcnkgTWFuYWdlcgorICAgIHNpemVfdCBjb250
ZW50c01lbW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPmN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpOworICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFn
ZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKTsKKyAgICBzaXplX3QgbWVtb3J5TGlt
aXRCeXRlcyA9IG1heExpbWl0Qnl0ZXMgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzID4gMHUgPyBt
YXhMaW1pdEJ5dGVzIC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA6IDB1OworCisgICAgbV9pbXBs
VGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcyk7
Cit9CisKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25z
dCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBvbmNlIGZyYW1lYnVmZmVyIGlzIGF1dG9tYXRpY2FsbHkgcmVjcmVhdGVkIG9uIGZpcnN0
IHVzZQpAQCAtNDM3LDExICs0NDgsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVn
aW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcwogICAgIG1f
ZGVmYXVsdFJlbmRlclBhc3MgPSByb290UmVuZGVyUGFzczsKICAgICBBU1NFUlQobV9kZWZhdWx0
UmVuZGVyUGFzcyk7CiAKLSAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKLSAgICBzaXpl
X3QgbWF4TGltaXQgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXpl
KCkpOwotICAgIHNpemVfdCBuZXdMaW1pdCA9IChtYXhMaW1pdCA+IGNvbnRlbnRzTWVtb3J5VXNl
Qnl0ZXMpID8gbWF4TGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzIDogMDsKLSAgICBtX2lt
cGxUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhuZXdMaW1pdCk7Ci0KICAg
ICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYzM2OWRkMmE3NzBlZWQwOGUxNjllNGVh
MDI0MDc5OTg1ZDIwYjM5Ni4uNmIzOWQ5MTI4YjFkNjkyNjU3ZDY0NDlhOTcxMDMzMzJiMTNkYmIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTc2LDYgKzc2LDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgRmxvYXRRdWFkJiBzaGFyZWRHZW9tZXRyeVF1YWQoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVhZDsgfQogCisgICAgdmlydHVhbCB2b2lkIGRl
Y2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3Qm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NS
ZW5kZXJQYXNzKiBkZWZhdWx0UmVuZGVyUGFzcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgZnJh
bWVidWZmZXJEYW1hZ2VSZWN0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJh
d2luZ0ZyYW1lKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCmluZGV4IDQ5NGY5MDg1YmY2MDYxZjFhOTcyNWEzYjdhNDg2NzIzMTU1YTViYjUuLmQyOGU3
MTFiMTZjZmQ1ZGNmZjNjZjU3NDQ5NGNmY2VjY2E3OTRlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00ODMsNiArNDgzLDggQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgLy8gVGhp
cyB2YWx1ZSBpcyBjdXJyZW50bHkgaW5hY2Nlc3NpYmxlIGJlY2F1c2UgaXQgaXMgdXAgaW4gQ2hy
b21pdW0ncwogICAgIC8vIFJlbmRlcldpZGdldC4KIAorICAgIG1fbGF5ZXJSZW5kZXJlci0+ZGVj
aWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoZnJhbWUucmVuZGVyUGFzc2VzKTsKKwog
ICAgIC8vIFRoZSByb290IFJlbmRlclBhc3MgaXMgdGhlIGxhc3Qgb25lIHRvIGJlIGRyYXduLgog
ICAgIENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQYXNzZXMubGFz
dCgpLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXggMzJmODM1OGM3NDRkYzBlOGMxOGU5
NGIwNjRhOTFkNTA0ODA1ZWZhNi4uNWNiOWZmOTUxNzk3YWZkMDZkMjM4ODQ0YjI0OGM3MzI2OTY3
NDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAi
RmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsK
IGNsYXNzIFRleHR1cmVDb3BpZXI7CiBjbGFzcyBUZXh0dXJlTWFuYWdlcjsKQEAgLTY4LDYgKzY4
LDggQEAgcHVibGljOgogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRyaXg7IH0K
ICAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB3aW5kb3dNYXRyaXgo
KSBjb25zdCB7IHJldHVybiBtX3dpbmRvd01hdHJpeDsgfQogCisgICAgLy8gVGhpcyBtZXRob2Qg
c2hvdWxkIGJlIGEgbm8tb3AgaW4gYSBuZXN0ZWQgY29tcG9zaXRvciB0aGF0IGRvZXMgbm90IHJl
bmRlciBpdHMgcGFzc2VzIGRpcmVjdGx5LgorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQ
YXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIGRlZmF1
bHRSZW5kZXJQYXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0
IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50
UGFzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148402</attachid>
            <date>2012-06-19 13:17:23 -0700</date>
            <delta_ts>2012-06-19 14:20:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88924-20120619161722.patch</filename>
            <type>text/plain</type>
            <size>6062</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY2YmM4MzIzMGU2MTE4
NGRhN2FjYjM1ZGMzZmMzNzFmOTZlZjhhYS4uNWJiZjVhYjI4MjIxN2IyM2M0MTY0Njg5YTNmMTY5
YTBjZDMyYTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA2LTE5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IGFuIGFsbG9jYXRpb24gc3RlcCBmb3IgQ0NSZW5kZXJlciBiZWZvcmUgZHJhd2luZyBhIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgc3Rl
cCB3aWxsIGJlIHVzZWQgdG8gZGVjaWRlIHdoaWNoIFJlbmRlclBhc3MgdGV4dHVyZXMgY2FuIGJl
IGtlcHQKKyAgICAgICAgYWxpdmUgYW5kIGRvIG5vdCBuZWVkIHRvIGJlIGRyYXduIGFnYWluLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmg6CisgICAgICAgIChDQ1Jl
bmRlcmVyKToKKworMjAxMi0wNi0xOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9y
Zz4KKwogICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSBDQ1Njb3BlZFRleHR1cmUgY2xhc3MgZm9y
IGNyZWF0aW5nL2ZyZWVpbmcgdGV4dHVyZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5NDg1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCmluZGV4IDE2MTcyOWM5NTkzZDkzNWM0MDJkM2UzOTdlMjhjOWVhMDc2ODgwYjQuLjg5
ZGRlZjU0N2MxNDBlZWJlZDUyODFhNjg1MGM2ZDVmMzYxNGNiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNDI5LDYgKzQyOSwxNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVy
UGFzcywgY29ucwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNz
Q29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIH0KIAorCit2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQ
YXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCit7CisgICAgLy8gRklYTUU6IEdldCB0
aGlzIG1lbW9yeSBsaW1pdCBmcm9tIEdQVSBNZW1vcnkgTWFuYWdlcgorICAgIHNpemVfdCBjb250
ZW50c01lbW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPmN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpOworICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFn
ZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKTsKKyAgICBzaXplX3QgbWVtb3J5TGlt
aXRCeXRlcyA9IG1heExpbWl0Qnl0ZXMgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzID4gMHUgPyBt
YXhMaW1pdEJ5dGVzIC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA6IDB1OworCisgICAgbV9pbXBs
VGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcyk7
Cit9CisKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZShjb25z
dCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBvbmNlIGZyYW1lYnVmZmVyIGlzIGF1dG9tYXRpY2FsbHkgcmVjcmVhdGVkIG9uIGZpcnN0
IHVzZQpAQCAtNDM3LDExICs0NDgsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVn
aW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcwogICAgIG1f
ZGVmYXVsdFJlbmRlclBhc3MgPSByb290UmVuZGVyUGFzczsKICAgICBBU1NFUlQobV9kZWZhdWx0
UmVuZGVyUGFzcyk7CiAKLSAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKLSAgICBzaXpl
X3QgbWF4TGltaXQgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXpl
KCkpOwotICAgIHNpemVfdCBuZXdMaW1pdCA9IChtYXhMaW1pdCA+IGNvbnRlbnRzTWVtb3J5VXNl
Qnl0ZXMpID8gbWF4TGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzIDogMDsKLSAgICBtX2lt
cGxUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhuZXdMaW1pdCk7Ci0KICAg
ICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYzM2OWRkMmE3NzBlZWQwOGUxNjllNGVh
MDI0MDc5OTg1ZDIwYjM5Ni4uNmIzOWQ5MTI4YjFkNjkyNjU3ZDY0NDlhOTcxMDMzMzJiMTNkYmIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTc2LDYgKzc2LDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgRmxvYXRRdWFkJiBzaGFyZWRHZW9tZXRyeVF1YWQoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVhZDsgfQogCisgICAgdmlydHVhbCB2b2lkIGRl
Y2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3Qm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NS
ZW5kZXJQYXNzKiBkZWZhdWx0UmVuZGVyUGFzcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgZnJh
bWVidWZmZXJEYW1hZ2VSZWN0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJh
d2luZ0ZyYW1lKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCmluZGV4IDQ5NGY5MDg1YmY2MDYxZjFhOTcyNWEzYjdhNDg2NzIzMTU1YTViYjUuLjIxYTY3
MmU4ZmE1NzY0YTk4M2IyMzYwZWU2NDg2M2M1MGJjNDE0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zMzYsNiArMzM2LDcgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBp
ZiAoZHJhd0ZyYW1lKQogICAgICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygp
LnJlY29yZE1ldHJpY3ModGhpcyk7CiAKKyAgICBtX2xheWVyUmVuZGVyZXItPmRlY2lkZVJlbmRl
clBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGZyYW1lLnJlbmRlclBhc3Nlcyk7CiAgICAgcmVtb3Zl
UGFzc2VzV2l0aENhY2hlZFRleHR1cmVzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJhbWUuc2tpcHBl
ZFBhc3Nlcyk7CiAKICAgICByZXR1cm4gZHJhd0ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCmluZGV4
IDMyZjgzNThjNzQ0ZGMwZThjMThlOTRiMDY0YTkxZDUwNDgwNWVmYTYuLjVjYjlmZjk1MTc5N2Fm
ZDA2ZDIzODg0NGIyNDhjNzMyNjk2NzQ1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKQEAgLTI5LDEy
ICsyOSwxMiBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlclBh
c3MuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDUmVuZGVyUGFzczsKIGNs
YXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlQ29waWVyOwogY2xhc3MgVGV4dHVy
ZU1hbmFnZXI7CkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyByZXR1cm4g
bV9wcm9qZWN0aW9uTWF0cml4OyB9CiAgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgd2luZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dNYXRyaXg7IH0K
IAorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBhIG5vLW9wIGluIGEgbmVzdGVkIGNvbXBv
c2l0b3IgdGhhdCBkb2VzIG5vdCByZW5kZXIgaXRzIHBhc3NlcyBkaXJlY3RseS4KKyAgICB2aXJ0
dWFsIHZvaWQgZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5k
ZXJQYXNzTGlzdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoY29u
c3QgQ0NSZW5kZXJQYXNzKiBkZWZhdWx0UmVuZGVyUGFzcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3QmIHJv
b3RTY2lzc29yUmVjdEluQ3VycmVudFBhc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
RHJhd2luZ0ZyYW1lKCkgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148419</attachid>
            <date>2012-06-19 14:21:04 -0700</date>
            <delta_ts>2012-06-19 14:22:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-88924-20120619172103.patch</filename>
            <type>text/plain</type>
            <size>28413</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY0OTNmMjQ3ZTMyNDRh
NWRmOTM1Yjc0MWZmMDYyZGUxM2EyMjExZi4uNmViMjk1ODM2MTBlOTk2NDIyNGE3MGI5ZWE1YTIx
ZDY4NWRlY2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA2LTE5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IGFuIGFsbG9jYXRpb24gc3RlcCBmb3IgQ0NSZW5kZXJlciBiZWZvcmUgZHJhd2luZyBhIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICBUaGlzIHN0
ZXAgd2lsbCBiZSB1c2VkIHRvIGRlY2lkZSB3aGljaCBSZW5kZXJQYXNzIHRleHR1cmVzIGNhbiBi
ZSBrZXB0CisgICAgICAgIGFsaXZlIGFuZCBkbyBub3QgbmVlZCB0byBiZSBkcmF3biBhZ2Fpbi4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoQ0NS
ZW5kZXJlcik6CisKKzIwMTItMDYtMTkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDcmVhdGUgQ0NTY29wZWRUZXh0dXJlIGNsYXNzIGZv
ciBjcmVhdGluZy9mcmVlaW5nIHRleHR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTQ4NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5l
IFdhbGtlci4KKworICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgc3RhbmRhcmQgd2F5IHRv
IGNyZWF0ZSB0ZXh0dXJlIGlkcyBpbiBhIHdheSB0aGF0CisgICAgICAgIGVuc3VyZXMgdGhleSB3
aWxsIGJlIGZyZWVkIGxhdGVyLiBJdCBpcyBtZWFudCB0byByZXBsYWNlIHRoZSB1c2Ugb2YKKyAg
ICAgICAgdGhlIFRleHR1cmVBbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgdGV4dHVyZXMsIGJ5IGFi
c3RyYWN0aW5nIHRoZQorICAgICAgICBhYmlsaXRpZXMgb2YgdGhlIGNsYXNzIGludG8gZWFjaCBD
Q1Njb3BlZFRleHR1cmUgb2JqZWN0LiBUaGlzIHByb3ZpZGVzCisgICAgICAgIHVzIHdpdGggYSBj
ZW50cmFsIHBsYWNlIGZvciB0aGUgY29kZSBhcm91bmQgY3JlYXRpbmcgdGV4dHVyZXMsIGFuZAor
ICAgICAgICBjb21wdXRpbmcgdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIGJ5IGEgdGV4dHVyZS4g
SXQgZW5zdXJlcyB0aGF0CisgICAgICAgIHdlIGNhbiBlYXNpbHkga25vdyBob3cgbWFueSBieXRl
cyBhbnkgdGV4dHVyZSBvYmplY3QgaXMgdXNpbmcuCisKKyAgICAgICAgVGhpcyBvYmplY3Qgd291
bGQgYmUgdXNlZCBpbiBwbGFjZSBvZiBzdG9yaW5nIGFuIHVuc2lnbmVkIHRleHR1cmVJZAorICAg
ICAgICBpbiBvdGhlciBjbGFzc2VzLCBhbmQgd2lsbCByZXBsYWNlIHRoZSB1c2Ugb2YgTWFuYWdl
ZFRleHR1cmVzIGZvcgorICAgICAgICBSZW5kZXJQYXNzZXMsIGFsbG93aW5nIHVzIHRvIGRlY291
cGxlIFJlbmRlclBhc3NlcyBmcm9tIHRoZQorICAgICAgICBub3ctb2Jzb2xldGUgVGV4dHVyZU1h
bmFnZXIuCisKKyAgICAgICAgVW5pdCB0ZXN0czogQ0NTY29wZWRUZXh1cmVUZXN0Lk5ld1Njb3Bl
ZFRleHR1cmUKKyAgICAgICAgICAgICAgICAgICAgQ0NTY29wZWRUZXh1cmVUZXN0LlByZXBhcmVT
Y29wZWRUZXh0dXJlCisgICAgICAgICAgICAgICAgICAgIENDU2NvcGVkVGV4dXJlVGVzdC5DcmVh
dGVTY29wZWRUZXh0dXJlCisgICAgICAgICAgICAgICAgICAgIENDU2NvcGVkVGV4dXJlVGVzdC5T
Y29wZWRUZXh0dXJlSXNEZWxldGVkCisgICAgICAgICAgICAgICAgICAgIENDU2NvcGVkVGV4dXJl
VGVzdC5DcmVhdGVTY29wZWRUZXh0dXJlRm9yRnJhbWVidWZmZXJBdHRhY2htZW50CisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY29wZWRUZXh0dXJlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Q0NTY29wZWRUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6fkNDU2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjp0ZXh0dXJlVG9TdG9yYWdlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzVGV4
dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29w
ZWRUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjpw
cmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Y2xlYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjpzdGVhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Njb3BlZFRleHR1cmU6OnJlbGVhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29wZWRU
ZXh0dXJlOjpieXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6Om1heWJl
Qnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjptZW1vcnlTaXplQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjppbml0aWFsaXplQ2FwYWJp
bGl0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3Bl
ZFRleHR1cmUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDU2NvcGVk
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1Njb3BlZFRleHR1cmU6OmZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1
cmU6Om9wZXJhdG9yIGJvb2wpOgorCiAyMDEyLTA2LTE5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICAyMDEyLTA2LTE5ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDZl
OWFjYjc0NDQ0NDU5NDk4NGM2NzFhMTgzZTg0N2ViOWY1NTdiZC4uYmI1N2NhMjk2NWEwY2U2ZDli
YjAyMGExMTZiMDg3YzQ3MzBlMjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wNi0xOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSBDQ1Njb3BlZFRleHR1cmUgY2xhc3MgZm9y
IGNyZWF0aW5nL2ZyZWVpbmcgdGV4dHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5NDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUg
V2Fsa2VyLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvQ0NTY29w
ZWRUZXh0dXJlVGVzdC5jcHA6IEFkZGVkLgorCiAyMDEyLTA2LTE5ICBBbXkgT3VzdGVyaG91dCAg
PGFvdXN0ZXJoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFN0eWxlIEZpeCBp
biBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwYzJl
OGUzZTEwOTZkNjc2OTM2MDY4YWM3ZjAxYTZiNzNlYzY5MDhhLi5lMTJmOGRkMWRjY2I0MGQ2NTJk
MmY4MGY1NWI5MTUwMmUxOWQ3Mjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNzUyLDYgKzM3NTIs
OCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGhyZWFk
UHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCmluZGV4IDE2MTcyOWM5NTkzZDkzNWM0MDJkM2UzOTdlMjhjOWVhMDc2
ODgwYjQuLjg5ZGRlZjU0N2MxNDBlZWJlZDUyODFhNjg1MGM2ZDVmMzYxNGNiZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNDI5LDYgKzQyOSwxNyBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFz
cyogcmVuZGVyUGFzcywgY29ucwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIH0KIAorCit2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3Qg
Q0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCit7CisgICAgLy8gRklY
TUU6IEdldCB0aGlzIG1lbW9yeSBsaW1pdCBmcm9tIEdQVSBNZW1vcnkgTWFuYWdlcgorICAgIHNp
emVfdCBjb250ZW50c01lbW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3It
PmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOworICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4
dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKTsKKyAgICBzaXplX3Qg
bWVtb3J5TGltaXRCeXRlcyA9IG1heExpbWl0Qnl0ZXMgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVz
ID4gMHUgPyBtYXhMaW1pdEJ5dGVzIC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA6IDB1OworCisg
ICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGlt
aXRCeXRlcyk7Cit9CisKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdG
cmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKQogewogICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBvbmNlIGZyYW1lYnVmZmVyIGlzIGF1dG9tYXRpY2FsbHkgcmVjcmVhdGVk
IG9uIGZpcnN0IHVzZQpAQCAtNDM3LDExICs0NDgsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFz
cwogICAgIG1fZGVmYXVsdFJlbmRlclBhc3MgPSByb290UmVuZGVyUGFzczsKICAgICBBU1NFUlQo
bV9kZWZhdWx0UmVuZGVyUGFzcyk7CiAKLSAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRl
cyA9IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsK
LSAgICBzaXplX3QgbWF4TGltaXQgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmll
d3BvcnRTaXplKCkpOwotICAgIHNpemVfdCBuZXdMaW1pdCA9IChtYXhMaW1pdCA+IGNvbnRlbnRz
TWVtb3J5VXNlQnl0ZXMpID8gbWF4TGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzIDogMDsK
LSAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhuZXdMaW1p
dCk7Ci0KICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYzM2OWRkMmE3NzBlZWQw
OGUxNjllNGVhMDI0MDc5OTg1ZDIwYjM5Ni4uNmIzOWQ5MTI4YjFkNjkyNjU3ZDY0NDlhOTcxMDMz
MzJiMTNkYmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTc2LDYg
Kzc2LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgRmxvYXRRdWFkJiBzaGFyZWRHZW9tZXRyeVF1
YWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVhZDsgfQogCisgICAgdmlydHVh
bCB2b2lkIGRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVy
UGFzc0xpc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUo
Y29uc3QgQ0NSZW5kZXJQYXNzKiBkZWZhdWx0UmVuZGVyUGFzcykgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0
UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoRHJhd2luZ0ZyYW1lKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCmluZGV4IDQ5NGY5MDg1YmY2MDYxZjFhOTcyNWEzYjdhNDg2NzIzMTU1YTVi
YjUuLjIxYTY3MmU4ZmE1NzY0YTk4M2IyMzYwZWU2NDg2M2M1MGJjNDE0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zMzYsNiArMzM2LDcgQEAgYm9vbCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFt
ZSkKICAgICBpZiAoZHJhd0ZyYW1lKQogICAgICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3
TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CiAKKyAgICBtX2xheWVyUmVuZGVyZXItPmRl
Y2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGZyYW1lLnJlbmRlclBhc3Nlcyk7CiAg
ICAgcmVtb3ZlUGFzc2VzV2l0aENhY2hlZFRleHR1cmVzKGZyYW1lLnJlbmRlclBhc3NlcywgZnJh
bWUuc2tpcHBlZFBhc3Nlcyk7CiAKICAgICByZXR1cm4gZHJhd0ZyYW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJl
ci5oCmluZGV4IDMyZjgzNThjNzQ0ZGMwZThjMThlOTRiMDY0YTkxZDUwNDgwNWVmYTYuLjExNTkw
ZTAwNjM0N2E1ODc1NWQ3ZTJhMzBkZGIzOTFmYmFiZDFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgK
QEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9D
Q1JlbmRlclBhc3MuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDUmVuZGVy
UGFzczsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlQ29waWVyOwogY2xh
c3MgVGV4dHVyZU1hbmFnZXI7CkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9qZWN0aW9uTWF0cml4OyB9CiAgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgd2luZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dN
YXRyaXg7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNG
b3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBi
ZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIGRlZmF1bHRSZW5kZXJQYXNzKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyos
IGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50UGFzcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29w
ZWRUZXh0dXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmU5NzQwNjBlY2M3NzIxZGRiZGFlZDBkNmYwZDli
YjI0MGJhNTJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcApAQCAtMCwwICsxLDE1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDU2NvcGVkVGV4dHVy
ZS5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQ1Njb3BlZFRl
eHR1cmU6OkNDU2NvcGVkVGV4dHVyZSgpCisgICAgOiBtX3RleHR1cmVJZCgwKQorICAgICwgbV9m
b3JtYXQoMCkKKyAgICAsIG1fZm9yRnJhbWVidWZmZXJBdHRhY2htZW50KGZhbHNlKQoreworfQor
CitDQ1Njb3BlZFRleHR1cmU6On5DQ1Njb3BlZFRleHR1cmUoKQoreworICAgIGNsZWFyKCk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgR0MzRGVudW0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChHQzNEZW51
bSB0ZXh0dXJlRm9ybWF0KQoreworICAgIEdDM0RlbnVtIHN0b3JhZ2VGb3JtYXQgPSBFeHRlbnNp
b25zM0Q6OlJHQkE4X09FUzsKKyAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6QkdSQV9FWFQ6CisgICAgICAgIHN0b3JhZ2VGb3JtYXQgPSBFeHRlbnNpb25zM0RD
aHJvbWl1bTo6QkdSQThfRVhUOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0
dXJuIHN0b3JhZ2VGb3JtYXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1RleHR1cmVGb3Jt
YXRTdXBwb3J0ZWRGb3JTdG9yYWdlKEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICByZXR1cm4gZm9y
bWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBIHx8IGZvcm1hdCA9PSBFeHRlbnNpb25zM0Q6
OkJHUkFfRVhUOworfQorCitib29sIENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCit7CisgICAgQVNTRVJUKCFtX2NvbnRleHQpOwor
ICAgIEFTU0VSVCghbV90ZXh0dXJlSWQpOworICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHkoKSk7
CisgICAgQVNTRVJUKG1fZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0IgfHwgbV9mb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEgfHwgbV9mb3JtYXQgPT0gRXh0ZW5zaW9uczNE
OjpCR1JBX0VYVCk7CisKKyAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgIG1fdGV4dHVyZUlk
ID0gR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOworCisgICAgR0xD
KG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpKTsKKyAgICAvLyBEbyBiYXNpYyBsaW5lYXIgZmls
dGVyaW5nIG9uIHJlc2l6ZS4KKyAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAg
ICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAvLyBOUE9UIHRleHR1cmVzIGlu
IEdMIEVTIG9ubHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUgaXMgc2V0IHRvIEdyYXBoaWNzQ29u
dGV4dDNEOjpDTEFNUF9UT19FREdFLgorICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURH
RSkpOworICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
V1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworCisgICAgaWYgKG1f
dXNlVGV4dHVyZVVzYWdlSGludCAmJiBtX2ZvckZyYW1lYnVmZmVyQXR0YWNobWVudCkKKyAgICAg
ICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9V
U0FHRV9BTkdMRSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfQU5HTEUpKTsKKyAgICBpZiAobV91c2VUZXh0dXJlU3RvcmFnZUV4dCAmJiBpc1RleHR1cmVG
b3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdlKG1fZm9ybWF0KSkgeworICAgICAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICBHQzNEZW51bSBzdG9yYWdl
Rm9ybWF0ID0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChtX2Zvcm1hdCk7CisgICAgICAgIGV4dGVu
c2lvbnMtPnRleFN0b3JhZ2UyREVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMSwg
c3RvcmFnZUZvcm1hdCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4SW1hZ2UyRFJl
c291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgbV9mb3JtYXQsIG1f
c2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIG1fZm9ybWF0LCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSkpOworICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4
dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApKTsKKworICAg
IHJldHVybiBtX3RleHR1cmVJZDsKK30KKwordm9pZCBDQ1Njb3BlZFRleHR1cmU6OnByZXBhcmUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBib29sIGZvckZyYW1lYnVmZmVy
QXR0YWNobWVudCkKK3sKKyAgICBBU1NFUlQoIW1fdGV4dHVyZUlkKTsKKworICAgIG1fc2l6ZSA9
IHNpemU7CisgICAgbV9mb3JtYXQgPSBmb3JtYXQ7CisgICAgbV9mb3JGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgPSBmb3JGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ7Cit9CisKK3ZvaWQgQ0NTY29wZWRUZXh0
dXJlOjpjbGVhcigpCit7CisgICAgaWYgKG1fdGV4dHVyZUlkKQorICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVRleHR1cmUobV90ZXh0dXJlSWQpOworICAgIG1fdGV4dHVyZUlkID0gMDsKKyAgICBt
X2NvbnRleHQuY2xlYXIoKTsKK30KKworc2l6ZV90IENDU2NvcGVkVGV4dHVyZTo6Ynl0ZXMoKSBj
b25zdAoreworICAgIGlmICghbV90ZXh0dXJlSWQpCisgICAgICAgIHJldHVybiAwdTsKKworICAg
IHJldHVybiBtYXliZUJ5dGVzKCk7Cit9CisKK3NpemVfdCBDQ1Njb3BlZFRleHR1cmU6Om1heWJl
Qnl0ZXMoKSBjb25zdAoreworICAgIGlmIChtX3NpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gMHU7CisKKyAgICByZXR1cm4gQ0NTY29wZWRUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMobV9z
aXplLCBtX2Zvcm1hdCk7Cit9CisKK3NpemVfdCBDQ1Njb3BlZFRleHR1cmU6Om1lbW9yeVNpemVC
eXRlcyhjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCit7CisgICAgdW5zaWdu
ZWQgaW50IGNvbXBvbmVudHNQZXJQaXhlbDsKKyAgICB1bnNpZ25lZCBpbnQgYnl0ZXNQZXJDb21w
b25lbnQ7CisgICAgaWYgKCFHcmFwaGljc0NvbnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQ
YXJhbWV0ZXJzKGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsICZjb21w
b25lbnRzUGVyUGl4ZWwsICZieXRlc1BlckNvbXBvbmVudCkpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwdTsKKyAgICB9CisgICAgcmV0dXJuIGNvbXBv
bmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9uZW50ICogc2l6ZS53aWR0aCgpICogc2l6ZS5o
ZWlnaHQoKTsKK30KKworYm9vbCBDQ1Njb3BlZFRleHR1cmU6Om1fdXNlVGV4dHVyZVVzYWdlSGlu
dCA9IGZhbHNlOworYm9vbCBDQ1Njb3BlZFRleHR1cmU6Om1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQg
PSBmYWxzZTsKKwordm9pZCBDQ1Njb3BlZFRleHR1cmU6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMo
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKQoreworICAgIG1f
dXNlVGV4dHVyZVVzYWdlSGludCA9IGNhcGFiaWxpdGllcy51c2luZ1RleHR1cmVVc2FnZUhpbnQ7
CisgICAgbV91c2VUZXh0dXJlU3RvcmFnZUV4dCA9IGNhcGFiaWxpdGllcy51c2luZ1RleHR1cmVT
dG9yYWdlRXh0ZW5zaW9uOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiZWU2OTNiMDQ3NGQ3ZDA5YjU2OTNmMTJhYWI2YjA0N2MyNzQ0MDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njb3BlZFRleHR1cmUuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1Njb3Bl
ZFRleHR1cmVfaAorI2RlZmluZSBDQ1Njb3BlZFRleHR1cmVfaAorCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllczsKKworY2xhc3MgQ0NTY29wZWRUZXh0dXJlIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ1Njb3BlZFRleHR1cmUpOworcHVibGljOgorICAgIENDU2NvcGVkVGV4dHVy
ZSgpOworICAgIH5DQ1Njb3BlZFRleHR1cmUoKTsKKworICAgIHZvaWQgcHJlcGFyZShjb25zdCBJ
bnRTaXplJiwgR0MzRGVudW0gZm9ybWF0LCBib29sIGZvckZyYW1lYnVmZmVyQXR0YWNobWVudCA9
IGZhbHNlKTsKKworICAgIGJvb2wgY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
KTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dHVyZUlkOyB9CisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQorICAgIEdDM0RlbnVtIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0
OyB9CisKKyAgICBzaXplX3QgYnl0ZXMoKSBjb25zdDsKKyAgICBzaXplX3QgbWF5YmVCeXRlcygp
IGNvbnN0OworCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlk
OyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVNpemVCeXRlcyhjb25zdCBJbnRTaXplJiwg
R0MzRGVudW0gZm9ybWF0KTsKKworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRp
ZXMoY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYpOworCitwcml2YXRlOgorICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIHVuc2lnbmVkIG1fdGV4dHVy
ZUlkOworICAgIEludFNpemUgbV9zaXplOworICAgIEdDM0RlbnVtIG1fZm9ybWF0OworICAgIGJv
b2wgbV9mb3JGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ7CisKKyAgICBzdGF0aWMgYm9vbCBtX3VzZVRl
eHR1cmVVc2FnZUhpbnQ7CisgICAgc3RhdGljIGJvb2wgbV91c2VUZXh0dXJlU3RvcmFnZUV4dDsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA1NDlm
ZGZhNDRiODRhZTFjYTc1MWFkZTQ0MjdjM2Q3YzhjYzk4YTU1Li5jZjRmZDkxMGQxZjRlZDc4MWUy
NWQ5MDQ2OGY2NTI5NWQyMzM3YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAg
LTg2LDYgKzg2LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaCcs
CiAgICAgICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAn
dGVzdHMvQ0NTY29wZWRUZXh0dXJlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2lu
Z2xlVGhyZWFkUHJveHlUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGVzdENvbW1vbi5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY29wZWRUZXh0dXJl
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRl
c3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIyZGFhYzJkMGYwOTE2NTc4MmY3MTk4MjFkZWVjMjgzZGI3MmQ2
NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2Nv
cGVkVGV4dHVyZVRlc3QuY3BwCkBAIC0wLDAgKzEsMjQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIKKworI2lu
Y2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisKKyNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgorI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyA6OnRlc3Rp
bmc6Ok1vY2s7Cit1c2luZyA6OnRlc3Rpbmc6Ol87CisKK25hbWVzcGFjZSB7CisKK1RFU1QoQ0NT
Y29wZWRUZXh0dXJlVGVzdCwgTmV3U2NvcGVkVGV4dHVyZSkKK3sKKyAgICBDQ1Njb3BlZFRleHR1
cmUgdGV4dHVyZTsKKworICAgIC8vIE5ldyBzY29wZWQgdGV4dHVyZXMgZG8gbm90IGhvbGQgYSB0
ZXh0dXJlIHlldC4KKyAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZSk7CisgICAgRVhQRUNUX0VRKDB1
LCB0ZXh0dXJlLmlkKCkpOworCisgICAgLy8gTmV3IHNjb3BlZCB0ZXh0dXJlcyBkbyBub3QgaGF2
ZSBhIHNpemUgeWV0LgorICAgIEVYUEVDVF9FUShJbnRTaXplKCksIHRleHR1cmUuc2l6ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoMHUsIHRleHR1cmUubWF5YmVCeXRlcygpKTsKK30KKworVEVTVChDQ1Nj
b3BlZFRleHR1cmVUZXN0LCBQcmVwYXJlU2NvcGVkVGV4dHVyZSkKK3sKKyAgICBDQ1Njb3BlZFRl
eHR1cmUgdGV4dHVyZTsKKyAgICB0ZXh0dXJlLnByZXBhcmUoSW50U2l6ZSgzMCwgMzApLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSk7CisKKyAgICAvLyBUaGUgdGV4dHVyZSBoYXMgYW4gdW5hbGxv
Y2F0ZWQgYnl0ZS1zaXplIG5vdy4KKyAgICBzaXplX3QgZXhwZWN0ZWRCeXRlcyA9IDMwICogMzAg
KiA0OworICAgIEVYUEVDVF9FUShleHBlY3RlZEJ5dGVzLCB0ZXh0dXJlLm1heWJlQnl0ZXMoKSk7
CisKKyAgICAvLyBCdXQgbm90IGFuIGFsbG9jYXRlZCBieXRlLXNpemUuCisgICAgRVhQRUNUX0VR
KDB1LCB0ZXh0dXJlLmJ5dGVzKCkpOworCisgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmUpOworICAg
IEVYUEVDVF9FUShHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgdGV4dHVyZS5mb3JtYXQoKSk7Cisg
ICAgRVhQRUNUX0VRKEludFNpemUoMzAsIDMwKSwgdGV4dHVyZS5zaXplKCkpOworfQorCitURVNU
KENDU2NvcGVkVGV4dHVyZVRlc3QsIENyZWF0ZVNjb3BlZFRleHR1cmUpCit7CisgICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEKCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpOworCisgICAgQ0NTY29wZWRUZXh0dXJlIHRleHR1cmU7CisgICAgdGV4dHVyZS5w
cmVwYXJlKEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIHRl
eHR1cmUuY3JlYXRlKGNvbnRleHQpOworCisgICAgLy8gVGhlIHRleHR1cmUgaGFzIGFuIGFsbG9j
YXRlZCBieXRlLXNpemUgbm93LgorICAgIHNpemVfdCBleHBlY3RlZEJ5dGVzID0gMzAgKiAzMCAq
IDQ7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkQnl0ZXMsIHRleHR1cmUubWF5YmVCeXRlcygpKTsK
KyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRCeXRlcywgdGV4dHVyZS5ieXRlcygpKTsKKworICAgIEVY
UEVDVF9UUlVFKHRleHR1cmUpOworICAgIEVYUEVDVF9FUShHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgdGV4dHVyZS5mb3JtYXQoKSk7CisgICAgRVhQRUNUX0VRKEludFNpemUoMzAsIDMwKSwgdGV4
dHVyZS5zaXplKCkpOworfQorCisvLyBGYWtlIFdlYkdyYXBoaWNzQ29udGV4dDNEIHRoYXQgdHJh
Y2tzIHRoZSBudW1iZXIgb2YgdGV4dHVyZXMgaW4gdXNlLgorY2xhc3MgVHJhY2tpbmdXZWJHcmFw
aGljc0NvbnRleHQzRCA6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgeworcHVibGlj
OgorICAgIFRyYWNraW5nV2ViR3JhcGhpY3NDb250ZXh0M0QoKQorICAgICAgICA6IG1fbmV4dFRl
eHR1cmVJZCgxKQorICAgICAgICAsIG1fbnVtVGV4dHVyZXMoMCkKKyAgICB7IH0KKworICAgIHZp
cnR1YWwgV2ViR0xJZCBjcmVhdGVUZXh0dXJlKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIFdl
YkdMSWQgaWQgPSBtX25leHRUZXh0dXJlSWQ7CisgICAgICAgICsrbV9uZXh0VGV4dHVyZUlkOwor
CisgICAgICAgIG1fdGV4dHVyZXMuc2V0KGlkLCB0cnVlKTsKKyAgICAgICAgKyttX251bVRleHR1
cmVzOworICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZVRleHR1cmUoV2ViR0xJZCBpZCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmICghbV90ZXh0
dXJlcy5nZXQoaWQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fdGV4dHVyZXMu
c2V0KGlkLCBmYWxzZSk7CisgICAgICAgIC0tbV9udW1UZXh0dXJlczsKKyAgICB9CisKKyAgICBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIodGhpcyksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgfQorCisgICAgdW5zaWduZWQgbnVt
VGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX251bVRleHR1cmVzOyB9CisKK3ByaXZhdGU6Cisg
ICAgV2ViR0xJZCBtX25leHRUZXh0dXJlSWQ7CisgICAgSGFzaE1hcDxXZWJHTElkLCBib29sPiBt
X3RleHR1cmVzOworICAgIHVuc2lnbmVkIG1fbnVtVGV4dHVyZXM7Cit9OworCitURVNUKENDU2Nv
cGVkVGV4dHVyZVRlc3QsIFNjb3BlZFRleHR1cmVJc0RlbGV0ZWQpCit7CisgICAgVHJhY2tpbmdX
ZWJHcmFwaGljc0NvbnRleHQzRCogdHJhY2tpbmdDb250ZXh0ID0gbmV3IFRyYWNraW5nV2ViR3Jh
cGhpY3NDb250ZXh0M0Q7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0g
dHJhY2tpbmdDb250ZXh0LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKworICAgIHsKKyAgICAg
ICAgQ0NTY29wZWRUZXh0dXJlIHRleHR1cmU7CisgICAgICAgIHRleHR1cmUucHJlcGFyZShJbnRT
aXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKworICAgICAgICBFWFBFQ1Rf
RVEoMHUsIHRyYWNraW5nQ29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CisgICAgICAgIHRleHR1cmUu
Y3JlYXRlKGNvbnRleHQpOworICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlKTsKKyAgICAgICAg
RVhQRUNUX0VRKDF1LCB0cmFja2luZ0NvbnRleHQtPm51bVRleHR1cmVzKCkpOworICAgIH0KKwor
ICAgIEVYUEVDVF9FUSgwdSwgdHJhY2tpbmdDb250ZXh0LT5udW1UZXh0dXJlcygpKTsKKworICAg
IHsKKyAgICAgICAgQ0NTY29wZWRUZXh0dXJlIHRleHR1cmU7CisgICAgICAgIHRleHR1cmUucHJl
cGFyZShJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKworICAgICAg
ICBFWFBFQ1RfRVEoMHUsIHRyYWNraW5nQ29udGV4dC0+bnVtVGV4dHVyZXMoKSk7CisgICAgICAg
IHRleHR1cmUuY3JlYXRlKGNvbnRleHQpOworICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCB0cmFja2luZ0NvbnRleHQtPm51bVRleHR1cmVzKCkpOwor
ICAgICAgICB0ZXh0dXJlLmNsZWFyKCk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgdHJhY2tpbmdD
b250ZXh0LT5udW1UZXh0dXJlcygpKTsKKyAgICB9Cit9CisKK2NsYXNzIE1vY2tXZWJHcmFwaGlj
c0NvbnRleHQzRCA6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgeworcHVibGljOgor
ICAgIE1PQ0tfTUVUSE9EMyh0ZXhQYXJhbWV0ZXJpLCB2b2lkKFdHQzNEZW51bSB0YXJnZXQsIFdH
QzNEZW51bSBwbmFtZSwgV0dDM0RpbnQgcGFyYW0pKTsKKworICAgIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCisgICAgeworICAgICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2Vi
Q29udGV4dChhZG9wdFB0cih0aGlzKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KTsKKyAgICB9CisKK3ByaXZhdGU6Cit9OworCitURVNUKENDU2NvcGVkVGV4
dHVyZVRlc3QsIENyZWF0ZVNjb3BlZFRleHR1cmVGb3JGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpCit7
CisgICAgTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEKiBtb2NrQ29udGV4dCA9IG5ldyBNb2NrV2Vi
R3JhcGhpY3NDb250ZXh0M0Q7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0
ID0gbW9ja0NvbnRleHQtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworCisgICAgLy8gVGhpcyB0
ZXh0dXJlIGlzIHNldCBmb3IgdXNlIGFzIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQsIGJ1dCB0aGUg
Y2FwYWJpbGl0eSB0byBkbyBzbyBoYXMgbm90IGJlZW4gc2V0LgorICAgIGJvb2wgZm9yRnJhbWVi
dWZmZXJBdHRhY2htZW50ID0gdHJ1ZTsKKworICAgIHsKKyAgICAgICAgQ0NTY29wZWRUZXh0dXJl
IHRleHR1cmU7CisgICAgICAgIHRleHR1cmUucHJlcGFyZShJbnRTaXplKDMwLCAzMCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBLCBmb3JGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpOworCisgICAgICAg
IC8vIFRoaXMgaXMgYWx3YXlzIGRvbmUgdG8gc2V0IHVwIHRoZSB0ZXh0dXJlLgorICAgICAgICBF
WFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmkoXywgXywgXykpLlRpbWVzKDQp
OworCisgICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRV
UkVfVVNBR0VfQU5HTEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0FOR0xFKSkKKyAgICAgICAgICAgICAgICAuVGltZXMoMCk7CisKKyAgICAgICAgdGV4
dHVyZS5jcmVhdGUoY29udGV4dCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmUpOworCisg
ICAgICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKG1vY2tDb250ZXh0KTsKKyAg
ICB9CisKKyAgICAvLyBQcmV0ZW5kIHdlIGhhdmUgdGhlIGNhcGFiaWxpdHkgb2YgaGludGluZyB0
ZXh0dXJlcyBhcyBiZWluZyB1c2VkIGFzIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQuCisgICAgTGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXM7CisgICAgY2FwYWJpbGl0aWVzLnVz
aW5nVGV4dHVyZVVzYWdlSGludCA9IHRydWU7CisgICAgQ0NTY29wZWRUZXh0dXJlOjppbml0aWFs
aXplQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcyk7CisKKyAgICAvLyBUaGlzIHRleHR1cmUgaXMg
Tk9UIHNldCBmb3IgdXNlIGFzIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQuCisgICAgZm9yRnJhbWVi
dWZmZXJBdHRhY2htZW50ID0gZmFsc2U7CisKKyAgICB7CisgICAgICAgIENDU2NvcGVkVGV4dHVy
ZSB0ZXh0dXJlOworICAgICAgICB0ZXh0dXJlLnByZXBhcmUoSW50U2l6ZSgzMCwgMzApLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSwgZm9yRnJhbWVidWZmZXJBdHRhY2htZW50KTsKKworICAgICAg
ICAvLyBUaGlzIGlzIGFsd2F5cyBkb25lIHRvIHNldCB1cCB0aGUgdGV4dHVyZS4KKyAgICAgICAg
RVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKF8sIF8sIF8pKS5UaW1lcyg0
KTsKKworICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9URVhU
VVJFX1VTQUdFX0FOR0xFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9BTkdMRSkpCisgICAgICAgICAgICAgICAgLlRpbWVzKDApOworCisgICAgICAgIHRl
eHR1cmUuY3JlYXRlKGNvbnRleHQpOworICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlKTsKKwor
ICAgICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucyhtb2NrQ29udGV4dCk7Cisg
ICAgfQorCisgICAgLy8gVGhpcyB0ZXh0dXJlIGlzIHNldCBmb3IgdXNlIGFzIGZyYW1lYnVmZmVy
IGF0dGFjaG1lbnQsIGFuZCB3ZSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIGRvIHNvIHNldCBub3cu
CisgICAgZm9yRnJhbWVidWZmZXJBdHRhY2htZW50ID0gdHJ1ZTsKKworICAgIHsKKyAgICAgICAg
Q0NTY29wZWRUZXh0dXJlIHRleHR1cmU7CisgICAgICAgIHRleHR1cmUucHJlcGFyZShJbnRTaXpl
KDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBmb3JGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQpOworCisgICAgICAgIC8vIFRoaXMgaXMgYWx3YXlzIGRvbmUgdG8gc2V0IHVwIHRoZSB0ZXh0
dXJlLgorICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmkoXywg
XywgXykpLlRpbWVzKDQpOworCisgICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgdGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgRXh0ZW5zaW9uczNEQ2hy
b21pdW06OkdMX1RFWFRVUkVfVVNBR0VfQU5HTEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKSkKKyAgICAgICAgICAgICAgICAuVGltZXMoMSk7
CisKKyAgICAgICAgdGV4dHVyZS5jcmVhdGUoY29udGV4dCk7CisgICAgICAgIEVYUEVDVF9UUlVF
KHRleHR1cmUpOworCisgICAgICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKG1v
Y2tDb250ZXh0KTsKKyAgICB9Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148420</attachid>
            <date>2012-06-19 14:22:09 -0700</date>
            <delta_ts>2012-06-19 14:23:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-88924-20120619172209.patch</filename>
            <type>text/plain</type>
            <size>6194</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYzOGYwOGU4MjQxNWY3
ZTEzNDFiZjVlMWRmNTNkOWY5ZDkyYjMyMy4uNmViMjk1ODM2MTBlOTk2NDIyNGE3MGI5ZWE1YTIx
ZDY4NWRlY2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw5ICsxLDMwIEBACiAyMDEyLTA2LTE5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IGFuIGFsbG9jYXRpb24gc3RlcCBmb3IgQ0NSZW5kZXJlciBiZWZvcmUgZHJhd2luZyBhIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICBUaGlzIHN0
ZXAgd2lsbCBiZSB1c2VkIHRvIGRlY2lkZSB3aGljaCBSZW5kZXJQYXNzIHRleHR1cmVzIGNhbiBi
ZSBrZXB0CisgICAgICAgIGFsaXZlIGFuZCBkbyBub3QgbmVlZCB0byBiZSBkcmF3biBhZ2Fpbi4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoQ0NS
ZW5kZXJlcik6CisKKzIwMTItMDYtMTkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CisKICAgICAgICAgW2Nocm9taXVtXSBDcmVhdGUgQ0NTY29wZWRUZXh0dXJlIGNsYXNzIGZv
ciBjcmVhdGluZy9mcmVlaW5nIHRleHR1cmVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTQ4NQogCi0gICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCiAKICAgICAgICAg
VGhpcyBjbGFzcyBwcm92aWRlcyBhIHN0YW5kYXJkIHdheSB0byBjcmVhdGUgdGV4dHVyZSBpZHMg
aW4gYSB3YXkgdGhhdAogICAgICAgICBlbnN1cmVzIHRoZXkgd2lsbCBiZSBmcmVlZCBsYXRlci4g
SXQgaXMgbWVhbnQgdG8gcmVwbGFjZSB0aGUgdXNlIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcAppbmRleCAxNjE3MjljOTU5M2Q5MzVjNDAyZDNlMzk3ZTI4YzllYTA3Njg4
MGI0Li44OWRkZWY1NDdjMTQwZWViZWQ1MjgxYTY4NTBjNmQ1ZjM2MTRjYmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQyOSw2ICs0MjksMTcgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFyUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3Mq
IHJlbmRlclBhc3MsIGNvbnMKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShH
cmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CiB9CiAKKwordm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IEND
UmVuZGVyUGFzc0xpc3QmIHJlbmRlclBhc3Nlc0luRHJhd09yZGVyKQoreworICAgIC8vIEZJWE1F
OiBHZXQgdGhpcyBtZW1vcnkgbGltaXQgZnJvbSBHUFUgTWVtb3J5IE1hbmFnZXIKKyAgICBzaXpl
X3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5j
dXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKKyAgICBzaXplX3QgbWF4TGltaXRCeXRlcyA9IFRleHR1
cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7CisgICAgc2l6ZV90IG1l
bW9yeUxpbWl0Qnl0ZXMgPSBtYXhMaW1pdEJ5dGVzIC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA+
IDB1ID8gbWF4TGltaXRCeXRlcyAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAwdTsKKworICAg
IG1faW1wbFRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0
Qnl0ZXMpOworfQorCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJh
bWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcykKIHsKICAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgb25jZSBmcmFtZWJ1ZmZlciBpcyBhdXRvbWF0aWNhbGx5IHJlY3JlYXRlZCBv
biBmaXJzdCB1c2UKQEAgLTQzNywxMSArNDQ4LDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBhc3MK
ICAgICBtX2RlZmF1bHRSZW5kZXJQYXNzID0gcm9vdFJlbmRlclBhc3M7CiAgICAgQVNTRVJUKG1f
ZGVmYXVsdFJlbmRlclBhc3MpOwogCi0gICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMg
PSBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCk7Ci0g
ICAgc2l6ZV90IG1heExpbWl0ID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSgpKTsKLSAgICBzaXplX3QgbmV3TGltaXQgPSAobWF4TGltaXQgPiBjb250ZW50c01l
bW9yeVVzZUJ5dGVzKSA/IG1heExpbWl0IC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA6IDA7Ci0g
ICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobmV3TGltaXQp
OwotCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGMzNjlkZDJhNzcwZWVkMDhl
MTY5ZTRlYTAyNDA3OTk4NWQyMGIzOTYuLjZiMzlkOTEyOGIxZDY5MjY1N2Q2NDQ5YTk3MTAzMzMy
YjEzZGJiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC03Niw2ICs3
Niw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEZsb2F0UXVhZCYgc2hhcmVkR2VvbWV0cnlRdWFk
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeVF1YWQ7IH0KIAorICAgIHZpcnR1YWwg
dm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBh
c3NMaXN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKGNv
bnN0IENDUmVuZGVyUGFzcyogZGVmYXVsdFJlbmRlclBhc3MpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJl
Y3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZp
bmlzaERyYXdpbmdGcmFtZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcAppbmRleCA0OTRmOTA4NWJmNjA2MWYxYTk3MjVhM2I3YTQ4NjcyMzE1NWE1YmI1
Li4yMWE2NzJlOGZhNTc2NGE5ODNiMjM2MGVlNjQ4NjNjNTBiYzQxNGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzM2LDYgKzMzNiw3IEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUp
CiAgICAgaWYgKGRyYXdGcmFtZSkKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01l
dHJpY3MoKS5yZWNvcmRNZXRyaWNzKHRoaXMpOwogCisgICAgbV9sYXllclJlbmRlcmVyLT5kZWNp
ZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShmcmFtZS5yZW5kZXJQYXNzZXMpOwogICAg
IHJlbW92ZVBhc3Nlc1dpdGhDYWNoZWRUZXh0dXJlcyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1l
LnNraXBwZWRQYXNzZXMpOwogCiAgICAgcmV0dXJuIGRyYXdGcmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIu
aAppbmRleCAzMmY4MzU4Yzc0NGRjMGU4YzE4ZTk0YjA2NGE5MWQ1MDQ4MDVlZmE2Li4xMTU5MGUw
MDYzNDdhNTg3NTVkN2UyYTMwZGRiMzkxZmJhYmQxZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCkBA
IC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ1JlbmRlclBh
c3M7CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4dHVyZUNvcGllcjsKIGNsYXNz
IFRleHR1cmVNYW5hZ2VyOwpAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0
cml4OyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9y
RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiBkZWZhdWx0UmVuZGVyUGFzcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqLCBj
b25zdCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFBhc3MpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148422</attachid>
            <date>2012-06-19 14:23:49 -0700</date>
            <delta_ts>2012-06-19 15:19:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-88924-20120619172348.patch</filename>
            <type>text/plain</type>
            <size>5889</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY0OTNmMjQ3ZTMyNDRh
NWRmOTM1Yjc0MWZmMDYyZGUxM2EyMjExZi4uYWRmNmQ4NzBiN2Y5ZTJlNDIwMGE3YzE2ZWZmYzIy
NGViN2UxMzE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA2LTE5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IGFuIGFsbG9jYXRpb24gc3RlcCBmb3IgQ0NSZW5kZXJlciBiZWZvcmUgZHJhd2luZyBhIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODkyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICBUaGlzIHN0
ZXAgd2lsbCBiZSB1c2VkIHRvIGRlY2lkZSB3aGljaCBSZW5kZXJQYXNzIHRleHR1cmVzIGNhbiBi
ZSBrZXB0CisgICAgICAgIGFsaXZlIGFuZCBkbyBub3QgbmVlZCB0byBiZSBkcmF3biBhZ2Fpbi4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoQ0NS
ZW5kZXJlcik6CisKIDIwMTItMDYtMTkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIDIwMTItMDYtMTkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MTYxNzI5Yzk1OTNkOTM1YzQwMmQzZTM5N2UyOGM5ZWEwNzY4ODBiNC4uODlkZGVmNTQ3YzE0MGVl
YmVkNTI4MWE2ODUwYzZkNWYzNjE0Y2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC00MjksNiArNDI5LDE3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjbGVhclJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBjb25zCiAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlND
SVNTT1JfVEVTVCkpOwogfQogCisKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVS
ZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5k
ZXJQYXNzZXNJbkRyYXdPcmRlcikKK3sKKyAgICAvLyBGSVhNRTogR2V0IHRoaXMgbWVtb3J5IGxp
bWl0IGZyb20gR1BVIE1lbW9yeSBNYW5hZ2VyCisgICAgc2l6ZV90IGNvbnRlbnRzTWVtb3J5VXNl
Qnl0ZXMgPSBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVz
KCk7CisgICAgc2l6ZV90IG1heExpbWl0Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0
Qnl0ZXModmlld3BvcnRTaXplKCkpOworICAgIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzID0gbWF4
TGltaXRCeXRlcyAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPiAwdSA/IG1heExpbWl0Qnl0ZXMg
LSBjb250ZW50c01lbW9yeVVzZUJ5dGVzIDogMHU7CisKKyAgICBtX2ltcGxUZXh0dXJlTWFuYWdl
ci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzKTsKK30KKwogdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFz
cyogcm9vdFJlbmRlclBhc3MpCiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgZnJh
bWVidWZmZXIgaXMgYXV0b21hdGljYWxseSByZWNyZWF0ZWQgb24gZmlyc3QgdXNlCkBAIC00Mzcs
MTEgKzQ0OCw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFt
ZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzCiAgICAgbV9kZWZhdWx0UmVuZGVy
UGFzcyA9IHJvb3RSZW5kZXJQYXNzOwogICAgIEFTU0VSVChtX2RlZmF1bHRSZW5kZXJQYXNzKTsK
IAotICAgIHNpemVfdCBjb250ZW50c01lbW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVB
bGxvY2F0b3ItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOwotICAgIHNpemVfdCBtYXhMaW1pdCA9
IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSk7Ci0gICAgc2l6
ZV90IG5ld0xpbWl0ID0gKG1heExpbWl0ID4gY29udGVudHNNZW1vcnlVc2VCeXRlcykgPyBtYXhM
aW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAwOwotICAgIG1faW1wbFRleHR1cmVNYW5h
Z2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG5ld0xpbWl0KTsKLQogICAgIGlmICh2aWV3cG9y
dFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaAppbmRleCBjMzY5ZGQyYTc3MGVlZDA4ZTE2OWU0ZWEwMjQwNzk5ODVkMjBi
Mzk2Li42YjM5ZDkxMjhiMWQ2OTI2NTdkNjQ0OWE5NzEwMzMzMmIxM2RiYjA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBGbG9hdFF1YWQmIHNoYXJlZEdlb21ldHJ5UXVhZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkR2VvbWV0cnlRdWFkOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUmVuZGVyUGFz
c0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIGRl
ZmF1bHRSZW5kZXJQYXNzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlbmRlclBh
c3MoY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFn
ZVJlY3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNDk0
ZjkwODViZjYwNjFmMWE5NzI1YTNiN2E0ODY3MjMxNTVhNWJiNS4uMjFhNjcyZThmYTU3NjRhOTgz
YjIzNjBlZTY0ODYzYzUwYmM0MTRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKQEAgLTMzNiw2ICszMzYsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNh
bGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAgIGlmIChkcmF3RnJhbWUp
CiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucmVjb3JkTWV0cmlj
cyh0aGlzKTsKIAorICAgIG1fbGF5ZXJSZW5kZXJlci0+ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRp
b25zRm9yRnJhbWUoZnJhbWUucmVuZGVyUGFzc2VzKTsKICAgICByZW1vdmVQYXNzZXNXaXRoQ2Fj
aGVkVGV4dHVyZXMoZnJhbWUucmVuZGVyUGFzc2VzLCBmcmFtZS5za2lwcGVkUGFzc2VzKTsKIAog
ICAgIHJldHVybiBkcmF3RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXggMzJmODM1OGM3NDRk
YzBlOGMxOGU5NGIwNjRhOTFkNTA0ODA1ZWZhNi4uMTE1OTBlMDA2MzQ3YTU4NzU1ZDdlMmEzMGRk
YjM5MWZiYWJkMWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaApAQCAtMjksMTIgKzI5LDEyIEBACiAj
aW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgVGV4dHVyZUFs
bG9jYXRvcjsKIGNsYXNzIFRleHR1cmVDb3BpZXI7CiBjbGFzcyBUZXh0dXJlTWFuYWdlcjsKQEAg
LTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25N
YXRyaXg7IH0KICAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB3aW5k
b3dNYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd01hdHJpeDsgfQogCisgICAgdmlydHVh
bCB2b2lkIGRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVy
UGFzc0xpc3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0
IENDUmVuZGVyUGFzcyogZGVmYXVsdFJlbmRlclBhc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRSZWN0JiByb290
U2Npc3NvclJlY3RJbkN1cnJlbnRQYXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaERy
YXdpbmdGcmFtZSgpID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>