<?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>136693</bug_id>
          
          <creation_ts>2014-09-09 19:39:21 -0700</creation_ts>
          <short_desc>bmalloc should segregate medium-sized objects by line like it does for small-sized objects</short_desc>
          <delta_ts>2014-09-30 22:19:56 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1034226</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-09 19:39:21 -0700</bug_when>
    <thetext>bmalloc should segregate medium-sized objects by line like it does for small-sized objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034227</commentid>
    <comment_count>1</comment_count>
      <attachid>237879</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-09 19:53:26 -0700</bug_when>
    <thetext>Created attachment 237879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034230</commentid>
    <comment_count>2</comment_count>
      <attachid>237879</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-09-09 21:34:47 -0700</bug_when>
    <thetext>Comment on attachment 237879
Patch

You should upload this with USE_BMALLOC=1 for proper EWSing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034338</commentid>
    <comment_count>3</comment_count>
      <attachid>237895</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-10 09:30:44 -0700</bug_when>
    <thetext>Created attachment 237895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034339</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-10 09:31:03 -0700</bug_when>
    <thetext>New patch with bmalloc enabled for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034356</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-09-10 11:14:45 -0700</bug_when>
    <thetext>Regressions: Unexpected crashes (30)
  accessibility/accessibility-node-reparent.html [ Crash ]
  accessibility/crash-determining-aria-role-when-label-present.html [ Crash ]
  accessibility/table-cell-for-column-and-row-crash.html [ Crash ]
  animations/animation-end-event-short-iterations.html [ Crash ]
  animations/animation-matrix-negative-scale-unmatrix.html [ Crash ]
  animations/animation-welcome-safari.html [ Crash ]
  compositing/overflow/remove-overflow-crash2.html [ Crash ]
  crypto/crypto-random-values-limits.html [ Crash ]
  css3/filters/effect-reference-removed-while-pending-resources.html [ Crash ]
  editing/inserting/editable-html-element.html [ Crash ]
  editing/inserting/insert-paragraph-selection-outside-contenteditable.html [ Crash ]
  editing/selection/leak-document-with-selection-inside.html [ Crash ]
  editing/selection/move-by-character-6.html [ Crash ]
  editing/style/apply-through-end-of-document.html [ Crash ]
  fast/canvas/canvas-backing-store-reuse.html [ Crash ]
  fast/canvas/canvas-bg-multiple-removal.html [ Crash ]
  fast/canvas/change-context.html [ Crash ]
  fast/canvas/webgl/context-creation-and-destruction.html [ Crash ]
  fast/canvas/webgl/context-lost-restored.html [ Crash ]
  fast/canvas/webgl/oes-texture-half-float.html [ Crash ]
  fast/css-grid-layout/containing-block-grids.html [ Crash ]
  fast/css/border-radius-viewport-vmax.html [ Crash ]
  fast/css/css-imports-2.html [ Crash ]
  fast/css/css-keyframe-style-mutate-crash.html [ Crash ]
  fast/dom/Attr/access-after-element-destruction.html [ Crash ]
  fast/dom/boolean-attribute-reflection.html [ Crash ]
  http/tests/appcache/detached-iframe.html [ Crash ]
  http/tests/misc/bad-charset-alias.html [ Crash ]
  http/tests/misc/char-encoding-in-hidden-charset-field-default.html [ Crash ]
  http/tests/misc/delete-frame-during-readystatechange.html [ Crash ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034373</commentid>
    <comment_count>6</comment_count>
      <attachid>237899</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-10 13:04:16 -0700</bug_when>
    <thetext>Created attachment 237899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034689</commentid>
    <comment_count>7</comment_count>
      <attachid>237981</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-11 12:50:59 -0700</bug_when>
    <thetext>Created attachment 237981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034691</commentid>
    <comment_count>8</comment_count>
      <attachid>237982</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-11 12:55:00 -0700</bug_when>
    <thetext>Created attachment 237982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034714</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-11 13:58:13 -0700</bug_when>
    <thetext>Committed r173538: &lt;http://trac.webkit.org/changeset/173538&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038464</commentid>
    <comment_count>10</comment_count>
      <attachid>237982</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-30 22:19:46 -0700</bug_when>
    <thetext>Comment on attachment 237982
Patch

Clearing review flag to get this patch out of the review queue since it was committed per comment #4.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237879</attachid>
            <date>2014-09-09 19:53:26 -0700</date>
            <delta_ts>2014-09-10 09:30:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136693-20140909195321.patch</filename>
            <type>text/plain</type>
            <size>40945</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzQ1MykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE0LTA5LTA5ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYyBzaG91bGQgc2Vn
cmVnYXRlIG1lZGl1bS1zaXplZCBvYmplY3RzIGJ5IGxpbmUgbGlrZSBpdCBkb2VzIGZvciBzbWFs
bC1zaXplZCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzY2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHNoYXZlcyA0JSBvZmYgb2YgaGVhcCBzaXplIG9uIHRoZSBNYWxsb2NCZW5j
aCAqX21lbW9yeV93YXJuaW5nCisgICAgICAgIGJlbmNobWFya3MuCisKKyAgICAgICAgTm8gdGhy
b3VnaHB1dCBjaGFuZ2UuCisKKyAgICAgICAgSSBhbHNvIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRv
IGVsaW1pbmF0ZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBzbWFsbAorICAgICAgICBhbmQgbWVk
aXVtIG9iamVjdCBhbGxvY2F0aW9uIG9uIHRoZSBmYXN0IHBhdGgsIHNvIG1lZGl1bS1zaXplZCBv
YmplY3RzCisgICAgICAgIGNhbiBiZSBhbGxvY2F0ZWQgdGhlIG5vcm1hbCB3YXkgb24gdGhlIGZh
c3QgcGF0aC4gVGhpcyBtaWdodCBoZWxwIGF2b2lkCisgICAgICAgIGEgcGVyZm9ybWFuY2UgcmVn
cmVzc2lvbiBpZiB3ZSBuZWVkIHRvIHNocmluayBsaW5lIHNpemVzIGFuZCBraWNrCisgICAgICAg
IG1vcmUgb2JqZWN0cyB1cCBpbnRvIHRoZSBtZWRpdW0gY2F0ZWdvcnkuCisKKyAgICAgICAgVW5s
aWtlIHNtYWxsIG9iamVjdHMsIG1lZGl1bSBvYmplY3RzIHN0aWxsIGRvIG5vdCBzZWdyZWdhdGUg
YnkgcGFnZS4gVGhhdAorICAgICAgICBpcyBhIG1lbW9yeSB1c2UgcmVncmVzc2lvbi4gUHJlc3Vt
YWJseSwgdGhlIGNvc3Qgb2Ygd2FzdGVkIHBhZ2Ugc3BhY2UKKyAgICAgICAgb3V0d2VpZ2hzIHRo
ZSBiZW5lZml0IG9mIHNpbWlsYXIgbGlmZXRpbWUgaW4gdGhlIGNhc2Ugb2YgbWVkaXVtIG9iamVj
dHMKKyAgICAgICAgYmVjYXVzZSB0aGUgcmFuZ2Ugb2YgbWVkaXVtIHNpemVzIGlzIGdyZWF0ZXIg
dGhhbiB0aGUgcmFuZ2Ugb2Ygc21hbGwgc2l6ZXMuCisKKyAgICAgICAgKiBibWFsbG9jLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYm1hbGxvYy9BbGxvY2F0b3IuY3BwOgor
ICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjpBbGxvY2F0b3IpOgorICAgICAgICAoYm1hbGxv
Yzo6QWxsb2NhdG9yOjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6Omxv
Z1NtYWxsKToKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6bG9nTWVkaXVtKToKKyAgICAg
ICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZSk6CisgICAgICAgIChibWFs
bG9jOjpBbGxvY2F0b3I6OmxvZyk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0
b3I6OmFsbG9jYXRlTWVkaXVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0FsbG9jYXRv
ci5oOgorICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjphbGxvY2F0ZUZhc3RDYXNlKTogQWxs
b2NhdG9ycyBkb24ndCBrbm93IGEgcHJpb3JpCisgICAgICAgIHdoZXRoZXIgdGhleSBhbGxvY2F0
ZSBvdXQgb2Ygc21hbGwgb3IgbWVkaXVtIGxpbmVzLiBJbnN0ZWFkLCB3ZSBoYXZlIGEKKyAgICAg
ICAgbW9ub2xpdGhpYyBhcnJheSBvZiBidW1wIGFsbG9jYXRvcnMsIHdoaWNoIGhhcHBlbiB0byBh
bGxvY2F0ZSBpbnRvCisgICAgICAgIGRpZmZlcmVudC1zaXplZCBsaW5lcy4gVGhpcyBhbGxvd3Mg
dXMgdG8gYWxsb2NhdGUgbWVkaXVtLXNpemVkIG9iamVjdHMKKyAgICAgICAgb24gdGhlIGZhc3Qg
cGF0aCB3aXRob3V0IGFueSBleHRyYSBpbnN0cnVjdGlvbnMuCisKKyAgICAgICAgKiBibWFsbG9j
L0J1bXBBbGxvY2F0b3IuaDogQ29waWVkIGZyb20gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFs
bEFsbG9jYXRvci5oLgorICAgICAgICAoYm1hbGxvYzo6QnVtcEFsbG9jYXRvcjo6c2l6ZSk6Cisg
ICAgICAgIChibWFsbG9jOjpCdW1wQWxsb2NhdG9yOjpCdW1wQWxsb2NhdG9yKToKKyAgICAgICAg
KGJtYWxsb2M6OkJ1bXBBbGxvY2F0b3I6OmxpbmUpOgorICAgICAgICAoYm1hbGxvYzo6QnVtcEFs
bG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoYm1hbGxvYzo6QnVtcEFsbG9jYXRvcjo6b2Jq
ZWN0Q291bnQpOgorICAgICAgICAoYm1hbGxvYzo6QnVtcEFsbG9jYXRvcjo6ZGVyZWZDb3VudCk6
CisgICAgICAgIChibWFsbG9jOjpCdW1wQWxsb2NhdG9yOjpyZWZpbGwpOgorICAgICAgICAoYm1h
bGxvYzo6U21hbGxBbGxvY2F0b3I6OlNtYWxsQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KGJtYWxsb2M6OlNtYWxsQWxsb2NhdG9yOjpsaW5lKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxs
b2M6OlNtYWxsQWxsb2NhdG9yOjphbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9j
OjpTbWFsbEFsbG9jYXRvcjo6b2JqZWN0Q291bnQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxv
Yzo6U21hbGxBbGxvY2F0b3I6OmRlcmVmQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxv
Yzo6U21hbGxBbGxvY2F0b3I6OnJlZmlsbCk6IERlbGV0ZWQuIFJlbmFtZWQgU21hbGxBbGxvY2F0
b3IgdG8KKyAgICAgICAgQnVtcEFsbG9jYXRvciBiZWNhdXNlIGl0J3MgYSBnZW5lcmFsIHB1cnBv
c2UgYWxsb2NhdG9yIHRoYXQgd2UgdXNlIG5vdworICAgICAgICBmb3IgbWVkaXVtIG9iamVjdHMg
dG9vLgorCisgICAgICAgIFNpbmNlIG91ciB0eXBlIGRvZXNuJ3QgaW5kaWNhdGUgd2hhdCBraW5k
IG9mIGxpbmUgd2UgYWxsb2NhdGUgaW50bywKKyAgICAgICAgb3VyIGNsaWVudCBtdXN0IHNwZWNp
ZnkgdGhhdCBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlciB3aGVuIHBlcmZvcm1pbmcKKyAgICAgICAg
b3BlcmF0aW9ucyB0aGF0IGRlcGVuZCBvbiBsaW5lIHNpemUsIGFuZCB3ZSB2ZXJpZnkgd2l0aCBh
biBBU1NFUlQgdGhhdAorICAgICAgICBvdXIgY2xpZW50IGdvdCBpdCByaWdodC4KKworICAgICAg
ICAqIGJtYWxsb2MvRGVhbGxvY2F0b3IuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0
b3I6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0b3I6
OmFsbG9jYXRlU21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjphbGxv
Y2F0ZU1lZGl1bUxpbmUpOgorICAgICAgICAqIGJtYWxsb2MvRGVhbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBibWFsbG9jL0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVT
bWFsbExpbmVTbG93Q2FzZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZU1lZGl1
bUxpbmVTbG93Q2FzZSk6CisgICAgICAgICogYm1hbGxvYy9IZWFwLmg6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6
OmFsbG9jYXRlU21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlTWVk
aXVtTGluZSk6IFJlbmFtZWQgc21hbGxTaXplQ2xhc3MgdG8gYnVtcENsYXNzCisgICAgICAgIGJl
Y2F1c2UgaXQncyBub3QganVzdCBmb3Igc21hbGwgb2JqZWN0cyBhbnltb3JlLCBhbmQgaXQgbmV2
ZXIgcmVhbGx5CisgICAgICAgIGNvcnJlc3BvbmRlZCB0byB0aGUgbGl0ZXJhbCBub3Rpb24gb2Yg
YSBzaXplIGNsYXNzLgorCisgICAgICAgICogYm1hbGxvYy9MaW5lLmg6CisgICAgICAgIChibWFs
bG9jOjpMaW5lPFRyYWl0cz46OmNvbmN1cnJlbnRSZWYpOgorCisgICAgICAgICogYm1hbGxvYy9N
ZWRpdW1BbGxvY2F0b3IuaDogUmVtb3ZlZC4gT25seSBvbmUgd2F5IHRvIGJ1bXAgYWxsb2NhdGUg
bm93LgorCisgICAgICAgICogYm1hbGxvYy9PYmplY3RUeXBlLmg6CisgICAgICAgIChibWFsbG9j
Ojppc01lZGl1bSk6CisKKyAgICAgICAgKiBibWFsbG9jL1BhZ2UuaDoKKyAgICAgICAgKGJtYWxs
b2M6OlBhZ2U6OmJ1bXBDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpQYWdlOjpzZXRCdW1wQ2xh
c3MpOgorICAgICAgICAoYm1hbGxvYzo6UGFnZTo6c21hbGxTaXplQ2xhc3MpOiBEZWxldGVkLgor
ICAgICAgICAoYm1hbGxvYzo6UGFnZTo6c2V0U21hbGxTaXplQ2xhc3MpOiBEZWxldGVkLgorICAg
ICAgICAqIGJtYWxsb2MvU2l6ZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpidW1wQ2xh
c3MpOgorICAgICAgICAoYm1hbGxvYzo6U2l6ZXM6OnNtYWxsU2l6ZUNsYXNzRm9yKTogRGVsZXRl
ZC4gVXBkYXRlZCBmb3IgcmVuYW1lcy4KKworICAgICAgICAqIGJtYWxsb2MvU21hbGxBbGxvY2F0
b3IuaDogUmVtb3ZlZC4KKwogMjAxNC0wOS0wNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIGJtYWxsb2Mgc2hvdWxkIGhvbm9yIHRoZSBGYXN0TWFsbG9jIHN0
YXRpc3RpY3MgQVBJCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzMyMjIpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDcgQEAKIAkJMTRERDc4OTgxOEY0OEQ0QTAwOTUwNzAyIC8qIEFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ1RjY4NTYxNzlEQzhD
QTAwRDY1NTk4IC8qIEFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0REQ3ODk5MThGNDhENEEwMDk1MDcwMiAvKiBDYWNoZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0NDY5RTUxN0E0
NkJGRTAwRjlFQTFEIC8qIENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTRERDc4OUExOEY0OEQ0QTAwOTUwNzAyIC8qIERlYWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDVGNjg1
QTE3OURDOTAyMDBENjU1OTggLyogRGVhbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNERENzg5QjE4RjQ4RDRBMDA5NTA3MDIgLyog
TWVkaXVtQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDEzRTQ3MDE4QTA2NjE3MDA1NDZENjggLyogTWVkaXVtQWxsb2NhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTRERDc4OUMx
OEY0OEQ0QTAwOTUwNzAyIC8qIFNtYWxsQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEzRTQ2MjE4OURFMUNEMDA1NDZENjggLyogU21h
bGxBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkxNERENzg5QzE4RjQ4RDRBMDA5NTA3MDIgLyogQnVtcEFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQxM0U0NjIxODlERTFD
RDAwNTQ2RDY4IC8qIEJ1bXBBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxNERENzhCNDE4RjQ4RDZCMDA5NTA3MDIgLyogQ2h1bmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0N0FBQTk0
MThDRTVDQTYwMDIyMDFFNCAvKiBDaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0REQ3OEI1MThGNDhENkIwMDk1MDcwMiAvKiBMaW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERBMzIwNzE4
ODVGOUU2MDA3MjY5RTAgLyogTGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0REQ3OEI2MThGNDhENkIwMDk1MDcwMiAvKiBNZWRpdW1DaHVu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3QUFB
OEUxOENEODlFMzAwMjIwMUU0IC8qIE1lZGl1bUNodW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1LDkgKzc0LDggQEAKIAkJMTQxMDVFN0Ix
OERCRDdBRjAwM0ExMDZFIC8qIEJvdW5kYXJ5VGFnSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCb3VuZGFyeVRhZ0lubGluZXMuaDsgcGF0aCA9IGJtYWxsb2MvQm91
bmRhcnlUYWdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTA1RTgz
MThFMTQzNzQwMDNBMTA2RSAvKiBPYmplY3RUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IE9iamVjdFR5cGUuY3BwOyBwYXRoID0gYm1hbGxvYy9PYmplY3RUeXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxM0U0NjAxODlEQ0UxRTAwNTQ2
RDY4IC8qIElubGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbmxpbmUu
aDsgcGF0aCA9IGJtYWxsb2MvSW5saW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTE0MTNFNDYyMTg5REUxQ0QwMDU0NkQ2OCAvKiBTbWFsbEFsbG9jYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gU21hbGxBbGxvY2F0b3IuaDsg
cGF0aCA9IGJtYWxsb2MvU21hbGxBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8qIEJ1bXBBbGxvY2F0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IEJ1bXBBbGxvY2F0b3Iu
aDsgcGF0aCA9IGJtYWxsb2MvQnVtcEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNDEzRTQ2ODE4OUVFREU0MDA1NDZENjggLyogQkFzc2VydC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCQXNzZXJ0Lmg7IHBhdGggPSBibWFsbG9jL0JBc3NlcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQxM0U0NzAxOEEwNjYxNzAwNTQ2RDY4
IC8qIE1lZGl1bUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBN
ZWRpdW1BbGxvY2F0b3IuaDsgcGF0aCA9IGJtYWxsb2MvTWVkaXVtQWxsb2NhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTdGNjQ1MThCNTRBNzAwMDc2RkEzRiAvKiBCZWdp
blRhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCZWdpblRhZy5oOyBwYXRo
ID0gYm1hbGxvYy9CZWdpblRhZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDE3
RjY0NjE4QjU0QTcwMDA3NkZBM0YgLyogRW5kVGFnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEVuZFRhZy5oOyBwYXRoID0gYm1hbGxvYy9FbmRUYWcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTQxN0Y2NEYxOEI3MjgwQzAwNzZGQTNGIC8qIFN5c2NhbGwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3lzY2FsbC5oOyBwYXRoID0gYm1hbGxv
Yy9TeXNjYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzUsOCArMjMzLDcg
QEAKIAkJCQkxNDQ0NjlFNTE3QTQ2QkZFMDBGOUVBMUQgLyogQ2FjaGUuaCAqLywKIAkJCQkxNDVG
Njg1OTE3OURDOTAyMDBENjU1OTggLyogRGVhbGxvY2F0b3IuY3BwICovLAogCQkJCTE0NUY2ODVB
MTc5REM5MDIwMEQ2NTU5OCAvKiBEZWFsbG9jYXRvci5oICovLAotCQkJCTE0MTNFNDcwMThBMDY2
MTcwMDU0NkQ2OCAvKiBNZWRpdW1BbGxvY2F0b3IuaCAqLywKLQkJCQkxNDEzRTQ2MjE4OURFMUNE
MDA1NDZENjggLyogU21hbGxBbGxvY2F0b3IuaCAqLywKKwkJCQkxNDEzRTQ2MjE4OURFMUNEMDA1
NDZENjggLyogQnVtcEFsbG9jYXRvci5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBjYWNoZTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMDcsOSArMzA0LDggQEAKIAkJCQkxNDAwMjc0
QzE4Rjg5QzNEMDAxMTVDOTcgLyogU2VncmVnYXRlZEZyZWVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNERENzg4RDE4RjQ4Q0M2MDA5NTA3MDIgLyogQmVnaW5UYWcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0REQ3OENEMThGNDhENzUwMDk1MDcwMiAvKiBSYW5nZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMTRERDc4OUMxOEY0OEQ0QTAwOTUwNzAyIC8qIFNtYWxsQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxNERENzg5QzE4RjQ4RDRBMDA5NTA3MDIgLyogQnVtcEFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTkxOEY0OEQ0QTAwOTUwNzAyIC8qIENhY2hlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkxNERENzg5QjE4RjQ4RDRBMDA5NTA3MDIgLyogTWVkaXVtQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhCRTE4RjQ4RDZCMDA5NTA3MDIgLyog
U21hbGxUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODkwMThGNDhDRUIwMDk1MDcw
MiAvKiBTaXplcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QzcxOEY0OEQ3NTAwOTUwNzAy
IC8qIEJBc3NlcnQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9BbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxs
b2NhdG9yLmNwcAkocmV2aXNpb24gMTczMjIyKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9B
bGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTMgQEAgbmFtZXNwYWNl
IGJtYWxsb2MgewogCiBBbGxvY2F0b3I6OkFsbG9jYXRvcihEZWFsbG9jYXRvciYgZGVhbGxvY2F0
b3IpCiAgICAgOiBtX2RlYWxsb2NhdG9yKGRlYWxsb2NhdG9yKQotICAgICwgbV9zbWFsbEFsbG9j
YXRvcnMoKQotICAgICwgbV9tZWRpdW1BbGxvY2F0b3IoKQorICAgICwgbV9hbGxvY2F0b3JzKCkK
ICAgICAsIG1fc21hbGxBbGxvY2F0b3JMb2coKQogICAgICwgbV9tZWRpdW1BbGxvY2F0b3JMb2co
KQogewogICAgIHVuc2lnbmVkIHNob3J0IHNpemUgPSBhbGlnbm1lbnQ7Ci0gICAgZm9yIChhdXRv
JiBhbGxvY2F0b3IgOiBtX3NtYWxsQWxsb2NhdG9ycykgewotICAgICAgICBhbGxvY2F0b3IgPSBT
bWFsbEFsbG9jYXRvcihzaXplKTsKKyAgICBmb3IgKGF1dG8mIGFsbG9jYXRvciA6IG1fYWxsb2Nh
dG9ycykgeworICAgICAgICBhbGxvY2F0b3IgPSBCdW1wQWxsb2NhdG9yKHNpemUsIHNpemUgPD0g
c21hbGxNYXggPyBzbWFsbExpbmVTaXplIDogbWVkaXVtTGluZVNpemUpOwogICAgICAgICBzaXpl
ICs9IGFsaWdubWVudDsKICAgICB9CiB9CkBAIC01NiwxNSArNTUsMTcgQEAgQWxsb2NhdG9yOjp+
QWxsb2NhdG9yKCkKICAgICAKIHZvaWQgQWxsb2NhdG9yOjpzY2F2ZW5nZSgpCiB7Ci0gICAgZm9y
IChhdXRvJiBhbGxvY2F0b3IgOiBtX3NtYWxsQWxsb2NhdG9ycykKLSAgICAgICAgbG9nKGFsbG9j
YXRvcik7CisgICAgZm9yIChhdXRvJiBhbGxvY2F0b3IgOiBtX2FsbG9jYXRvcnMpIHsKKyAgICAg
ICAgaWYgKGFsbG9jYXRvci5zaXplKCkgPD0gc21hbGxNYXgpCisgICAgICAgICAgICBsb2dTbWFs
bChhbGxvY2F0b3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2dNZWRpdW0oYWxsb2Nh
dG9yKTsKKyAgICB9CiAgICAgcHJvY2Vzc1NtYWxsQWxsb2NhdG9yTG9nKCk7Ci0KLSAgICBsb2co
bV9tZWRpdW1BbGxvY2F0b3IpOwogICAgIHByb2Nlc3NNZWRpdW1BbGxvY2F0b3JMb2coKTsKIH0K
IAotdm9pZCBBbGxvY2F0b3I6OmxvZyhTbWFsbEFsbG9jYXRvciYgYWxsb2NhdG9yKQordm9pZCBB
bGxvY2F0b3I6OmxvZ1NtYWxsKEJ1bXBBbGxvY2F0b3ImIGFsbG9jYXRvcikKIHsKICAgICBpZiAo
bV9zbWFsbEFsbG9jYXRvckxvZy5zaXplKCkgPT0gbV9zbWFsbEFsbG9jYXRvckxvZy5jYXBhY2l0
eSgpKQogICAgICAgICBwcm9jZXNzU21hbGxBbGxvY2F0b3JMb2coKTsKQEAgLTcyLDcgKzczLDE4
IEBAIHZvaWQgQWxsb2NhdG9yOjpsb2coU21hbGxBbGxvY2F0b3ImIGFsbG8KICAgICBpZiAoYWxs
b2NhdG9yLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3NtYWxsQWxsb2NhdG9y
TG9nLnB1c2goc3RkOjptYWtlX3BhaXIoYWxsb2NhdG9yLmxpbmUoKSwgYWxsb2NhdG9yLmRlcmVm
Q291bnQoKSkpOworICAgIG1fc21hbGxBbGxvY2F0b3JMb2cucHVzaChzdGQ6Om1ha2VfcGFpcihh
bGxvY2F0b3IubGluZTxTbWFsbExpbmU+KCksIGFsbG9jYXRvci5kZXJlZkNvdW50KCkpKTsKK30K
Kwordm9pZCBBbGxvY2F0b3I6OmxvZ01lZGl1bShCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IpCit7
CisgICAgaWYgKG1fbWVkaXVtQWxsb2NhdG9yTG9nLnNpemUoKSA9PSBtX21lZGl1bUFsbG9jYXRv
ckxvZy5jYXBhY2l0eSgpKQorICAgICAgICBwcm9jZXNzTWVkaXVtQWxsb2NhdG9yTG9nKCk7Cisg
ICAgCisgICAgaWYgKGFsbG9jYXRvci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9tZWRpdW1BbGxvY2F0b3JMb2cucHVzaChzdGQ6Om1ha2VfcGFpcihhbGxvY2F0b3IubGluZTxN
ZWRpdW1MaW5lPigpLCBhbGxvY2F0b3IuZGVyZWZDb3VudCgpKSk7CiB9CiAKIHZvaWQgQWxsb2Nh
dG9yOjpwcm9jZXNzU21hbGxBbGxvY2F0b3JMb2coKQpAQCAtODcsMTcgKzk5LDYgQEAgdm9pZCBB
bGxvY2F0b3I6OnByb2Nlc3NTbWFsbEFsbG9jYXRvckxvZwogICAgIG1fc21hbGxBbGxvY2F0b3JM
b2cuY2xlYXIoKTsKIH0KIAotdm9pZCBBbGxvY2F0b3I6OmxvZyhNZWRpdW1BbGxvY2F0b3ImIGFs
bG9jYXRvcikKLXsKLSAgICBpZiAobV9tZWRpdW1BbGxvY2F0b3JMb2cuc2l6ZSgpID09IG1fbWVk
aXVtQWxsb2NhdG9yTG9nLmNhcGFjaXR5KCkpCi0gICAgICAgIHByb2Nlc3NNZWRpdW1BbGxvY2F0
b3JMb2coKTsKLQotICAgIGlmIChhbGxvY2F0b3IuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fbWVkaXVtQWxsb2NhdG9yTG9nLnB1c2goc3RkOjptYWtlX3BhaXIoYWxsb2NhdG9y
LmxpbmUoKSwgYWxsb2NhdG9yLmRlcmVmQ291bnQoKSkpOwotfQotCiB2b2lkIEFsbG9jYXRvcjo6
cHJvY2Vzc01lZGl1bUFsbG9jYXRvckxvZygpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRp
Y011dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4KCkpOwpAQCAtMTI0LDM3ICsxMjUs
MjggQEAgdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZVhMYXJnZShzaXplX3QgcwogICAgIHJldHVy
biBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpLT5hbGxvY2F0ZVhMYXJnZShsb2NrLCBz
aXplKTsKIH0KIAotdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZU1lZGl1bShzaXplX3Qgc2l6ZSkK
LXsKLSAgICBNZWRpdW1BbGxvY2F0b3ImIGFsbG9jYXRvciA9IG1fbWVkaXVtQWxsb2NhdG9yOwot
ICAgIHNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdubWVudD4oc2l6ZSk7Ci0KLSAgICB2
b2lkKiBvYmplY3Q7Ci0gICAgaWYgKGFsbG9jYXRvci5hbGxvY2F0ZShzaXplLCBvYmplY3QpKQot
ICAgICAgICByZXR1cm4gb2JqZWN0OwotCi0gICAgbG9nKGFsbG9jYXRvcik7Ci0gICAgYWxsb2Nh
dG9yLnJlZmlsbChtX2RlYWxsb2NhdG9yLmFsbG9jYXRlTWVkaXVtTGluZSgpKTsKLSAgICByZXR1
cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHNpemUpOwotfQotCiB2b2lkKiBBbGxvY2F0b3I6OmFsbG9j
YXRlU2xvd0Nhc2Uoc2l6ZV90IHNpemUpCiB7CiBJRl9ERUJVRygKICAgICB2b2lkKiBkdW1teTsK
ICAgICBCQVNTRVJUKCFhbGxvY2F0ZUZhc3RDYXNlKHNpemUsIGR1bW15KSk7CiApCi0gICAgaWYg
KHNpemUgPD0gc21hbGxNYXgpIHsKLSAgICAgICAgc2l6ZV90IHNtYWxsU2l6ZUNsYXNzID0gc21h
bGxTaXplQ2xhc3NGb3Ioc2l6ZSk7Ci0gICAgICAgIFNtYWxsQWxsb2NhdG9yJiBhbGxvY2F0b3Ig
PSBtX3NtYWxsQWxsb2NhdG9yc1tzbWFsbFNpemVDbGFzc107Ci0gICAgICAgIGxvZyhhbGxvY2F0
b3IpOwotICAgICAgICBhbGxvY2F0b3IucmVmaWxsKG1fZGVhbGxvY2F0b3IuYWxsb2NhdGVTbWFs
bExpbmUoc21hbGxTaXplQ2xhc3MpKTsKKyAgICBpZiAoc2l6ZSAmJiBzaXplIDw9IHNtYWxsTWF4
KSB7CisgICAgICAgIHNpemVfdCBidW1wQ2xhc3MgPSBibWFsbG9jOjpidW1wQ2xhc3Moc2l6ZSk7
CisgICAgICAgIEJ1bXBBbGxvY2F0b3ImIGFsbG9jYXRvciA9IG1fYWxsb2NhdG9yc1tidW1wQ2xh
c3NdOworICAgICAgICBsb2dTbWFsbChhbGxvY2F0b3IpOworICAgICAgICBhbGxvY2F0b3IucmVm
aWxsKG1fZGVhbGxvY2F0b3IuYWxsb2NhdGVTbWFsbExpbmUoYnVtcENsYXNzKSk7CisgICAgICAg
IHJldHVybiBhbGxvY2F0b3IuYWxsb2NhdGUoKTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA8PSBt
ZWRpdW1NYXgpIHsKKyAgICAgICAgc2l6ZV90IGJ1bXBDbGFzcyA9IGJtYWxsb2M6OmJ1bXBDbGFz
cyhzaXplKTsKKyAgICAgICAgQnVtcEFsbG9jYXRvciYgYWxsb2NhdG9yID0gbV9hbGxvY2F0b3Jz
W2J1bXBDbGFzc107CisgICAgICAgIGxvZ01lZGl1bShhbGxvY2F0b3IpOworICAgICAgICBhbGxv
Y2F0b3IucmVmaWxsKG1fZGVhbGxvY2F0b3IuYWxsb2NhdGVNZWRpdW1MaW5lKGJ1bXBDbGFzcykp
OwogICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKCk7CiAgICAgfQogCi0gICAgaWYg
KHNpemUgPD0gbWVkaXVtTWF4KQotICAgICAgICByZXR1cm4gYWxsb2NhdGVNZWRpdW0oc2l6ZSk7
Ci0gICAgCiAgICAgaWYgKHNpemUgPD0gbGFyZ2VNYXgpCiAgICAgICAgIHJldHVybiBhbGxvY2F0
ZUxhcmdlKHNpemUpOwogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmgJKHJldmlz
aW9uIDE3MzIyMikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDEwICsyNiwxMSBAQAogI2lmbmRlZiBBbGxvY2F0b3JfaAogI2RlZmlu
ZSBBbGxvY2F0b3JfaAogCisjaW5jbHVkZSAiQnVtcEFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkZp
eGVkVmVjdG9yLmgiCi0jaW5jbHVkZSAiTWVkaXVtQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiTWVk
aXVtQ2h1bmsuaCIKICNpbmNsdWRlICJTaXplcy5oIgotI2luY2x1ZGUgIlNtYWxsQWxsb2NhdG9y
LmgiCisjaW5jbHVkZSAiU21hbGxDaHVuay5oIgogI2luY2x1ZGUgPGFycmF5PgogCiBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CkBAIC01MCwyMiArNTEsMjAgQEAgcHVibGljOgogICAgIHZvaWQgc2NhdmVu
Z2UoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkKiBhbGxvY2F0ZUZhc3RDYXNlKFNtYWxsQWxsb2Nh
dG9yJik7CisgICAgdm9pZCogYWxsb2NhdGVGYXN0Q2FzZShCdW1wQWxsb2NhdG9yJik7CiAKLSAg
ICB2b2lkKiBhbGxvY2F0ZU1lZGl1bShzaXplX3QpOwogICAgIHZvaWQqIGFsbG9jYXRlTGFyZ2Uo
c2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZVhMYXJnZShzaXplX3QpOwogICAgIAotICAgIHZv
aWQgbG9nKFNtYWxsQWxsb2NhdG9yJik7Ci0gICAgdm9pZCBsb2coTWVkaXVtQWxsb2NhdG9yJik7
CisgICAgdm9pZCBsb2dTbWFsbChCdW1wQWxsb2NhdG9yJik7CisgICAgdm9pZCBsb2dNZWRpdW0o
QnVtcEFsbG9jYXRvciYpOwogCiAgICAgdm9pZCBwcm9jZXNzU21hbGxBbGxvY2F0b3JMb2coKTsK
ICAgICB2b2lkIHByb2Nlc3NNZWRpdW1BbGxvY2F0b3JMb2coKTsKIAogICAgIERlYWxsb2NhdG9y
JiBtX2RlYWxsb2NhdG9yOwogCi0gICAgc3RkOjphcnJheTxTbWFsbEFsbG9jYXRvciwgc21hbGxN
YXggLyBhbGlnbm1lbnQ+IG1fc21hbGxBbGxvY2F0b3JzOwotICAgIE1lZGl1bUFsbG9jYXRvciBt
X21lZGl1bUFsbG9jYXRvcjsKKyAgICBzdGQ6OmFycmF5PEJ1bXBBbGxvY2F0b3IsIGJ1bXBNYXgg
LyBhbGlnbm1lbnQ+IG1fYWxsb2NhdG9yczsKIAogICAgIEZpeGVkVmVjdG9yPHN0ZDo6cGFpcjxT
bWFsbExpbmUqLCB1bnNpZ25lZCBjaGFyPiwgc21hbGxBbGxvY2F0b3JMb2dDYXBhY2l0eT4gbV9z
bWFsbEFsbG9jYXRvckxvZzsKICAgICBGaXhlZFZlY3RvcjxzdGQ6OnBhaXI8TWVkaXVtTGluZSos
IHVuc2lnbmVkIGNoYXI+LCBtZWRpdW1BbGxvY2F0b3JMb2dDYXBhY2l0eT4gbV9tZWRpdW1BbGxv
Y2F0b3JMb2c7CkBAIC03MywxMCArNzIsMTAgQEAgcHJpdmF0ZToKIAogaW5saW5lIGJvb2wgQWxs
b2NhdG9yOjphbGxvY2F0ZUZhc3RDYXNlKHNpemVfdCBzaXplLCB2b2lkKiYgb2JqZWN0KQogewot
ICAgIGlmIChzaXplID4gc21hbGxNYXgpCisgICAgaWYgKHNpemUgPiBidW1wTWF4KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBTbWFsbEFsbG9jYXRvciYgYWxsb2NhdG9yID0gbV9zbWFs
bEFsbG9jYXRvcnNbc21hbGxTaXplQ2xhc3NGb3Ioc2l6ZSldOworICAgIEJ1bXBBbGxvY2F0b3Im
IGFsbG9jYXRvciA9IG1fYWxsb2NhdG9yc1tidW1wQ2xhc3Moc2l6ZSldOwogICAgIGlmICghYWxs
b2NhdG9yLmNhbkFsbG9jYXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9CdW1wQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9CdW1wQWxsb2NhdG9yLmgJKHJldmlzaW9uIDE3MzIyMikJKGZyb20g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbEFsbG9jYXRvci5oOjE3MzIyMikKKysrIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvQnVtcEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgU21hbGxBbGxvY2F0b3JfaAorI2RlZmluZSBTbWFsbEFsbG9jYXRvcl9oCisKKyNp
bmNsdWRlICJCQXNzZXJ0LmgiCisjaW5jbHVkZSAiU21hbGxDaHVuay5oIgorI2luY2x1ZGUgIlNt
YWxsTGluZS5oIgorCituYW1lc3BhY2UgYm1hbGxvYyB7CisKKy8vIEhlbHBlciBvYmplY3QgZm9y
IGFsbG9jYXRpbmcgc21hbGwgb2JqZWN0cy4KKworY2xhc3MgU21hbGxBbGxvY2F0b3IgeworcHVi
bGljOgorICAgIFNtYWxsQWxsb2NhdG9yKCk7CisgICAgU21hbGxBbGxvY2F0b3Ioc2l6ZV90KTsK
KyAgICAKKyAgICBib29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX3B0cjsgfQorICAgIFNtYWxsTGlu
ZSogbGluZSgpOworCisgICAgYm9vbCBjYW5BbGxvY2F0ZSgpIHsgcmV0dXJuICEhbV9yZW1haW5p
bmc7IH0KKyAgICB2b2lkKiBhbGxvY2F0ZSgpOworCisgICAgdW5zaWduZWQgc2hvcnQgb2JqZWN0
Q291bnQoKTsKKyAgICB1bnNpZ25lZCBjaGFyIGRlcmVmQ291bnQoKTsKKyAgICB2b2lkIHJlZmls
bChTbWFsbExpbmUqKTsKKworcHJpdmF0ZToKKyAgICBjaGFyKiBtX3B0cjsKKyAgICB1bnNpZ25l
ZCBzaG9ydCBtX3NpemU7CisgICAgdW5zaWduZWQgY2hhciBtX3JlbWFpbmluZzsKKyAgICB1bnNp
Z25lZCBjaGFyIG1fbWF4T2JqZWN0Q291bnQ7Cit9OworCitpbmxpbmUgU21hbGxBbGxvY2F0b3I6
OlNtYWxsQWxsb2NhdG9yKCkKKyAgICA6IG1fcHRyKCkKKyAgICAsIG1fc2l6ZSgpCisgICAgLCBt
X3JlbWFpbmluZygpCisgICAgLCBtX21heE9iamVjdENvdW50KCkKK3sKK30KKworaW5saW5lIFNt
YWxsQWxsb2NhdG9yOjpTbWFsbEFsbG9jYXRvcihzaXplX3Qgc2l6ZSkKKyAgICA6IG1fcHRyKCkK
KyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9yZW1haW5pbmcoKQorICAgICwgbV9tYXhPYmpl
Y3RDb3VudChzbWFsbExpbmVTaXplIC8gc2l6ZSkKK3sKK30KKworaW5saW5lIFNtYWxsTGluZSog
U21hbGxBbGxvY2F0b3I6OmxpbmUoKQoreworICAgIHJldHVybiBTbWFsbExpbmU6OmdldChjYW5B
bGxvY2F0ZSgpID8gbV9wdHIgOiBtX3B0ciAtIDEpOworfQorCitpbmxpbmUgdm9pZCogU21hbGxB
bGxvY2F0b3I6OmFsbG9jYXRlKCkKK3sKKyAgICBCQVNTRVJUKG1fcmVtYWluaW5nKTsKKyAgICBC
QVNTRVJUKG1fc2l6ZSA+PSBTbWFsbExpbmU6Om1pbmltdW1PYmplY3RTaXplKTsKKworICAgIC0t
bV9yZW1haW5pbmc7CisgICAgY2hhciogcmVzdWx0ID0gbV9wdHI7CisgICAgbV9wdHIgKz0gbV9z
aXplOworICAgIEJBU1NFUlQoaXNTbWFsbChyZXN1bHQpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitpbmxpbmUgdW5zaWduZWQgc2hvcnQgU21hbGxBbGxvY2F0b3I6Om9iamVjdENvdW50KCkK
K3sKKyAgICByZXR1cm4gbV9tYXhPYmplY3RDb3VudCAtIG1fcmVtYWluaW5nOworfQorCitpbmxp
bmUgdW5zaWduZWQgY2hhciBTbWFsbEFsbG9jYXRvcjo6ZGVyZWZDb3VudCgpCit7CisgICAgcmV0
dXJuIFNtYWxsTGluZTo6bWF4UmVmQ291bnQgLSBvYmplY3RDb3VudCgpOworfQorCitpbmxpbmUg
dm9pZCBTbWFsbEFsbG9jYXRvcjo6cmVmaWxsKFNtYWxsTGluZSogbGluZSkKK3sKKyAgICBCQVNT
RVJUKCFjYW5BbGxvY2F0ZSgpKTsKKyAgICBsaW5lLT5jb25jdXJyZW50UmVmKFNtYWxsTGluZTo6
bWF4UmVmQ291bnQpOworICAgIG1fcHRyID0gbGluZS0+YmVnaW4oKTsKKyAgICBtX3JlbWFpbmlu
ZyA9IG1fbWF4T2JqZWN0Q291bnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKKworI2Vu
ZGlmIC8vIFNtYWxsQWxsb2NhdG9yX2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQnVt
cEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQnVtcEFs
bG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0J1bXBB
bGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMzEgKzIzLDM0IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaWZuZGVmIFNtYWxsQWxsb2NhdG9yX2gKLSNkZWZpbmUgU21hbGxBbGxv
Y2F0b3JfaAorI2lmbmRlZiBCdW1wQWxsb2NhdG9yX2gKKyNkZWZpbmUgQnVtcEFsbG9jYXRvcl9o
CiAKICNpbmNsdWRlICJCQXNzZXJ0LmgiCi0jaW5jbHVkZSAiU21hbGxDaHVuay5oIgotI2luY2x1
ZGUgIlNtYWxsTGluZS5oIgorI2luY2x1ZGUgIkxpbmUuaCIKKyNpbmNsdWRlICJPYmplY3RUeXBl
LmgiCisjaW5jbHVkZSA8Y3N0ZGRlZj4KIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCi0vLyBIZWxw
ZXIgb2JqZWN0IGZvciBhbGxvY2F0aW5nIHNtYWxsIG9iamVjdHMuCisvLyBIZWxwZXIgb2JqZWN0
IGZvciBidW1wLWFsbG9jYXRpbmcgaW50byBzbWFsbCBhbmQgbWVkaXVtIGxpbmVzLgogCi1jbGFz
cyBTbWFsbEFsbG9jYXRvciB7CitjbGFzcyBCdW1wQWxsb2NhdG9yIHsKIHB1YmxpYzoKLSAgICBT
bWFsbEFsbG9jYXRvcigpOwotICAgIFNtYWxsQWxsb2NhdG9yKHNpemVfdCk7CisgICAgQnVtcEFs
bG9jYXRvcigpOworICAgIEJ1bXBBbGxvY2F0b3Ioc2l6ZV90LCBzaXplX3QgbGluZVNpemUpOwog
ICAgIAogICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gIW1fcHRyOyB9Ci0gICAgU21hbGxMaW5l
KiBsaW5lKCk7CisgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX3NpemU7IH0KIAogICAgIGJv
b2wgY2FuQWxsb2NhdGUoKSB7IHJldHVybiAhIW1fcmVtYWluaW5nOyB9CiAgICAgdm9pZCogYWxs
b2NhdGUoKTsKIAogICAgIHVuc2lnbmVkIHNob3J0IG9iamVjdENvdW50KCk7CiAgICAgdW5zaWdu
ZWQgY2hhciBkZXJlZkNvdW50KCk7Ci0gICAgdm9pZCByZWZpbGwoU21hbGxMaW5lKik7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBMaW5lPiBMaW5lKiBsaW5lKCk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTGluZT4gdm9pZCByZWZpbGwoTGluZSopOwogCiBwcml2YXRlOgogICAgIGNoYXIqIG1f
cHRyOwpAQCAtNTYsNyArNTksNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGNoYXIgbV9tYXhP
YmplY3RDb3VudDsKIH07CiAKLWlubGluZSBTbWFsbEFsbG9jYXRvcjo6U21hbGxBbGxvY2F0b3Io
KQoraW5saW5lIEJ1bXBBbGxvY2F0b3I6OkJ1bXBBbGxvY2F0b3IoKQogICAgIDogbV9wdHIoKQog
ICAgICwgbV9zaXplKCkKICAgICAsIG1fcmVtYWluaW5nKCkKQEAgLTY0LDQ5ICs2Nyw1MiBAQCBp
bmxpbmUgU21hbGxBbGxvY2F0b3I6OlNtYWxsQWxsb2NhdG9yKCkKIHsKIH0KIAotaW5saW5lIFNt
YWxsQWxsb2NhdG9yOjpTbWFsbEFsbG9jYXRvcihzaXplX3Qgc2l6ZSkKK2lubGluZSBCdW1wQWxs
b2NhdG9yOjpCdW1wQWxsb2NhdG9yKHNpemVfdCBzaXplLCBzaXplX3QgbGluZVNpemUpCiAgICAg
OiBtX3B0cigpCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fcmVtYWluaW5nKCkKLSAgICAs
IG1fbWF4T2JqZWN0Q291bnQoc21hbGxMaW5lU2l6ZSAvIHNpemUpCisgICAgLCBtX21heE9iamVj
dENvdW50KGxpbmVTaXplIC8gc2l6ZSkKIHsKIH0KIAotaW5saW5lIFNtYWxsTGluZSogU21hbGxB
bGxvY2F0b3I6OmxpbmUoKQordGVtcGxhdGU8dHlwZW5hbWUgTGluZT4KK2lubGluZSBMaW5lKiBC
dW1wQWxsb2NhdG9yOjpsaW5lKCkKIHsKLSAgICByZXR1cm4gU21hbGxMaW5lOjpnZXQoY2FuQWxs
b2NhdGUoKSA/IG1fcHRyIDogbV9wdHIgLSAxKTsKKyAgICBMaW5lKiBsaW5lID0gTGluZTo6Z2V0
KGNhbkFsbG9jYXRlKCkgPyBtX3B0ciA6IG1fcHRyIC0gMSk7CisgICAgQkFTU0VSVChMaW5lOjps
aW5lU2l6ZSA9PSBzbWFsbExpbmVTaXplID8gaXNTbWFsbChsaW5lKSA6IGlzTWVkaXVtKGxpbmUp
KTsKKyAgICByZXR1cm4gbGluZTsKIH0KIAotaW5saW5lIHZvaWQqIFNtYWxsQWxsb2NhdG9yOjph
bGxvY2F0ZSgpCitpbmxpbmUgdm9pZCogQnVtcEFsbG9jYXRvcjo6YWxsb2NhdGUoKQogewogICAg
IEJBU1NFUlQobV9yZW1haW5pbmcpOwotICAgIEJBU1NFUlQobV9zaXplID49IFNtYWxsTGluZTo6
bWluaW11bU9iamVjdFNpemUpOwotCiAgICAgLS1tX3JlbWFpbmluZzsKICAgICBjaGFyKiByZXN1
bHQgPSBtX3B0cjsKICAgICBtX3B0ciArPSBtX3NpemU7Ci0gICAgQkFTU0VSVChpc1NtYWxsKHJl
c3VsdCkpOworICAgIEJBU1NFUlQobV9zaXplIDw9IHNtYWxsTWF4ID8gaXNTbWFsbChyZXN1bHQp
IDogaXNNZWRpdW0ocmVzdWx0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHVu
c2lnbmVkIHNob3J0IFNtYWxsQWxsb2NhdG9yOjpvYmplY3RDb3VudCgpCitpbmxpbmUgdW5zaWdu
ZWQgc2hvcnQgQnVtcEFsbG9jYXRvcjo6b2JqZWN0Q291bnQoKQogewogICAgIHJldHVybiBtX21h
eE9iamVjdENvdW50IC0gbV9yZW1haW5pbmc7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBjaGFyIFNt
YWxsQWxsb2NhdG9yOjpkZXJlZkNvdW50KCkKK2lubGluZSB1bnNpZ25lZCBjaGFyIEJ1bXBBbGxv
Y2F0b3I6OmRlcmVmQ291bnQoKQogewotICAgIHJldHVybiBTbWFsbExpbmU6Om1heFJlZkNvdW50
IC0gb2JqZWN0Q291bnQoKTsKKyAgICByZXR1cm4gbWF4TGluZVJlZkNvdW50IC0gb2JqZWN0Q291
bnQoKTsKIH0KIAotaW5saW5lIHZvaWQgU21hbGxBbGxvY2F0b3I6OnJlZmlsbChTbWFsbExpbmUq
IGxpbmUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBMaW5lPgoraW5saW5lIHZvaWQgQnVtcEFsbG9jYXRv
cjo6cmVmaWxsKExpbmUqIGxpbmUpCiB7CiAgICAgQkFTU0VSVCghY2FuQWxsb2NhdGUoKSk7Ci0g
ICAgbGluZS0+Y29uY3VycmVudFJlZihTbWFsbExpbmU6Om1heFJlZkNvdW50KTsKKyAgICBCQVNT
RVJUKG1fc2l6ZSA8PSBzbWFsbE1heCA/IGlzU21hbGwobGluZSkgOiBpc01lZGl1bShsaW5lKSk7
CisgICAgbGluZS0+Y29uY3VycmVudFJlZihtYXhMaW5lUmVmQ291bnQpOwogICAgIG1fcHRyID0g
bGluZS0+YmVnaW4oKTsKICAgICBtX3JlbWFpbmluZyA9IG1fbWF4T2JqZWN0Q291bnQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAotI2VuZGlmIC8vIFNtYWxsQWxsb2NhdG9yX2gKKyNl
bmRpZiAvLyBCdW1wQWxsb2NhdG9yX2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVh
bGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxv
Y2F0b3IuY3BwCShyZXZpc2lvbiAxNzMyMjIpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Rl
YWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDIyICsxMjEsMjIgQEAgdm9pZCBE
ZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNsb3dDYXNlKHZvaQogCiB2b2lkIERlYWxsb2NhdG9yOjpk
ZWFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIFNt
YWxsTGluZSogbGluZSkKIHsKLSAgICBTbWFsbExpbmVDYWNoZSYgc21hbGxMaW5lQ2FjaGUgPSBt
X3NtYWxsTGluZUNhY2hlc1tTbWFsbFBhZ2U6OmdldChsaW5lKS0+c21hbGxTaXplQ2xhc3MoKV07
CisgICAgU21hbGxMaW5lQ2FjaGUmIHNtYWxsTGluZUNhY2hlID0gbV9zbWFsbExpbmVDYWNoZXNb
U21hbGxQYWdlOjpnZXQobGluZSktPmJ1bXBDbGFzcygpXTsKICAgICBpZiAoc21hbGxMaW5lQ2Fj
aGUuc2l6ZSgpID09IHNtYWxsTGluZUNhY2hlLmNhcGFjaXR5KCkpCiAgICAgICAgIHJldHVybiBQ
ZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpLT5kZWFsbG9jYXRlU21hbGxMaW5lKGxvY2ss
IGxpbmUpOwogCiAgICAgc21hbGxMaW5lQ2FjaGUucHVzaChsaW5lKTsKIH0KIAotU21hbGxMaW5l
KiBEZWFsbG9jYXRvcjo6YWxsb2NhdGVTbWFsbExpbmUoc2l6ZV90IHNtYWxsU2l6ZUNsYXNzKQor
U21hbGxMaW5lKiBEZWFsbG9jYXRvcjo6YWxsb2NhdGVTbWFsbExpbmUoc2l6ZV90IGJ1bXBDbGFz
cykKIHsKLSAgICBTbWFsbExpbmVDYWNoZSYgc21hbGxMaW5lQ2FjaGUgPSBtX3NtYWxsTGluZUNh
Y2hlc1tzbWFsbFNpemVDbGFzc107CisgICAgU21hbGxMaW5lQ2FjaGUmIHNtYWxsTGluZUNhY2hl
ID0gbV9zbWFsbExpbmVDYWNoZXNbYnVtcENsYXNzXTsKICAgICBpZiAoIXNtYWxsTGluZUNhY2hl
LnNpemUoKSkgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2soUGVy
UHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CiAgICAgICAgIEhlYXAqIGhlYXAgPSBQZXJQcm9jZXNz
PEhlYXA+OjpnZXRGYXN0Q2FzZSgpOwogCiAgICAgICAgIHdoaWxlIChzbWFsbExpbmVDYWNoZS5z
aXplKCkgIT0gc21hbGxMaW5lQ2FjaGUuY2FwYWNpdHkoKSkKLSAgICAgICAgICAgIHNtYWxsTGlu
ZUNhY2hlLnB1c2goaGVhcC0+YWxsb2NhdGVTbWFsbExpbmUobG9jaywgc21hbGxTaXplQ2xhc3Mp
KTsKKyAgICAgICAgICAgIHNtYWxsTGluZUNhY2hlLnB1c2goaGVhcC0+YWxsb2NhdGVTbWFsbExp
bmUobG9jaywgYnVtcENsYXNzKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNtYWxsTGluZUNhY2hl
LnBvcCgpOwpAQCAtMTUwLDE0ICsxNTAsMTQgQEAgdm9pZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0
ZU1lZGl1bUxpbmUocwogICAgIG1fbWVkaXVtTGluZUNhY2hlLnB1c2gobGluZSk7CiB9CiAKLU1l
ZGl1bUxpbmUqIERlYWxsb2NhdG9yOjphbGxvY2F0ZU1lZGl1bUxpbmUoKQorTWVkaXVtTGluZSog
RGVhbGxvY2F0b3I6OmFsbG9jYXRlTWVkaXVtTGluZShzaXplX3QgYnVtcENsYXNzKQogewogICAg
IGlmICghbV9tZWRpdW1MaW5lQ2FjaGUuc2l6ZSgpKSB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgpKTsKICAgICAgICAg
SGVhcCogaGVhcCA9IFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNlKCk7CiAKICAgICAgICAg
d2hpbGUgKG1fbWVkaXVtTGluZUNhY2hlLnNpemUoKSAhPSBtX21lZGl1bUxpbmVDYWNoZS5jYXBh
Y2l0eSgpKQotICAgICAgICAgICAgbV9tZWRpdW1MaW5lQ2FjaGUucHVzaChoZWFwLT5hbGxvY2F0
ZU1lZGl1bUxpbmUobG9jaykpOworICAgICAgICAgICAgbV9tZWRpdW1MaW5lQ2FjaGUucHVzaCho
ZWFwLT5hbGxvY2F0ZU1lZGl1bUxpbmUobG9jaywgYnVtcENsYXNzKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG1fbWVkaXVtTGluZUNhY2hlLnBvcCgpOwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
RGVhbGxvY2F0b3IuaAkocmV2aXNpb24gMTczMjIyKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9EZWFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVhbGxvY2F0ZVNsb3dDYXNlKHZvaWQqKTsKIAogICAgIHZvaWQgZGVhbGxv
Y2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgU21hbGxMaW5lKik7
Ci0gICAgU21hbGxMaW5lKiBhbGxvY2F0ZVNtYWxsTGluZShzaXplX3Qgc21hbGxTaXplQ2xhc3Mp
OworICAgIFNtYWxsTGluZSogYWxsb2NhdGVTbWFsbExpbmUoc2l6ZV90IGJ1bXBDbGFzcyk7CiAK
ICAgICB2b2lkIGRlYWxsb2NhdGVNZWRpdW1MaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRl
eD4mLCBNZWRpdW1MaW5lKik7Ci0gICAgTWVkaXVtTGluZSogYWxsb2NhdGVNZWRpdW1MaW5lKCk7
CisgICAgTWVkaXVtTGluZSogYWxsb2NhdGVNZWRpdW1MaW5lKHNpemVfdCBidW1wQ2xhc3MpOwog
ICAgIAogICAgIHZvaWQgc2NhdmVuZ2UoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
LmNwcAkocmV2aXNpb24gMTczMjIyKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2VM
YXJnZVJhbmdlcyhzdGQ6OnVuaXEKICAgICB9CiB9CiAKLVNtYWxsTGluZSogSGVhcDo6YWxsb2Nh
dGVTbWFsbExpbmVTbG93Q2FzZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBz
aXplX3Qgc21hbGxTaXplQ2xhc3MpCitTbWFsbExpbmUqIEhlYXA6OmFsbG9jYXRlU21hbGxMaW5l
U2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IGJ1bXBD
bGFzcykKIHsKICAgICBtX2lzQWxsb2NhdGluZ1BhZ2VzID0gdHJ1ZTsKIApAQCAtMTMwLDE3ICsx
MzAsMTcgQEAgU21hbGxMaW5lKiBIZWFwOjphbGxvY2F0ZVNtYWxsTGluZVNsb3dDYQogICAgIH0o
KTsKIAogICAgIFNtYWxsTGluZSogbGluZSA9IHBhZ2UtPmJlZ2luKCk7Ci0gICAgVmVjdG9yPFNt
YWxsTGluZSo+JiBzbWFsbExpbmVzID0gbV9zbWFsbExpbmVzW3NtYWxsU2l6ZUNsYXNzXTsKKyAg
ICBWZWN0b3I8U21hbGxMaW5lKj4mIHNtYWxsTGluZXMgPSBtX3NtYWxsTGluZXNbYnVtcENsYXNz
XTsKICAgICBmb3IgKGF1dG8gaXQgPSBsaW5lICsgMTsgaXQgIT0gcGFnZS0+ZW5kKCk7ICsraXQp
CiAgICAgICAgIHNtYWxsTGluZXMucHVzaChpdCk7CiAKICAgICBCQVNTRVJUKCFsaW5lLT5yZWZD
b3VudChsb2NrKSk7Ci0gICAgcGFnZS0+c2V0U21hbGxTaXplQ2xhc3Moc21hbGxTaXplQ2xhc3Mp
OworICAgIHBhZ2UtPnNldEJ1bXBDbGFzcyhidW1wQ2xhc3MpOwogICAgIHBhZ2UtPnJlZihsb2Nr
KTsKICAgICByZXR1cm4gbGluZTsKIH0KIAotTWVkaXVtTGluZSogSGVhcDo6YWxsb2NhdGVNZWRp
dW1MaW5lU2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaykKK01lZGl1
bUxpbmUqIEhlYXA6OmFsbG9jYXRlTWVkaXVtTGluZVNsb3dDYXNlKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mIGxvY2ssIHNpemVfdCBidW1wQ2xhc3MpCiB7CiAgICAgbV9pc0FsbG9jYXRp
bmdQYWdlcyA9IHRydWU7CiAKQEAgLTE1Nyw2ICsxNTcsOCBAQCBNZWRpdW1MaW5lKiBIZWFwOjph
bGxvY2F0ZU1lZGl1bUxpbmVTbG93CiAgICAgZm9yIChhdXRvIGl0ID0gbGluZSArIDE7IGl0ICE9
IHBhZ2UtPmVuZCgpOyArK2l0KQogICAgICAgICBtX21lZGl1bUxpbmVzLnB1c2goaXQpOwogCisg
ICAgQkFTU0VSVCghbGluZS0+cmVmQ291bnQobG9jaykpOworICAgIHBhZ2UtPnNldEJ1bXBDbGFz
cyhidW1wQ2xhc3MpOwogICAgIHBhZ2UtPnJlZihsb2NrKTsKICAgICByZXR1cm4gbGluZTsKIH0K
SW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCShyZXZpc2lvbiAxNzMyMjIpCisrKyBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEwIEBAIGNs
YXNzIEhlYXAgewogcHVibGljOgogICAgIEhlYXAoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4
PiYpOwogCi0gICAgU21hbGxMaW5lKiBhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8
U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IHNtYWxsU2l6ZUNsYXNzKTsKKyAgICBTbWFsbExpbmUqIGFs
bG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QgYnVt
cENsYXNzKTsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiYsIFNtYWxsTGluZSopOwogCi0gICAgTWVkaXVtTGluZSogYWxsb2NhdGVNZWRp
dW1MaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKKyAgICBNZWRpdW1MaW5lKiBh
bGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCBi
dW1wQ2xhc3MpOwogICAgIHZvaWQgZGVhbGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2NrX2d1YXJk
PFN0YXRpY011dGV4PiYsIE1lZGl1bUxpbmUqKTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZUxh
cmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QpOwpAQCAtNjYsOCArNjYs
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIH5IZWFwKCkgPSBkZWxldGU7CiAKLSAgICBTbWFs
bExpbmUqIGFsbG9jYXRlU21hbGxMaW5lU2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011
dGV4PiYsIHNpemVfdCBzbWFsbFNpemVDbGFzcyk7Ci0gICAgTWVkaXVtTGluZSogYWxsb2NhdGVN
ZWRpdW1MaW5lU2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOworICAgIFNt
YWxsTGluZSogYWxsb2NhdGVTbWFsbExpbmVTbG93Q2FzZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TXV0ZXg+Jiwgc2l6ZV90IGJ1bXBDbGFzcyk7CisgICAgTWVkaXVtTGluZSogYWxsb2NhdGVNZWRp
dW1MaW5lU2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCBidW1w
Q2xhc3MpOwogCiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShSYW5nZSwgc2l6ZV90KTsKICAgICBS
YW5nZSBhbGxvY2F0ZUxhcmdlQ2h1bmsoKTsKQEAgLTEwNSwyMyArMTA1LDIzIEBAIGlubGluZSB2
b2lkIEhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUoc3QKICAgICAgICAgbV9zY2F2ZW5nZXIucnVu
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9zbWFsbExpbmVzW3BhZ2UtPnNtYWxs
U2l6ZUNsYXNzKCldLnB1c2gobGluZSk7CisgICAgbV9zbWFsbExpbmVzW3BhZ2UtPmJ1bXBDbGFz
cygpXS5wdXNoKGxpbmUpOwogfQogCi1pbmxpbmUgU21hbGxMaW5lKiBIZWFwOjphbGxvY2F0ZVNt
YWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBzaXplX3Qgc21hbGxT
aXplQ2xhc3MpCitpbmxpbmUgU21hbGxMaW5lKiBIZWFwOjphbGxvY2F0ZVNtYWxsTGluZShzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBzaXplX3QgYnVtcENsYXNzKQogewotICAg
IFZlY3RvcjxTbWFsbExpbmUqPiYgc21hbGxMaW5lcyA9IG1fc21hbGxMaW5lc1tzbWFsbFNpemVD
bGFzc107CisgICAgVmVjdG9yPFNtYWxsTGluZSo+JiBzbWFsbExpbmVzID0gbV9zbWFsbExpbmVz
W2J1bXBDbGFzc107CiAgICAgd2hpbGUgKHNtYWxsTGluZXMuc2l6ZSgpKSB7CiAgICAgICAgIFNt
YWxsTGluZSogbGluZSA9IHNtYWxsTGluZXMucG9wKCk7CiAgICAgICAgIFNtYWxsUGFnZSogcGFn
ZSA9IFNtYWxsUGFnZTo6Z2V0KGxpbmUpOwotICAgICAgICBpZiAoIXBhZ2UtPnJlZkNvdW50KGxv
Y2spIHx8IHBhZ2UtPnNtYWxsU2l6ZUNsYXNzKCkgIT0gc21hbGxTaXplQ2xhc3MpIC8vIFRoZSBs
aW5lIHdhcyBwcm9tb3RlZCB0byB0aGUgc21hbGwgcGFnZXMgbGlzdC4KKyAgICAgICAgaWYgKCFw
YWdlLT5yZWZDb3VudChsb2NrKSB8fCBwYWdlLT5idW1wQ2xhc3MoKSAhPSBidW1wQ2xhc3MpIC8v
IFRoZSBsaW5lIHdhcyBwcm9tb3RlZCB0byB0aGUgc21hbGwgcGFnZXMgbGlzdC4KICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBCQVNTRVJUKCFsaW5lLT5yZWZDb3VudChsb2NrKSk7CiAg
ICAgICAgIHBhZ2UtPnJlZihsb2NrKTsKICAgICAgICAgcmV0dXJuIGxpbmU7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGFsbG9jYXRlU21hbGxMaW5lU2xvd0Nhc2UobG9jaywgc21hbGxTaXplQ2xhc3Mp
OworICAgIHJldHVybiBhbGxvY2F0ZVNtYWxsTGluZVNsb3dDYXNlKGxvY2ssIGJ1bXBDbGFzcyk7
CiB9CiAKIGlubGluZSB2b2lkIEhlYXA6OmRlYWxsb2NhdGVNZWRpdW1MaW5lKHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIE1lZGl1bUxpbmUqIGxpbmUpCkBAIC0xMzYsNyArMTM2
LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZU1lZGl1bUxpbmUocwogICAgIG1fbWVk
aXVtTGluZXMucHVzaChsaW5lKTsKIH0KIAotaW5saW5lIE1lZGl1bUxpbmUqIEhlYXA6OmFsbG9j
YXRlTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrKQoraW5saW5l
IE1lZGl1bUxpbmUqIEhlYXA6OmFsbG9jYXRlTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTXV0ZXg+JiBsb2NrLCBzaXplX3QgYnVtcENsYXNzKQogewogICAgIHdoaWxlIChtX21lZGl1
bUxpbmVzLnNpemUoKSkgewogICAgICAgICBNZWRpdW1MaW5lKiBsaW5lID0gbV9tZWRpdW1MaW5l
cy5wb3AoKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBpbmxpbmUgTWVkaXVtTGluZSogSGVhcDo6YWxs
b2NhdGVNZWRpdW1MCiAgICAgICAgIHJldHVybiBsaW5lOwogICAgIH0KIAotICAgIHJldHVybiBh
bGxvY2F0ZU1lZGl1bUxpbmVTbG93Q2FzZShsb2NrKTsKKyAgICByZXR1cm4gYWxsb2NhdGVNZWRp
dW1MaW5lU2xvd0Nhc2UobG9jaywgYnVtcENsYXNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgYm1h
bGxvYwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaW5lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaW5lLmgJKHJldmlzaW9uIDE3MzIyMikKKysrIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvTGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBA
CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgbWF4
TGluZVJlZkNvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBjaGFyPjo6bWF4KCk7
CisKIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KIGNsYXNzIExpbmUgewogcHVibGljOgpAQCAtNDAs
OCArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5pbXVtT2JqZWN0
U2l6ZSA9IFRyYWl0czo6bWluaW11bU9iamVjdFNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBsaW5lU2l6ZSA9IFRyYWl0czo6bGluZVNpemU7CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNoYXIgbWF4UmVmQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNo
YXI+OjptYXgoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGxpbmVTaXplIC8gbWluaW11bU9iamVjdFNp
emUgPCBtYXhSZWZDb3VudCwgIm1heGltdW0gb2JqZWN0IGNvdW50IG11c3QgZml0IGluIExpbmUi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KGxpbmVTaXplIC8gbWluaW11bU9iamVjdFNpemUgPCBtYXhM
aW5lUmVmQ291bnQsICJtYXhpbXVtIG9iamVjdCBjb3VudCBtdXN0IGZpdCBpbiBMaW5lIik7CiAK
ICAgICBzdGF0aWMgTGluZSogZ2V0KHZvaWQqKTsKIApAQCAtODQsNyArODUsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBUcmFpdHM+CiBpbmxpbmUgdm9pZCBMaW5lPFRyYWl0cz46OmNvbmN1cnJlbnRSZWYo
dW5zaWduZWQgY2hhciBjb3VudCkKIHsKICAgICBCQVNTRVJUKCFtX3JlZkNvdW50KTsgLy8gVXAt
cmVmIGZyb20gemVybyBjYW4gYmUgbG9jay1mcmVlIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG90aGVy
IGNsaWVudHMuCi0gICAgQkFTU0VSVChjb3VudCA8PSBtYXhSZWZDb3VudCk7CisgICAgQkFTU0VS
VChjb3VudCA8PSBtYXhMaW5lUmVmQ291bnQpOwogICAgIG1fcmVmQ291bnQgPSBjb3VudDsKIH0K
IApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9NZWRpdW1BbGxvY2F0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL01lZGl1bUFsbG9jYXRvci5oCShyZXZpc2lv
biAxNzMyMjIpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL01lZGl1bUFsbG9jYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgTWVkaXVtQWxsb2NhdG9yX2gKLSNkZWZpbmUg
TWVkaXVtQWxsb2NhdG9yX2gKLQotI2luY2x1ZGUgIkJBc3NlcnQuaCIKLSNpbmNsdWRlICJNZWRp
dW1DaHVuay5oIgotI2luY2x1ZGUgIk1lZGl1bUxpbmUuaCIKLQotbmFtZXNwYWNlIGJtYWxsb2Mg
ewotCi0vLyBIZWxwZXIgb2JqZWN0IGZvciBhbGxvY2F0aW5nIG1lZGl1bSBvYmplY3RzLgotCi1j
bGFzcyBNZWRpdW1BbGxvY2F0b3IgewotcHVibGljOgotICAgIE1lZGl1bUFsbG9jYXRvcigpOwot
Ci0gICAgYm9vbCBpc051bGwoKSB7IHJldHVybiAhbV9lbmQ7IH0KLSAgICBNZWRpdW1MaW5lKiBs
aW5lKCk7Ci0KLSAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwotICAgIGJvb2wgYWxsb2NhdGUo
c2l6ZV90LCB2b2lkKiYpOwotCi0gICAgdW5zaWduZWQgY2hhciBkZXJlZkNvdW50KCk7Ci0gICAg
dm9pZCByZWZpbGwoTWVkaXVtTGluZSopOwotCi1wcml2YXRlOgotICAgIGNoYXIqIG1fZW5kOwot
ICAgIHNpemVfdCBtX3JlbWFpbmluZzsKLSAgICBzaXplX3QgbV9vYmplY3RDb3VudDsKLX07Ci0K
LWlubGluZSBNZWRpdW1BbGxvY2F0b3I6Ok1lZGl1bUFsbG9jYXRvcigpCi0gICAgOiBtX2VuZCgp
Ci0gICAgLCBtX3JlbWFpbmluZygpCi0gICAgLCBtX29iamVjdENvdW50KCkKLXsKLX0KLQotaW5s
aW5lIE1lZGl1bUxpbmUqIE1lZGl1bUFsbG9jYXRvcjo6bGluZSgpCi17Ci0gICAgcmV0dXJuIE1l
ZGl1bUxpbmU6OmdldChtX2VuZCAtIDEpOwotfQotCi1pbmxpbmUgdm9pZCogTWVkaXVtQWxsb2Nh
dG9yOjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKLXsKLSAgICBCQVNTRVJUKHNpemUgPD0gbV9yZW1h
aW5pbmcpOwotICAgIEJBU1NFUlQoc2l6ZSA9PSByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdubWVu
dD4oc2l6ZSkpOwotICAgIEJBU1NFUlQoc2l6ZSA+PSBNZWRpdW1MaW5lOjptaW5pbXVtT2JqZWN0
U2l6ZSk7Ci0KLSAgICBtX3JlbWFpbmluZyAtPSBzaXplOwotICAgIHZvaWQqIG9iamVjdCA9IG1f
ZW5kIC0gbV9yZW1haW5pbmcgLSBzaXplOwotICAgIEJBU1NFUlQoaXNTbWFsbE9yTWVkaXVtKG9i
amVjdCkgJiYgIWlzU21hbGwob2JqZWN0KSk7Ci0KLSAgICArK21fb2JqZWN0Q291bnQ7Ci0gICAg
cmV0dXJuIG9iamVjdDsKLX0KLQotaW5saW5lIGJvb2wgTWVkaXVtQWxsb2NhdG9yOjphbGxvY2F0
ZShzaXplX3Qgc2l6ZSwgdm9pZComIG9iamVjdCkKLXsKLSAgICBpZiAoc2l6ZSA+IG1fcmVtYWlu
aW5nKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBvYmplY3QgPSBhbGxvY2F0ZShzaXpl
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIGNoYXIgTWVkaXVtQWxs
b2NhdG9yOjpkZXJlZkNvdW50KCkKLXsKLSAgICByZXR1cm4gTWVkaXVtTGluZTo6bWF4UmVmQ291
bnQgLSBtX29iamVjdENvdW50OwotfQotCi1pbmxpbmUgdm9pZCBNZWRpdW1BbGxvY2F0b3I6OnJl
ZmlsbChNZWRpdW1MaW5lKiBsaW5lKQotewotICAgIGxpbmUtPmNvbmN1cnJlbnRSZWYoTWVkaXVt
TGluZTo6bWF4UmVmQ291bnQpOwotICAgIG1fZW5kID0gbGluZS0+ZW5kKCk7Ci0gICAgbV9yZW1h
aW5pbmcgPSBtZWRpdW1MaW5lU2l6ZTsKLSAgICBtX29iamVjdENvdW50ID0gMDsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gTWVkaXVtQWxsb2NhdG9yX2gKSW5kZXg6
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCShyZXZpc2lvbiAxNzMyMjIpCisrKyBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsMTIgQEAgaW5saW5lIGJvb2wgaXNTbWFsbCh2b2lkKiBzbWFsbE9yTWVkaXVtKQogICAgIHJl
dHVybiB0ZXN0KHNtYWxsT3JNZWRpdW0sIHNtYWxsT3JNZWRpdW1TbWFsbFR5cGVNYXNrKTsKIH0K
IAoraW5saW5lIGJvb2wgaXNNZWRpdW0odm9pZCogc21hbGxPck1lZGl1bSkKK3sKKyAgICBCQVNT
RVJUKGlzU21hbGxPck1lZGl1bShzbWFsbE9yTWVkaXVtKSk7CisgICAgcmV0dXJuICFpc1NtYWxs
KHNtYWxsT3JNZWRpdW0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKICNlbmRpZiAv
LyBPYmplY3RUeXBlX2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFnZS5oCShyZXZpc2lvbiAxNzMyMjIp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
MTUgKzQ5LDE1IEBAIHB1YmxpYzoKICAgICBib29sIGRlcmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0
aWNNdXRleD4mKTsKICAgICB1bnNpZ25lZCByZWZDb3VudChzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TXV0ZXg+JikgeyByZXR1cm4gbV9yZWZDb3VudDsgfQogICAgIAotICAgIHNpemVfdCBzbWFsbFNp
emVDbGFzcygpIHsgcmV0dXJuIG1fc21hbGxTaXplQ2xhc3M7IH0KLSAgICB2b2lkIHNldFNtYWxs
U2l6ZUNsYXNzKHNpemVfdCBzbWFsbFNpemVDbGFzcykgeyBtX3NtYWxsU2l6ZUNsYXNzID0gc21h
bGxTaXplQ2xhc3M7IH0KKyAgICBzaXplX3QgYnVtcENsYXNzKCkgeyByZXR1cm4gbV9idW1wQ2xh
c3M7IH0KKyAgICB2b2lkIHNldEJ1bXBDbGFzcyhzaXplX3QgYnVtcENsYXNzKSB7IG1fYnVtcENs
YXNzID0gYnVtcENsYXNzOyB9CiAgICAgCiAgICAgTGluZSogYmVnaW4oKTsKICAgICBMaW5lKiBl
bmQoKTsKIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBjaGFyIG1fcmVmQ291bnQ7Ci0gICAgdW5z
aWduZWQgY2hhciBtX3NtYWxsU2l6ZUNsYXNzOworICAgIHVuc2lnbmVkIGNoYXIgbV9idW1wQ2xh
c3M7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1NpemVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9T
aXplcy5oCShyZXZpc2lvbiAxNzMyMjQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDggQEAgbmFtZXNwYWNlIFNpemVzIHsKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1lZGl1bUNodW5rT2Zmc2V0ID0gc3VwZXJDaHVua1NpemUg
KiAyIC8gNDsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1lZGl1bUNodW5rTWFzayA9IH4obWVk
aXVtQ2h1bmtTaXplIC0gMXVsKTsKIAorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYnVtcE1heCA9
IG1lZGl1bU1heDsKKwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VDaHVua1NpemUgPSBz
dXBlckNodW5rU2l6ZSAvIDI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUNodW5rT2Zm
c2V0ID0gMDsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlQ2h1bmtNYXNrID0gfihsYXJn
ZUNodW5rU2l6ZSAtIDF1bCk7CkBAIC03MSw3ICs3Myw3IEBAIG5hbWVzcGFjZSBTaXplcyB7CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUFsaWdubWVudFNoaWZ0ID0gNjsKICAgICBzdGF0
aWNfYXNzZXJ0KDEgPDwgbGFyZ2VBbGlnbm1lbnRTaGlmdCA9PSBsYXJnZUFsaWdubWVudCwgImxh
cmdlQWxpZ25tZW50U2hpZnQgYmUgbG9nMihsYXJnZUFsaWdubWVudCkuIik7CiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBsYXJnZU1heCA9IGxhcmdlQ2h1bmtTaXplICogOTkgLyAxMDA7IC8vIFBs
ZW50eSBvZiByb29tIGZvciBtZXRhZGF0YS4KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdl
TWluID0gMTAyNDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlTWluID0gbWVkaXVtTWF4
OwogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzZWdyZWdhdGVkRnJlZUxpc3RTZWFyY2hEZXB0
aCA9IDE2OwogCkBAIC05MiwxMCArOTQsMTAgQEAgbmFtZXNwYWNlIFNpemVzIHsKICAgICAKICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzY2F2ZW5nZVNsZWVwRHVy
YXRpb24gPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDUxMik7CiAKLSAgICBpbmxpbmUgc2l6
ZV90IHNtYWxsU2l6ZUNsYXNzRm9yKHNpemVfdCBzaXplKQorICAgIGlubGluZSBzaXplX3QgYnVt
cENsYXNzKHNpemVfdCBzaXplKQogICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBz
bWFsbFNpemVDbGFzc01hc2sgPSAoc21hbGxNYXggLyBhbGlnbm1lbnQpIC0gMTsKLSAgICAgICAg
cmV0dXJuIG1hc2soKHNpemUgLSAxdWwpIC8gYWxpZ25tZW50LCBzbWFsbFNpemVDbGFzc01hc2sp
OworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJ1bXBDbGFzc01hc2sgPSAoYnVtcE1heCAv
IGFsaWdubWVudCkgLSAxOworICAgICAgICByZXR1cm4gbWFzaygoc2l6ZSAtIDF1bCkgLyBhbGln
bm1lbnQsIGJ1bXBDbGFzc01hc2spOwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvU21hbGxBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1NtYWxsQWxsb2NhdG9yLmgJKHJldmlzaW9uIDE3MzIyMikKKysrIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvU21hbGxBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIFNtYWxsQWxsb2NhdG9yX2gKLSNkZWZpbmUgU21hbGxBbGxvY2F0b3JfaAotCi0jaW5jbHVk
ZSAiQkFzc2VydC5oIgotI2luY2x1ZGUgIlNtYWxsQ2h1bmsuaCIKLSNpbmNsdWRlICJTbWFsbExp
bmUuaCIKLQotbmFtZXNwYWNlIGJtYWxsb2MgewotCi0vLyBIZWxwZXIgb2JqZWN0IGZvciBhbGxv
Y2F0aW5nIHNtYWxsIG9iamVjdHMuCi0KLWNsYXNzIFNtYWxsQWxsb2NhdG9yIHsKLXB1YmxpYzoK
LSAgICBTbWFsbEFsbG9jYXRvcigpOwotICAgIFNtYWxsQWxsb2NhdG9yKHNpemVfdCk7Ci0gICAg
Ci0gICAgYm9vbCBpc051bGwoKSB7IHJldHVybiAhbV9wdHI7IH0KLSAgICBTbWFsbExpbmUqIGxp
bmUoKTsKLQotICAgIGJvb2wgY2FuQWxsb2NhdGUoKSB7IHJldHVybiAhIW1fcmVtYWluaW5nOyB9
Ci0gICAgdm9pZCogYWxsb2NhdGUoKTsKLQotICAgIHVuc2lnbmVkIHNob3J0IG9iamVjdENvdW50
KCk7Ci0gICAgdW5zaWduZWQgY2hhciBkZXJlZkNvdW50KCk7Ci0gICAgdm9pZCByZWZpbGwoU21h
bGxMaW5lKik7Ci0KLXByaXZhdGU6Ci0gICAgY2hhciogbV9wdHI7Ci0gICAgdW5zaWduZWQgc2hv
cnQgbV9zaXplOwotICAgIHVuc2lnbmVkIGNoYXIgbV9yZW1haW5pbmc7Ci0gICAgdW5zaWduZWQg
Y2hhciBtX21heE9iamVjdENvdW50OwotfTsKLQotaW5saW5lIFNtYWxsQWxsb2NhdG9yOjpTbWFs
bEFsbG9jYXRvcigpCi0gICAgOiBtX3B0cigpCi0gICAgLCBtX3NpemUoKQotICAgICwgbV9yZW1h
aW5pbmcoKQotICAgICwgbV9tYXhPYmplY3RDb3VudCgpCi17Ci19Ci0KLWlubGluZSBTbWFsbEFs
bG9jYXRvcjo6U21hbGxBbGxvY2F0b3Ioc2l6ZV90IHNpemUpCi0gICAgOiBtX3B0cigpCi0gICAg
LCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fcmVtYWluaW5nKCkKLSAgICAsIG1fbWF4T2JqZWN0Q291
bnQoc21hbGxMaW5lU2l6ZSAvIHNpemUpCi17Ci19Ci0KLWlubGluZSBTbWFsbExpbmUqIFNtYWxs
QWxsb2NhdG9yOjpsaW5lKCkKLXsKLSAgICByZXR1cm4gU21hbGxMaW5lOjpnZXQoY2FuQWxsb2Nh
dGUoKSA/IG1fcHRyIDogbV9wdHIgLSAxKTsKLX0KLQotaW5saW5lIHZvaWQqIFNtYWxsQWxsb2Nh
dG9yOjphbGxvY2F0ZSgpCi17Ci0gICAgQkFTU0VSVChtX3JlbWFpbmluZyk7Ci0gICAgQkFTU0VS
VChtX3NpemUgPj0gU21hbGxMaW5lOjptaW5pbXVtT2JqZWN0U2l6ZSk7Ci0KLSAgICAtLW1fcmVt
YWluaW5nOwotICAgIGNoYXIqIHJlc3VsdCA9IG1fcHRyOwotICAgIG1fcHRyICs9IG1fc2l6ZTsK
LSAgICBCQVNTRVJUKGlzU21hbGwocmVzdWx0KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
aW5saW5lIHVuc2lnbmVkIHNob3J0IFNtYWxsQWxsb2NhdG9yOjpvYmplY3RDb3VudCgpCi17Ci0g
ICAgcmV0dXJuIG1fbWF4T2JqZWN0Q291bnQgLSBtX3JlbWFpbmluZzsKLX0KLQotaW5saW5lIHVu
c2lnbmVkIGNoYXIgU21hbGxBbGxvY2F0b3I6OmRlcmVmQ291bnQoKQotewotICAgIHJldHVybiBT
bWFsbExpbmU6Om1heFJlZkNvdW50IC0gb2JqZWN0Q291bnQoKTsKLX0KLQotaW5saW5lIHZvaWQg
U21hbGxBbGxvY2F0b3I6OnJlZmlsbChTbWFsbExpbmUqIGxpbmUpCi17Ci0gICAgQkFTU0VSVCgh
Y2FuQWxsb2NhdGUoKSk7Ci0gICAgbGluZS0+Y29uY3VycmVudFJlZihTbWFsbExpbmU6Om1heFJl
ZkNvdW50KTsKLSAgICBtX3B0ciA9IGxpbmUtPmJlZ2luKCk7Ci0gICAgbV9yZW1haW5pbmcgPSBt
X21heE9iamVjdENvdW50OwotfQotCi19IC8vIG5hbWVzcGFjZSBibWFsbG9jCi0KLSNlbmRpZiAv
LyBTbWFsbEFsbG9jYXRvcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237895</attachid>
            <date>2014-09-10 09:30:44 -0700</date>
            <delta_ts>2014-09-10 13:04:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136693-20140910093040.patch</filename>
            <type>text/plain</type>
            <size>41390</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAxNzMyMjIpCisrKyBTb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwxMCBAQAog
I2VuZGlmCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShDT0NPQSkgJiYgKENQVShYODZfNjQpIHx8
IENQVShBUk02NCkpKQorI2RlZmluZSBVU0VfQk1BTExPQyAxCisjZW5kaWYKKwogI2lmICEoZGVm
aW5lZChVU0VfU1lTVEVNX01BTExPQykgJiYgVVNFX1NZU1RFTV9NQUxMT0MpICYmIGRlZmluZWQo
TkRFQlVHKQogI2RlZmluZSBGT1JDRV9TWVNURU1fTUFMTE9DIDAKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzM0NTMpCisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw5OCBAQAorMjAxNC0wOS0wOSAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIGJtYWxsb2Mgc2hvdWxkIHNlZ3JlZ2F0ZSBtZWRp
dW0tc2l6ZWQgb2JqZWN0cyBieSBsaW5lIGxpa2UgaXQgZG9lcyBmb3Igc21hbGwtc2l6ZWQgb2Jq
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBzaGF2ZXMgNCUgb2ZmIG9mIGhlYXAgc2l6ZSBvbiB0aGUgTWFsbG9jQmVuY2ggKl9tZW1vcnlf
d2FybmluZworICAgICAgICBiZW5jaG1hcmtzLgorCisgICAgICAgIE5vIHRocm91Z2hwdXQgY2hh
bmdlLgorCisgICAgICAgIEkgYWxzbyB0b29rIHRoZSBvcHBvcnR1bml0eSB0byBlbGltaW5hdGUg
dGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gc21hbGwKKyAgICAgICAgYW5kIG1lZGl1bSBvYmplY3Qg
YWxsb2NhdGlvbiBvbiB0aGUgZmFzdCBwYXRoLCBzbyBtZWRpdW0tc2l6ZWQgb2JqZWN0cworICAg
ICAgICBjYW4gYmUgYWxsb2NhdGVkIHRoZSBub3JtYWwgd2F5IG9uIHRoZSBmYXN0IHBhdGguIFRo
aXMgbWlnaHQgaGVscCBhdm9pZAorICAgICAgICBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaWYg
d2UgbmVlZCB0byBzaHJpbmsgbGluZSBzaXplcyBhbmQga2ljaworICAgICAgICBtb3JlIG9iamVj
dHMgdXAgaW50byB0aGUgbWVkaXVtIGNhdGVnb3J5LgorCisgICAgICAgIFVubGlrZSBzbWFsbCBv
YmplY3RzLCBtZWRpdW0gb2JqZWN0cyBzdGlsbCBkbyBub3Qgc2VncmVnYXRlIGJ5IHBhZ2UuIFRo
YXQKKyAgICAgICAgaXMgYSBtZW1vcnkgdXNlIHJlZ3Jlc3Npb24uIFByZXN1bWFibHksIHRoZSBj
b3N0IG9mIHdhc3RlZCBwYWdlIHNwYWNlCisgICAgICAgIG91dHdlaWdocyB0aGUgYmVuZWZpdCBv
ZiBzaW1pbGFyIGxpZmV0aW1lIGluIHRoZSBjYXNlIG9mIG1lZGl1bSBvYmplY3RzCisgICAgICAg
IGJlY2F1c2UgdGhlIHJhbmdlIG9mIG1lZGl1bSBzaXplcyBpcyBncmVhdGVyIHRoYW4gdGhlIHJh
bmdlIG9mIHNtYWxsIHNpemVzLgorCisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKGJt
YWxsb2M6OkFsbG9jYXRvcjo6QWxsb2NhdG9yKToKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9jYXRv
cjo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjpsb2dTbWFsbCk6Cisg
ICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OmxvZ01lZGl1bSk6CisgICAgICAgIChibWFsbG9j
OjpBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAoYm1hbGxvYzo6QWxsb2Nh
dG9yOjpsb2cpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjphbGxvY2F0
ZU1lZGl1bSk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9BbGxvY2F0b3IuaDoKKyAgICAg
ICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6YWxsb2NhdGVGYXN0Q2FzZSk6IEFsbG9jYXRvcnMgZG9u
J3Qga25vdyBhIHByaW9yaQorICAgICAgICB3aGV0aGVyIHRoZXkgYWxsb2NhdGUgb3V0IG9mIHNt
YWxsIG9yIG1lZGl1bSBsaW5lcy4gSW5zdGVhZCwgd2UgaGF2ZSBhCisgICAgICAgIG1vbm9saXRo
aWMgYXJyYXkgb2YgYnVtcCBhbGxvY2F0b3JzLCB3aGljaCBoYXBwZW4gdG8gYWxsb2NhdGUgaW50
bworICAgICAgICBkaWZmZXJlbnQtc2l6ZWQgbGluZXMuIFRoaXMgYWxsb3dzIHVzIHRvIGFsbG9j
YXRlIG1lZGl1bS1zaXplZCBvYmplY3RzCisgICAgICAgIG9uIHRoZSBmYXN0IHBhdGggd2l0aG91
dCBhbnkgZXh0cmEgaW5zdHJ1Y3Rpb25zLgorCisgICAgICAgICogYm1hbGxvYy9CdW1wQWxsb2Nh
dG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxBbGxvY2F0b3Iu
aC4KKyAgICAgICAgKGJtYWxsb2M6OkJ1bXBBbGxvY2F0b3I6OnNpemUpOgorICAgICAgICAoYm1h
bGxvYzo6QnVtcEFsbG9jYXRvcjo6QnVtcEFsbG9jYXRvcik6CisgICAgICAgIChibWFsbG9jOjpC
dW1wQWxsb2NhdG9yOjpsaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkJ1bXBBbGxvY2F0b3I6OmFs
bG9jYXRlKToKKyAgICAgICAgKGJtYWxsb2M6OkJ1bXBBbGxvY2F0b3I6Om9iamVjdENvdW50KToK
KyAgICAgICAgKGJtYWxsb2M6OkJ1bXBBbGxvY2F0b3I6OmRlcmVmQ291bnQpOgorICAgICAgICAo
Ym1hbGxvYzo6QnVtcEFsbG9jYXRvcjo6cmVmaWxsKToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxs
QWxsb2NhdG9yOjpTbWFsbEFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpT
bWFsbEFsbG9jYXRvcjo6bGluZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpTbWFsbEFs
bG9jYXRvcjo6YWxsb2NhdGUpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6U21hbGxBbGxv
Y2F0b3I6Om9iamVjdENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQWxs
b2NhdG9yOjpkZXJlZkNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQWxs
b2NhdG9yOjpyZWZpbGwpOiBEZWxldGVkLiBSZW5hbWVkIFNtYWxsQWxsb2NhdG9yIHRvCisgICAg
ICAgIEJ1bXBBbGxvY2F0b3IgYmVjYXVzZSBpdCdzIGEgZ2VuZXJhbCBwdXJwb3NlIGFsbG9jYXRv
ciB0aGF0IHdlIHVzZSBub3cKKyAgICAgICAgZm9yIG1lZGl1bSBvYmplY3RzIHRvby4KKworICAg
ICAgICBTaW5jZSBvdXIgdHlwZSBkb2Vzbid0IGluZGljYXRlIHdoYXQga2luZCBvZiBsaW5lIHdl
IGFsbG9jYXRlIGludG8sCisgICAgICAgIG91ciBjbGllbnQgbXVzdCBzcGVjaWZ5IHRoYXQgYXMg
YSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd2hlbiBwZXJmb3JtaW5nCisgICAgICAgIG9wZXJhdGlvbnMg
dGhhdCBkZXBlbmQgb24gbGluZSBzaXplLCBhbmQgd2UgdmVyaWZ5IHdpdGggYW4gQVNTRVJUIHRo
YXQKKyAgICAgICAgb3VyIGNsaWVudCBnb3QgaXQgcmlnaHQuCisKKyAgICAgICAgKiBibWFsbG9j
L0RlYWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjpkZWFsbG9j
YXRlU21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjphbGxvY2F0ZVNt
YWxsTGluZSk6CisgICAgICAgIChibWFsbG9jOjpEZWFsbG9jYXRvcjo6YWxsb2NhdGVNZWRpdW1M
aW5lKToKKyAgICAgICAgKiBibWFsbG9jL0RlYWxsb2NhdG9yLmg6CisgICAgICAgICogYm1hbGxv
Yy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxMaW5lU2xv
d0Nhc2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVNZWRpdW1MaW5lU2xvd0Nh
c2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6
ZGVhbGxvY2F0ZVNtYWxsTGluZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNt
YWxsTGluZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZU1lZGl1bUxpbmUpOiBS
ZW5hbWVkIHNtYWxsU2l6ZUNsYXNzIHRvIGJ1bXBDbGFzcworICAgICAgICBiZWNhdXNlIGl0J3Mg
bm90IGp1c3QgZm9yIHNtYWxsIG9iamVjdHMgYW55bW9yZSwgYW5kIGl0IG5ldmVyIHJlYWxseQor
ICAgICAgICBjb3JyZXNwb25kZWQgdG8gdGhlIGxpdGVyYWwgbm90aW9uIG9mIGEgc2l6ZSBjbGFz
cy4KKworICAgICAgICAqIGJtYWxsb2MvTGluZS5oOgorICAgICAgICAoYm1hbGxvYzo6TGluZTxU
cmFpdHM+Ojpjb25jdXJyZW50UmVmKToKKworICAgICAgICAqIGJtYWxsb2MvTWVkaXVtQWxsb2Nh
dG9yLmg6IFJlbW92ZWQuIE9ubHkgb25lIHdheSB0byBidW1wIGFsbG9jYXRlIG5vdy4KKworICAg
ICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5oOgorICAgICAgICAoYm1hbGxvYzo6aXNNZWRpdW0p
OgorCisgICAgICAgICogYm1hbGxvYy9QYWdlLmg6CisgICAgICAgIChibWFsbG9jOjpQYWdlOjpi
dW1wQ2xhc3MpOgorICAgICAgICAoYm1hbGxvYzo6UGFnZTo6c2V0QnVtcENsYXNzKToKKyAgICAg
ICAgKGJtYWxsb2M6OlBhZ2U6OnNtYWxsU2l6ZUNsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKGJt
YWxsb2M6OlBhZ2U6OnNldFNtYWxsU2l6ZUNsYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFs
bG9jL1NpemVzLmg6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6YnVtcENsYXNzKToKKyAgICAg
ICAgKGJtYWxsb2M6OlNpemVzOjpzbWFsbFNpemVDbGFzc0Zvcik6IERlbGV0ZWQuIFVwZGF0ZWQg
Zm9yIHJlbmFtZXMuCisKKyAgICAgICAgKiBibWFsbG9jL1NtYWxsQWxsb2NhdG9yLmg6IFJlbW92
ZWQuCisKIDIwMTQtMDktMDUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBibWFsbG9jIHNob3VsZCBob25vciB0aGUgRmFzdE1hbGxvYyBzdGF0aXN0aWNzIEFQ
SQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTczMjIyKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw3IEBACiAJ
CTE0REQ3ODk4MThGNDhENEEwMDk1MDcwMiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NUY2ODU2MTc5REM4Q0EwMEQ2NTU5OCAv
KiBBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxNERENzg5OTE4RjQ4RDRBMDA5NTA3MDIgLyogQ2FjaGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDQ2OUU1MTdBNDZCRkUwMEY5RUEx
RCAvKiBDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTE0REQ3ODlBMThGNDhENEEwMDk1MDcwMiAvKiBEZWFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ1RjY4NUExNzlEQzkwMjAw
RDY1NTk4IC8qIERlYWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMTRERDc4OUIxOEY0OEQ0QTAwOTUwNzAyIC8qIE1lZGl1bUFsbG9j
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQx
M0U0NzAxOEEwNjYxNzAwNTQ2RDY4IC8qIE1lZGl1bUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0REQ3ODlDMThGNDhENEEwMDk1
MDcwMiAvKiBTbWFsbEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8qIFNtYWxsQWxsb2NhdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRE
RDc4OUMxOEY0OEQ0QTAwOTUwNzAyIC8qIEJ1bXBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTNFNDYyMTg5REUxQ0QwMDU0NkQ2OCAv
KiBCdW1wQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMTRERDc4QjQxOEY0OEQ2QjAwOTUwNzAyIC8qIENodW5rLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDdBQUE5NDE4Q0U1Q0E2MDAy
MjAxRTQgLyogQ2h1bmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxNERENzhCNTE4RjQ4RDZCMDA5NTA3MDIgLyogTGluZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREQTMyMDcxODg1RjlFNjAwNzI2
OUUwIC8qIExpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxNERENzhCNjE4RjQ4RDZCMDA5NTA3MDIgLyogTWVkaXVtQ2h1bmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0N0FBQThFMThDRDg5RTMw
MDIyMDFFNCAvKiBNZWRpdW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC03NSw5ICs3NCw4IEBACiAJCTE0MTA1RTdCMThEQkQ3QUYwMDNB
MTA2RSAvKiBCb3VuZGFyeVRhZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQm91bmRhcnlUYWdJbmxpbmVzLmg7IHBhdGggPSBibWFsbG9jL0JvdW5kYXJ5VGFnSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDEwNUU4MzE4RTE0Mzc0MDAz
QTEwNkUgLyogT2JqZWN0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBPYmplY3RUeXBlLmNwcDsgcGF0aCA9IGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTNFNDYwMTg5RENFMUUwMDU0NkQ2OCAvKiBJbmxp
bmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5saW5lLmg7IHBhdGggPSBi
bWFsbG9jL0lubGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDEzRTQ2MjE4
OURFMUNEMDA1NDZENjggLyogU21hbGxBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IFNtYWxsQWxsb2NhdG9yLmg7IHBhdGggPSBibWFs
bG9jL1NtYWxsQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MTNF
NDYyMTg5REUxQ0QwMDU0NkQ2OCAvKiBCdW1wQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBCdW1wQWxsb2NhdG9yLmg7IHBhdGggPSBi
bWFsbG9jL0J1bXBBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQx
M0U0NjgxODlFRURFNDAwNTQ2RDY4IC8qIEJBc3NlcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQkFzc2VydC5oOyBwYXRoID0gYm1hbGxvYy9CQXNzZXJ0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MTNFNDcwMThBMDY2MTcwMDU0NkQ2OCAvKiBNZWRpdW1B
bGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaXVtQWxsb2Nh
dG9yLmg7IHBhdGggPSBibWFsbG9jL01lZGl1bUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDE3RjY0NTE4QjU0QTcwMDA3NkZBM0YgLyogQmVnaW5UYWcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQmVnaW5UYWcuaDsgcGF0aCA9IGJtYWxsb2Mv
QmVnaW5UYWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxN0Y2NDYxOEI1NEE3
MDAwNzZGQTNGIC8qIEVuZFRhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBF
bmRUYWcuaDsgcGF0aCA9IGJtYWxsb2MvRW5kVGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0MTdGNjRGMThCNzI4MEMwMDc2RkEzRiAvKiBTeXNjYWxsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN5c2NhbGwuaDsgcGF0aCA9IGJtYWxsb2MvU3lzY2FsbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM1LDggKzIzMyw3IEBACiAJCQkJMTQ0
NDY5RTUxN0E0NkJGRTAwRjlFQTFEIC8qIENhY2hlLmggKi8sCiAJCQkJMTQ1RjY4NTkxNzlEQzkw
MjAwRDY1NTk4IC8qIERlYWxsb2NhdG9yLmNwcCAqLywKIAkJCQkxNDVGNjg1QTE3OURDOTAyMDBE
NjU1OTggLyogRGVhbGxvY2F0b3IuaCAqLywKLQkJCQkxNDEzRTQ3MDE4QTA2NjE3MDA1NDZENjgg
LyogTWVkaXVtQWxsb2NhdG9yLmggKi8sCi0JCQkJMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8q
IFNtYWxsQWxsb2NhdG9yLmggKi8sCisJCQkJMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8qIEJ1
bXBBbGxvY2F0b3IuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gY2FjaGU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMzA3LDkgKzMwNCw4IEBACiAJCQkJMTQwMDI3NEMxOEY4OUMzRDAw
MTE1Qzk3IC8qIFNlZ3JlZ2F0ZWRGcmVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4
OEQxOEY0OENDNjAwOTUwNzAyIC8qIEJlZ2luVGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERE
NzhDRDE4RjQ4RDc1MDA5NTA3MDIgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTE0REQ3
ODlDMThGNDhENEEwMDk1MDcwMiAvKiBTbWFsbEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMTRERDc4OUMxOEY0OEQ0QTAwOTUwNzAyIC8qIEJ1bXBBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0REQ3ODk5MThGNDhENEEwMDk1MDcwMiAvKiBDYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMTRERDc4OUIxOEY0OEQ0QTAwOTUwNzAyIC8qIE1lZGl1bUFsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QkUxOEY0OEQ2QjAwOTUwNzAyIC8qIFNtYWxsVHJhaXRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzg5MDE4RjQ4Q0VCMDA5NTA3MDIgLyogU2l6ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OEM3MThGNDhENzUwMDk1MDcwMiAvKiBCQXNzZXJ0
LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAJ
KHJldmlzaW9uIDE3MzIyMikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTQgKzM3LDEzIEBAIG5hbWVzcGFjZSBibWFsbG9jIHsK
IAogQWxsb2NhdG9yOjpBbGxvY2F0b3IoRGVhbGxvY2F0b3ImIGRlYWxsb2NhdG9yKQogICAgIDog
bV9kZWFsbG9jYXRvcihkZWFsbG9jYXRvcikKLSAgICAsIG1fc21hbGxBbGxvY2F0b3JzKCkKLSAg
ICAsIG1fbWVkaXVtQWxsb2NhdG9yKCkKKyAgICAsIG1fYWxsb2NhdG9ycygpCiAgICAgLCBtX3Nt
YWxsQWxsb2NhdG9yTG9nKCkKICAgICAsIG1fbWVkaXVtQWxsb2NhdG9yTG9nKCkKIHsKICAgICB1
bnNpZ25lZCBzaG9ydCBzaXplID0gYWxpZ25tZW50OwotICAgIGZvciAoYXV0byYgYWxsb2NhdG9y
IDogbV9zbWFsbEFsbG9jYXRvcnMpIHsKLSAgICAgICAgYWxsb2NhdG9yID0gU21hbGxBbGxvY2F0
b3Ioc2l6ZSk7CisgICAgZm9yIChhdXRvJiBhbGxvY2F0b3IgOiBtX2FsbG9jYXRvcnMpIHsKKyAg
ICAgICAgYWxsb2NhdG9yID0gQnVtcEFsbG9jYXRvcihzaXplLCBzaXplIDw9IHNtYWxsTWF4ID8g
c21hbGxMaW5lU2l6ZSA6IG1lZGl1bUxpbmVTaXplKTsKICAgICAgICAgc2l6ZSArPSBhbGlnbm1l
bnQ7CiAgICAgfQogfQpAQCAtNTYsMTUgKzU1LDE3IEBAIEFsbG9jYXRvcjo6fkFsbG9jYXRvcigp
CiAgICAgCiB2b2lkIEFsbG9jYXRvcjo6c2NhdmVuZ2UoKQogewotICAgIGZvciAoYXV0byYgYWxs
b2NhdG9yIDogbV9zbWFsbEFsbG9jYXRvcnMpCi0gICAgICAgIGxvZyhhbGxvY2F0b3IpOworICAg
IGZvciAoYXV0byYgYWxsb2NhdG9yIDogbV9hbGxvY2F0b3JzKSB7CisgICAgICAgIGlmIChhbGxv
Y2F0b3Iuc2l6ZSgpIDw9IHNtYWxsTWF4KQorICAgICAgICAgICAgbG9nU21hbGwoYWxsb2NhdG9y
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nTWVkaXVtKGFsbG9jYXRvcik7CisgICAg
fQogICAgIHByb2Nlc3NTbWFsbEFsbG9jYXRvckxvZygpOwotCi0gICAgbG9nKG1fbWVkaXVtQWxs
b2NhdG9yKTsKICAgICBwcm9jZXNzTWVkaXVtQWxsb2NhdG9yTG9nKCk7CiB9CiAKLXZvaWQgQWxs
b2NhdG9yOjpsb2coU21hbGxBbGxvY2F0b3ImIGFsbG9jYXRvcikKK3ZvaWQgQWxsb2NhdG9yOjps
b2dTbWFsbChCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IpCiB7CiAgICAgaWYgKG1fc21hbGxBbGxv
Y2F0b3JMb2cuc2l6ZSgpID09IG1fc21hbGxBbGxvY2F0b3JMb2cuY2FwYWNpdHkoKSkKICAgICAg
ICAgcHJvY2Vzc1NtYWxsQWxsb2NhdG9yTG9nKCk7CkBAIC03Miw3ICs3MywxOCBAQCB2b2lkIEFs
bG9jYXRvcjo6bG9nKFNtYWxsQWxsb2NhdG9yJiBhbGxvCiAgICAgaWYgKGFsbG9jYXRvci5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zbWFsbEFsbG9jYXRvckxvZy5wdXNoKHN0
ZDo6bWFrZV9wYWlyKGFsbG9jYXRvci5saW5lKCksIGFsbG9jYXRvci5kZXJlZkNvdW50KCkpKTsK
KyAgICBtX3NtYWxsQWxsb2NhdG9yTG9nLnB1c2goc3RkOjptYWtlX3BhaXIoYWxsb2NhdG9yLmxp
bmU8U21hbGxMaW5lPigpLCBhbGxvY2F0b3IuZGVyZWZDb3VudCgpKSk7Cit9CisKK3ZvaWQgQWxs
b2NhdG9yOjpsb2dNZWRpdW0oQnVtcEFsbG9jYXRvciYgYWxsb2NhdG9yKQoreworICAgIGlmICht
X21lZGl1bUFsbG9jYXRvckxvZy5zaXplKCkgPT0gbV9tZWRpdW1BbGxvY2F0b3JMb2cuY2FwYWNp
dHkoKSkKKyAgICAgICAgcHJvY2Vzc01lZGl1bUFsbG9jYXRvckxvZygpOworICAgIAorICAgIGlm
IChhbGxvY2F0b3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaXVtQWxs
b2NhdG9yTG9nLnB1c2goc3RkOjptYWtlX3BhaXIoYWxsb2NhdG9yLmxpbmU8TWVkaXVtTGluZT4o
KSwgYWxsb2NhdG9yLmRlcmVmQ291bnQoKSkpOwogfQogCiB2b2lkIEFsbG9jYXRvcjo6cHJvY2Vz
c1NtYWxsQWxsb2NhdG9yTG9nKCkKQEAgLTg3LDE3ICs5OSw2IEBAIHZvaWQgQWxsb2NhdG9yOjpw
cm9jZXNzU21hbGxBbGxvY2F0b3JMb2cKICAgICBtX3NtYWxsQWxsb2NhdG9yTG9nLmNsZWFyKCk7
CiB9CiAKLXZvaWQgQWxsb2NhdG9yOjpsb2coTWVkaXVtQWxsb2NhdG9yJiBhbGxvY2F0b3IpCi17
Ci0gICAgaWYgKG1fbWVkaXVtQWxsb2NhdG9yTG9nLnNpemUoKSA9PSBtX21lZGl1bUFsbG9jYXRv
ckxvZy5jYXBhY2l0eSgpKQotICAgICAgICBwcm9jZXNzTWVkaXVtQWxsb2NhdG9yTG9nKCk7Ci0K
LSAgICBpZiAoYWxsb2NhdG9yLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX21l
ZGl1bUFsbG9jYXRvckxvZy5wdXNoKHN0ZDo6bWFrZV9wYWlyKGFsbG9jYXRvci5saW5lKCksIGFs
bG9jYXRvci5kZXJlZkNvdW50KCkpKTsKLX0KLQogdm9pZCBBbGxvY2F0b3I6OnByb2Nlc3NNZWRp
dW1BbGxvY2F0b3JMb2coKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4gbG9j
ayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgpKTsKQEAgLTEyNCwzNyArMTI1LDI4IEBAIHZvaWQq
IEFsbG9jYXRvcjo6YWxsb2NhdGVYTGFyZ2Uoc2l6ZV90IHMKICAgICByZXR1cm4gUGVyUHJvY2Vz
czxIZWFwPjo6Z2V0RmFzdENhc2UoKS0+YWxsb2NhdGVYTGFyZ2UobG9jaywgc2l6ZSk7CiB9CiAK
LXZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGVNZWRpdW0oc2l6ZV90IHNpemUpCi17Ci0gICAgTWVk
aXVtQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSBtX21lZGl1bUFsbG9jYXRvcjsKLSAgICBzaXplID0g
cm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnQ+KHNpemUpOwotCi0gICAgdm9pZCogb2JqZWN0
OwotICAgIGlmIChhbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZSwgb2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIG9iamVjdDsKLQotICAgIGxvZyhhbGxvY2F0b3IpOwotICAgIGFsbG9jYXRvci5yZWZpbGwo
bV9kZWFsbG9jYXRvci5hbGxvY2F0ZU1lZGl1bUxpbmUoKSk7Ci0gICAgcmV0dXJuIGFsbG9jYXRv
ci5hbGxvY2F0ZShzaXplKTsKLX0KLQogdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNl
KHNpemVfdCBzaXplKQogewogSUZfREVCVUcoCiAgICAgdm9pZCogZHVtbXk7CiAgICAgQkFTU0VS
VCghYWxsb2NhdGVGYXN0Q2FzZShzaXplLCBkdW1teSkpOwogKQotICAgIGlmIChzaXplIDw9IHNt
YWxsTWF4KSB7Ci0gICAgICAgIHNpemVfdCBzbWFsbFNpemVDbGFzcyA9IHNtYWxsU2l6ZUNsYXNz
Rm9yKHNpemUpOwotICAgICAgICBTbWFsbEFsbG9jYXRvciYgYWxsb2NhdG9yID0gbV9zbWFsbEFs
bG9jYXRvcnNbc21hbGxTaXplQ2xhc3NdOwotICAgICAgICBsb2coYWxsb2NhdG9yKTsKLSAgICAg
ICAgYWxsb2NhdG9yLnJlZmlsbChtX2RlYWxsb2NhdG9yLmFsbG9jYXRlU21hbGxMaW5lKHNtYWxs
U2l6ZUNsYXNzKSk7CisgICAgaWYgKHNpemUgJiYgc2l6ZSA8PSBzbWFsbE1heCkgeworICAgICAg
ICBzaXplX3QgYnVtcENsYXNzID0gYm1hbGxvYzo6YnVtcENsYXNzKHNpemUpOworICAgICAgICBC
dW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSBtX2FsbG9jYXRvcnNbYnVtcENsYXNzXTsKKyAgICAg
ICAgbG9nU21hbGwoYWxsb2NhdG9yKTsKKyAgICAgICAgYWxsb2NhdG9yLnJlZmlsbChtX2RlYWxs
b2NhdG9yLmFsbG9jYXRlU21hbGxMaW5lKGJ1bXBDbGFzcykpOworICAgICAgICByZXR1cm4gYWxs
b2NhdG9yLmFsbG9jYXRlKCk7CisgICAgfQorCisgICAgaWYgKHNpemUgPD0gbWVkaXVtTWF4KSB7
CisgICAgICAgIHNpemVfdCBidW1wQ2xhc3MgPSBibWFsbG9jOjpidW1wQ2xhc3Moc2l6ZSk7Cisg
ICAgICAgIEJ1bXBBbGxvY2F0b3ImIGFsbG9jYXRvciA9IG1fYWxsb2NhdG9yc1tidW1wQ2xhc3Nd
OworICAgICAgICBsb2dNZWRpdW0oYWxsb2NhdG9yKTsKKyAgICAgICAgYWxsb2NhdG9yLnJlZmls
bChtX2RlYWxsb2NhdG9yLmFsbG9jYXRlTWVkaXVtTGluZShidW1wQ2xhc3MpKTsKICAgICAgICAg
cmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSgpOwogICAgIH0KIAotICAgIGlmIChzaXplIDw9IG1l
ZGl1bU1heCkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlTWVkaXVtKHNpemUpOwotICAgIAogICAg
IGlmIChzaXplIDw9IGxhcmdlTWF4KQogICAgICAgICByZXR1cm4gYWxsb2NhdGVMYXJnZShzaXpl
KTsKIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCShyZXZpc2lvbiAxNzMyMjIp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMCArMjYsMTEgQEAKICNpZm5kZWYgQWxsb2NhdG9yX2gKICNkZWZpbmUgQWxsb2NhdG9y
X2gKIAorI2luY2x1ZGUgIkJ1bXBBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGaXhlZFZlY3Rvci5o
IgotI2luY2x1ZGUgIk1lZGl1bUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIk1lZGl1bUNodW5rLmgi
CiAjaW5jbHVkZSAiU2l6ZXMuaCIKLSNpbmNsdWRlICJTbWFsbEFsbG9jYXRvci5oIgorI2luY2x1
ZGUgIlNtYWxsQ2h1bmsuaCIKICNpbmNsdWRlIDxhcnJheT4KIAogbmFtZXNwYWNlIGJtYWxsb2Mg
ewpAQCAtNTAsMjIgKzUxLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNjYXZlbmdlKCk7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCogYWxsb2NhdGVGYXN0Q2FzZShTbWFsbEFsbG9jYXRvciYpOworICAg
IHZvaWQqIGFsbG9jYXRlRmFzdENhc2UoQnVtcEFsbG9jYXRvciYpOwogCi0gICAgdm9pZCogYWxs
b2NhdGVNZWRpdW0oc2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZUxhcmdlKHNpemVfdCk7CiAg
ICAgdm9pZCogYWxsb2NhdGVYTGFyZ2Uoc2l6ZV90KTsKICAgICAKLSAgICB2b2lkIGxvZyhTbWFs
bEFsbG9jYXRvciYpOwotICAgIHZvaWQgbG9nKE1lZGl1bUFsbG9jYXRvciYpOworICAgIHZvaWQg
bG9nU21hbGwoQnVtcEFsbG9jYXRvciYpOworICAgIHZvaWQgbG9nTWVkaXVtKEJ1bXBBbGxvY2F0
b3ImKTsKIAogICAgIHZvaWQgcHJvY2Vzc1NtYWxsQWxsb2NhdG9yTG9nKCk7CiAgICAgdm9pZCBw
cm9jZXNzTWVkaXVtQWxsb2NhdG9yTG9nKCk7CiAKICAgICBEZWFsbG9jYXRvciYgbV9kZWFsbG9j
YXRvcjsKIAotICAgIHN0ZDo6YXJyYXk8U21hbGxBbGxvY2F0b3IsIHNtYWxsTWF4IC8gYWxpZ25t
ZW50PiBtX3NtYWxsQWxsb2NhdG9yczsKLSAgICBNZWRpdW1BbGxvY2F0b3IgbV9tZWRpdW1BbGxv
Y2F0b3I7CisgICAgc3RkOjphcnJheTxCdW1wQWxsb2NhdG9yLCBidW1wTWF4IC8gYWxpZ25tZW50
PiBtX2FsbG9jYXRvcnM7CiAKICAgICBGaXhlZFZlY3RvcjxzdGQ6OnBhaXI8U21hbGxMaW5lKiwg
dW5zaWduZWQgY2hhcj4sIHNtYWxsQWxsb2NhdG9yTG9nQ2FwYWNpdHk+IG1fc21hbGxBbGxvY2F0
b3JMb2c7CiAgICAgRml4ZWRWZWN0b3I8c3RkOjpwYWlyPE1lZGl1bUxpbmUqLCB1bnNpZ25lZCBj
aGFyPiwgbWVkaXVtQWxsb2NhdG9yTG9nQ2FwYWNpdHk+IG1fbWVkaXVtQWxsb2NhdG9yTG9nOwpA
QCAtNzMsMTAgKzcyLDEwIEBAIHByaXZhdGU6CiAKIGlubGluZSBib29sIEFsbG9jYXRvcjo6YWxs
b2NhdGVGYXN0Q2FzZShzaXplX3Qgc2l6ZSwgdm9pZComIG9iamVjdCkKIHsKLSAgICBpZiAoc2l6
ZSA+IHNtYWxsTWF4KQorICAgIGlmIChzaXplID4gYnVtcE1heCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgU21hbGxBbGxvY2F0b3ImIGFsbG9jYXRvciA9IG1fc21hbGxBbGxvY2F0b3Jz
W3NtYWxsU2l6ZUNsYXNzRm9yKHNpemUpXTsKKyAgICBCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3Ig
PSBtX2FsbG9jYXRvcnNbYnVtcENsYXNzKHNpemUpXTsKICAgICBpZiAoIWFsbG9jYXRvci5jYW5B
bGxvY2F0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvQnVtcEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvQnVtcEFsbG9jYXRvci5oCShyZXZpc2lvbiAxNzMyMjIpCShmcm9tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvU21hbGxBbGxvY2F0b3IuaDoxNzMyMjIpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0J1bXBBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFNt
YWxsQWxsb2NhdG9yX2gKKyNkZWZpbmUgU21hbGxBbGxvY2F0b3JfaAorCisjaW5jbHVkZSAiQkFz
c2VydC5oIgorI2luY2x1ZGUgIlNtYWxsQ2h1bmsuaCIKKyNpbmNsdWRlICJTbWFsbExpbmUuaCIK
KworbmFtZXNwYWNlIGJtYWxsb2MgeworCisvLyBIZWxwZXIgb2JqZWN0IGZvciBhbGxvY2F0aW5n
IHNtYWxsIG9iamVjdHMuCisKK2NsYXNzIFNtYWxsQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICBT
bWFsbEFsbG9jYXRvcigpOworICAgIFNtYWxsQWxsb2NhdG9yKHNpemVfdCk7CisgICAgCisgICAg
Ym9vbCBpc051bGwoKSB7IHJldHVybiAhbV9wdHI7IH0KKyAgICBTbWFsbExpbmUqIGxpbmUoKTsK
KworICAgIGJvb2wgY2FuQWxsb2NhdGUoKSB7IHJldHVybiAhIW1fcmVtYWluaW5nOyB9CisgICAg
dm9pZCogYWxsb2NhdGUoKTsKKworICAgIHVuc2lnbmVkIHNob3J0IG9iamVjdENvdW50KCk7Cisg
ICAgdW5zaWduZWQgY2hhciBkZXJlZkNvdW50KCk7CisgICAgdm9pZCByZWZpbGwoU21hbGxMaW5l
Kik7CisKK3ByaXZhdGU6CisgICAgY2hhciogbV9wdHI7CisgICAgdW5zaWduZWQgc2hvcnQgbV9z
aXplOworICAgIHVuc2lnbmVkIGNoYXIgbV9yZW1haW5pbmc7CisgICAgdW5zaWduZWQgY2hhciBt
X21heE9iamVjdENvdW50OworfTsKKworaW5saW5lIFNtYWxsQWxsb2NhdG9yOjpTbWFsbEFsbG9j
YXRvcigpCisgICAgOiBtX3B0cigpCisgICAgLCBtX3NpemUoKQorICAgICwgbV9yZW1haW5pbmco
KQorICAgICwgbV9tYXhPYmplY3RDb3VudCgpCit7Cit9CisKK2lubGluZSBTbWFsbEFsbG9jYXRv
cjo6U21hbGxBbGxvY2F0b3Ioc2l6ZV90IHNpemUpCisgICAgOiBtX3B0cigpCisgICAgLCBtX3Np
emUoc2l6ZSkKKyAgICAsIG1fcmVtYWluaW5nKCkKKyAgICAsIG1fbWF4T2JqZWN0Q291bnQoc21h
bGxMaW5lU2l6ZSAvIHNpemUpCit7Cit9CisKK2lubGluZSBTbWFsbExpbmUqIFNtYWxsQWxsb2Nh
dG9yOjpsaW5lKCkKK3sKKyAgICByZXR1cm4gU21hbGxMaW5lOjpnZXQoY2FuQWxsb2NhdGUoKSA/
IG1fcHRyIDogbV9wdHIgLSAxKTsKK30KKworaW5saW5lIHZvaWQqIFNtYWxsQWxsb2NhdG9yOjph
bGxvY2F0ZSgpCit7CisgICAgQkFTU0VSVChtX3JlbWFpbmluZyk7CisgICAgQkFTU0VSVChtX3Np
emUgPj0gU21hbGxMaW5lOjptaW5pbXVtT2JqZWN0U2l6ZSk7CisKKyAgICAtLW1fcmVtYWluaW5n
OworICAgIGNoYXIqIHJlc3VsdCA9IG1fcHRyOworICAgIG1fcHRyICs9IG1fc2l6ZTsKKyAgICBC
QVNTRVJUKGlzU21hbGwocmVzdWx0KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5l
IHVuc2lnbmVkIHNob3J0IFNtYWxsQWxsb2NhdG9yOjpvYmplY3RDb3VudCgpCit7CisgICAgcmV0
dXJuIG1fbWF4T2JqZWN0Q291bnQgLSBtX3JlbWFpbmluZzsKK30KKworaW5saW5lIHVuc2lnbmVk
IGNoYXIgU21hbGxBbGxvY2F0b3I6OmRlcmVmQ291bnQoKQoreworICAgIHJldHVybiBTbWFsbExp
bmU6Om1heFJlZkNvdW50IC0gb2JqZWN0Q291bnQoKTsKK30KKworaW5saW5lIHZvaWQgU21hbGxB
bGxvY2F0b3I6OnJlZmlsbChTbWFsbExpbmUqIGxpbmUpCit7CisgICAgQkFTU0VSVCghY2FuQWxs
b2NhdGUoKSk7CisgICAgbGluZS0+Y29uY3VycmVudFJlZihTbWFsbExpbmU6Om1heFJlZkNvdW50
KTsKKyAgICBtX3B0ciA9IGxpbmUtPmJlZ2luKCk7CisgICAgbV9yZW1haW5pbmcgPSBtX21heE9i
amVjdENvdW50OworfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCisKKyNlbmRpZiAvLyBTbWFs
bEFsbG9jYXRvcl9oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0J1bXBBbGxvY2F0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0J1bXBBbGxvY2F0b3IuaAko
d29ya2luZyBjb3B5KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CdW1wQWxsb2NhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDMxICsyMywzNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAotI2lmbmRlZiBTbWFsbEFsbG9jYXRvcl9oCi0jZGVmaW5lIFNtYWxsQWxsb2NhdG9yX2gKKyNp
Zm5kZWYgQnVtcEFsbG9jYXRvcl9oCisjZGVmaW5lIEJ1bXBBbGxvY2F0b3JfaAogCiAjaW5jbHVk
ZSAiQkFzc2VydC5oIgotI2luY2x1ZGUgIlNtYWxsQ2h1bmsuaCIKLSNpbmNsdWRlICJTbWFsbExp
bmUuaCIKKyNpbmNsdWRlICJMaW5lLmgiCisjaW5jbHVkZSAiT2JqZWN0VHlwZS5oIgorI2luY2x1
ZGUgPGNzdGRkZWY+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotLy8gSGVscGVyIG9iamVjdCBm
b3IgYWxsb2NhdGluZyBzbWFsbCBvYmplY3RzLgorLy8gSGVscGVyIG9iamVjdCBmb3IgYnVtcC1h
bGxvY2F0aW5nIGludG8gc21hbGwgYW5kIG1lZGl1bSBsaW5lcy4KIAotY2xhc3MgU21hbGxBbGxv
Y2F0b3IgeworY2xhc3MgQnVtcEFsbG9jYXRvciB7CiBwdWJsaWM6Ci0gICAgU21hbGxBbGxvY2F0
b3IoKTsKLSAgICBTbWFsbEFsbG9jYXRvcihzaXplX3QpOworICAgIEJ1bXBBbGxvY2F0b3IoKTsK
KyAgICBCdW1wQWxsb2NhdG9yKHNpemVfdCwgc2l6ZV90IGxpbmVTaXplKTsKICAgICAKICAgICBi
b29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX3B0cjsgfQotICAgIFNtYWxsTGluZSogbGluZSgpOwor
ICAgIHNpemVfdCBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CiAKICAgICBib29sIGNhbkFsbG9j
YXRlKCkgeyByZXR1cm4gISFtX3JlbWFpbmluZzsgfQogICAgIHZvaWQqIGFsbG9jYXRlKCk7CiAK
ICAgICB1bnNpZ25lZCBzaG9ydCBvYmplY3RDb3VudCgpOwogICAgIHVuc2lnbmVkIGNoYXIgZGVy
ZWZDb3VudCgpOwotICAgIHZvaWQgcmVmaWxsKFNtYWxsTGluZSopOworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgTGluZT4gTGluZSogbGluZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExpbmU+
IHZvaWQgcmVmaWxsKExpbmUqKTsKIAogcHJpdmF0ZToKICAgICBjaGFyKiBtX3B0cjsKQEAgLTU2
LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBjaGFyIG1fbWF4T2JqZWN0Q291bnQ7
CiB9OwogCi1pbmxpbmUgU21hbGxBbGxvY2F0b3I6OlNtYWxsQWxsb2NhdG9yKCkKK2lubGluZSBC
dW1wQWxsb2NhdG9yOjpCdW1wQWxsb2NhdG9yKCkKICAgICA6IG1fcHRyKCkKICAgICAsIG1fc2l6
ZSgpCiAgICAgLCBtX3JlbWFpbmluZygpCkBAIC02NCw0OSArNjcsNTIgQEAgaW5saW5lIFNtYWxs
QWxsb2NhdG9yOjpTbWFsbEFsbG9jYXRvcigpCiB7CiB9CiAKLWlubGluZSBTbWFsbEFsbG9jYXRv
cjo6U21hbGxBbGxvY2F0b3Ioc2l6ZV90IHNpemUpCitpbmxpbmUgQnVtcEFsbG9jYXRvcjo6QnVt
cEFsbG9jYXRvcihzaXplX3Qgc2l6ZSwgc2l6ZV90IGxpbmVTaXplKQogICAgIDogbV9wdHIoKQog
ICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX3JlbWFpbmluZygpCi0gICAgLCBtX21heE9iamVj
dENvdW50KHNtYWxsTGluZVNpemUgLyBzaXplKQorICAgICwgbV9tYXhPYmplY3RDb3VudChsaW5l
U2l6ZSAvIHNpemUpCiB7CiB9CiAKLWlubGluZSBTbWFsbExpbmUqIFNtYWxsQWxsb2NhdG9yOjps
aW5lKCkKK3RlbXBsYXRlPHR5cGVuYW1lIExpbmU+CitpbmxpbmUgTGluZSogQnVtcEFsbG9jYXRv
cjo6bGluZSgpCiB7Ci0gICAgcmV0dXJuIFNtYWxsTGluZTo6Z2V0KGNhbkFsbG9jYXRlKCkgPyBt
X3B0ciA6IG1fcHRyIC0gMSk7CisgICAgTGluZSogbGluZSA9IExpbmU6OmdldChjYW5BbGxvY2F0
ZSgpID8gbV9wdHIgOiBtX3B0ciAtIDEpOworICAgIEJBU1NFUlQoTGluZTo6bGluZVNpemUgPT0g
c21hbGxMaW5lU2l6ZSA/IGlzU21hbGwobGluZSkgOiBpc01lZGl1bShsaW5lKSk7CisgICAgcmV0
dXJuIGxpbmU7CiB9CiAKLWlubGluZSB2b2lkKiBTbWFsbEFsbG9jYXRvcjo6YWxsb2NhdGUoKQor
aW5saW5lIHZvaWQqIEJ1bXBBbGxvY2F0b3I6OmFsbG9jYXRlKCkKIHsKICAgICBCQVNTRVJUKG1f
cmVtYWluaW5nKTsKLSAgICBCQVNTRVJUKG1fc2l6ZSA+PSBTbWFsbExpbmU6Om1pbmltdW1PYmpl
Y3RTaXplKTsKLQogICAgIC0tbV9yZW1haW5pbmc7CiAgICAgY2hhciogcmVzdWx0ID0gbV9wdHI7
CiAgICAgbV9wdHIgKz0gbV9zaXplOwotICAgIEJBU1NFUlQoaXNTbWFsbChyZXN1bHQpKTsKKyAg
ICBCQVNTRVJUKG1fc2l6ZSA8PSBzbWFsbE1heCA/IGlzU21hbGwocmVzdWx0KSA6IGlzTWVkaXVt
KHJlc3VsdCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBzaG9y
dCBTbWFsbEFsbG9jYXRvcjo6b2JqZWN0Q291bnQoKQoraW5saW5lIHVuc2lnbmVkIHNob3J0IEJ1
bXBBbGxvY2F0b3I6Om9iamVjdENvdW50KCkKIHsKICAgICByZXR1cm4gbV9tYXhPYmplY3RDb3Vu
dCAtIG1fcmVtYWluaW5nOwogfQogCi1pbmxpbmUgdW5zaWduZWQgY2hhciBTbWFsbEFsbG9jYXRv
cjo6ZGVyZWZDb3VudCgpCitpbmxpbmUgdW5zaWduZWQgY2hhciBCdW1wQWxsb2NhdG9yOjpkZXJl
ZkNvdW50KCkKIHsKLSAgICByZXR1cm4gU21hbGxMaW5lOjptYXhSZWZDb3VudCAtIG9iamVjdENv
dW50KCk7CisgICAgcmV0dXJuIG1heExpbmVSZWZDb3VudCAtIG9iamVjdENvdW50KCk7CiB9CiAK
LWlubGluZSB2b2lkIFNtYWxsQWxsb2NhdG9yOjpyZWZpbGwoU21hbGxMaW5lKiBsaW5lKQordGVt
cGxhdGU8dHlwZW5hbWUgTGluZT4KK2lubGluZSB2b2lkIEJ1bXBBbGxvY2F0b3I6OnJlZmlsbChM
aW5lKiBsaW5lKQogewogICAgIEJBU1NFUlQoIWNhbkFsbG9jYXRlKCkpOwotICAgIGxpbmUtPmNv
bmN1cnJlbnRSZWYoU21hbGxMaW5lOjptYXhSZWZDb3VudCk7CisgICAgQkFTU0VSVChtX3NpemUg
PD0gc21hbGxNYXggPyBpc1NtYWxsKGxpbmUpIDogaXNNZWRpdW0obGluZSkpOworICAgIGxpbmUt
PmNvbmN1cnJlbnRSZWYobWF4TGluZVJlZkNvdW50KTsKICAgICBtX3B0ciA9IGxpbmUtPmJlZ2lu
KCk7CiAgICAgbV9yZW1haW5pbmcgPSBtX21heE9iamVjdENvdW50OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBibWFsbG9jCiAKLSNlbmRpZiAvLyBTbWFsbEFsbG9jYXRvcl9oCisjZW5kaWYgLy8gQnVt
cEFsbG9jYXRvcl9oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcAko
cmV2aXNpb24gMTczMjIyKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWFsbG9jYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSwyMiArMTIxLDIyIEBAIHZvaWQgRGVhbGxvY2F0b3I6
OmRlYWxsb2NhdGVTbG93Q2FzZSh2b2kKIAogdm9pZCBEZWFsbG9jYXRvcjo6ZGVhbGxvY2F0ZVNt
YWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBTbWFsbExpbmUqIGxp
bmUpCiB7Ci0gICAgU21hbGxMaW5lQ2FjaGUmIHNtYWxsTGluZUNhY2hlID0gbV9zbWFsbExpbmVD
YWNoZXNbU21hbGxQYWdlOjpnZXQobGluZSktPnNtYWxsU2l6ZUNsYXNzKCldOworICAgIFNtYWxs
TGluZUNhY2hlJiBzbWFsbExpbmVDYWNoZSA9IG1fc21hbGxMaW5lQ2FjaGVzW1NtYWxsUGFnZTo6
Z2V0KGxpbmUpLT5idW1wQ2xhc3MoKV07CiAgICAgaWYgKHNtYWxsTGluZUNhY2hlLnNpemUoKSA9
PSBzbWFsbExpbmVDYWNoZS5jYXBhY2l0eSgpKQogICAgICAgICByZXR1cm4gUGVyUHJvY2VzczxI
ZWFwPjo6Z2V0RmFzdENhc2UoKS0+ZGVhbGxvY2F0ZVNtYWxsTGluZShsb2NrLCBsaW5lKTsKIAog
ICAgIHNtYWxsTGluZUNhY2hlLnB1c2gobGluZSk7CiB9CiAKLVNtYWxsTGluZSogRGVhbGxvY2F0
b3I6OmFsbG9jYXRlU21hbGxMaW5lKHNpemVfdCBzbWFsbFNpemVDbGFzcykKK1NtYWxsTGluZSog
RGVhbGxvY2F0b3I6OmFsbG9jYXRlU21hbGxMaW5lKHNpemVfdCBidW1wQ2xhc3MpCiB7Ci0gICAg
U21hbGxMaW5lQ2FjaGUmIHNtYWxsTGluZUNhY2hlID0gbV9zbWFsbExpbmVDYWNoZXNbc21hbGxT
aXplQ2xhc3NdOworICAgIFNtYWxsTGluZUNhY2hlJiBzbWFsbExpbmVDYWNoZSA9IG1fc21hbGxM
aW5lQ2FjaGVzW2J1bXBDbGFzc107CiAgICAgaWYgKCFzbWFsbExpbmVDYWNoZS5zaXplKCkpIHsK
ICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVh
cD46Om11dGV4KCkpOwogICAgICAgICBIZWFwKiBoZWFwID0gUGVyUHJvY2VzczxIZWFwPjo6Z2V0
RmFzdENhc2UoKTsKIAogICAgICAgICB3aGlsZSAoc21hbGxMaW5lQ2FjaGUuc2l6ZSgpICE9IHNt
YWxsTGluZUNhY2hlLmNhcGFjaXR5KCkpCi0gICAgICAgICAgICBzbWFsbExpbmVDYWNoZS5wdXNo
KGhlYXAtPmFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIHNtYWxsU2l6ZUNsYXNzKSk7CisgICAgICAg
ICAgICBzbWFsbExpbmVDYWNoZS5wdXNoKGhlYXAtPmFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIGJ1
bXBDbGFzcykpOwogICAgIH0KIAogICAgIHJldHVybiBzbWFsbExpbmVDYWNoZS5wb3AoKTsKQEAg
LTE1MCwxNCArMTUwLDE0IEBAIHZvaWQgRGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVNZWRpdW1MaW5l
KHMKICAgICBtX21lZGl1bUxpbmVDYWNoZS5wdXNoKGxpbmUpOwogfQogCi1NZWRpdW1MaW5lKiBE
ZWFsbG9jYXRvcjo6YWxsb2NhdGVNZWRpdW1MaW5lKCkKK01lZGl1bUxpbmUqIERlYWxsb2NhdG9y
OjphbGxvY2F0ZU1lZGl1bUxpbmUoc2l6ZV90IGJ1bXBDbGFzcykKIHsKICAgICBpZiAoIW1fbWVk
aXVtTGluZUNhY2hlLnNpemUoKSkgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0
ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CiAgICAgICAgIEhlYXAqIGhlYXAg
PSBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpOwogCiAgICAgICAgIHdoaWxlIChtX21l
ZGl1bUxpbmVDYWNoZS5zaXplKCkgIT0gbV9tZWRpdW1MaW5lQ2FjaGUuY2FwYWNpdHkoKSkKLSAg
ICAgICAgICAgIG1fbWVkaXVtTGluZUNhY2hlLnB1c2goaGVhcC0+YWxsb2NhdGVNZWRpdW1MaW5l
KGxvY2spKTsKKyAgICAgICAgICAgIG1fbWVkaXVtTGluZUNhY2hlLnB1c2goaGVhcC0+YWxsb2Nh
dGVNZWRpdW1MaW5lKGxvY2ssIGJ1bXBDbGFzcykpOwogICAgIH0KIAogICAgIHJldHVybiBtX21l
ZGl1bUxpbmVDYWNoZS5wb3AoKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxv
Y2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9y
LmgJKHJldmlzaW9uIDE3MzIyMikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRlYWxsb2NhdGVTbG93Q2FzZSh2b2lkKik7CiAKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExp
bmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIFNtYWxsTGluZSopOwotICAgIFNtYWxs
TGluZSogYWxsb2NhdGVTbWFsbExpbmUoc2l6ZV90IHNtYWxsU2l6ZUNsYXNzKTsKKyAgICBTbWFs
bExpbmUqIGFsbG9jYXRlU21hbGxMaW5lKHNpemVfdCBidW1wQ2xhc3MpOwogCiAgICAgdm9pZCBk
ZWFsbG9jYXRlTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgTWVkaXVt
TGluZSopOwotICAgIE1lZGl1bUxpbmUqIGFsbG9jYXRlTWVkaXVtTGluZSgpOworICAgIE1lZGl1
bUxpbmUqIGFsbG9jYXRlTWVkaXVtTGluZShzaXplX3QgYnVtcENsYXNzKTsKICAgICAKICAgICB2
b2lkIHNjYXZlbmdlKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHJldmlz
aW9uIDE3MzIyMikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhlYXA6OnNjYXZlbmdlTGFyZ2VSYW5nZXMo
c3RkOjp1bmlxCiAgICAgfQogfQogCi1TbWFsbExpbmUqIEhlYXA6OmFsbG9jYXRlU21hbGxMaW5l
U2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IHNtYWxs
U2l6ZUNsYXNzKQorU21hbGxMaW5lKiBIZWFwOjphbGxvY2F0ZVNtYWxsTGluZVNsb3dDYXNlKHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIHNpemVfdCBidW1wQ2xhc3MpCiB7CiAg
ICAgbV9pc0FsbG9jYXRpbmdQYWdlcyA9IHRydWU7CiAKQEAgLTEzMCwxNyArMTMwLDE3IEBAIFNt
YWxsTGluZSogSGVhcDo6YWxsb2NhdGVTbWFsbExpbmVTbG93Q2EKICAgICB9KCk7CiAKICAgICBT
bWFsbExpbmUqIGxpbmUgPSBwYWdlLT5iZWdpbigpOwotICAgIFZlY3RvcjxTbWFsbExpbmUqPiYg
c21hbGxMaW5lcyA9IG1fc21hbGxMaW5lc1tzbWFsbFNpemVDbGFzc107CisgICAgVmVjdG9yPFNt
YWxsTGluZSo+JiBzbWFsbExpbmVzID0gbV9zbWFsbExpbmVzW2J1bXBDbGFzc107CiAgICAgZm9y
IChhdXRvIGl0ID0gbGluZSArIDE7IGl0ICE9IHBhZ2UtPmVuZCgpOyArK2l0KQogICAgICAgICBz
bWFsbExpbmVzLnB1c2goaXQpOwogCiAgICAgQkFTU0VSVCghbGluZS0+cmVmQ291bnQobG9jaykp
OwotICAgIHBhZ2UtPnNldFNtYWxsU2l6ZUNsYXNzKHNtYWxsU2l6ZUNsYXNzKTsKKyAgICBwYWdl
LT5zZXRCdW1wQ2xhc3MoYnVtcENsYXNzKTsKICAgICBwYWdlLT5yZWYobG9jayk7CiAgICAgcmV0
dXJuIGxpbmU7CiB9CiAKLU1lZGl1bUxpbmUqIEhlYXA6OmFsbG9jYXRlTWVkaXVtTGluZVNsb3dD
YXNlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2spCitNZWRpdW1MaW5lKiBIZWFw
OjphbGxvY2F0ZU1lZGl1bUxpbmVTbG93Q2FzZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+
JiBsb2NrLCBzaXplX3QgYnVtcENsYXNzKQogewogICAgIG1faXNBbGxvY2F0aW5nUGFnZXMgPSB0
cnVlOwogCkBAIC0xNTcsNiArMTU3LDggQEAgTWVkaXVtTGluZSogSGVhcDo6YWxsb2NhdGVNZWRp
dW1MaW5lU2xvdwogICAgIGZvciAoYXV0byBpdCA9IGxpbmUgKyAxOyBpdCAhPSBwYWdlLT5lbmQo
KTsgKytpdCkKICAgICAgICAgbV9tZWRpdW1MaW5lcy5wdXNoKGl0KTsKIAorICAgIEJBU1NFUlQo
IWxpbmUtPnJlZkNvdW50KGxvY2spKTsKKyAgICBwYWdlLT5zZXRCdW1wQ2xhc3MoYnVtcENsYXNz
KTsKICAgICBwYWdlLT5yZWYobG9jayk7CiAgICAgcmV0dXJuIGxpbmU7CiB9CkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuaAkocmV2aXNpb24gMTczMjIyKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMCBAQCBjbGFzcyBIZWFwIHsK
IHB1YmxpYzoKICAgICBIZWFwKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKIAotICAg
IFNtYWxsTGluZSogYWxsb2NhdGVTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4
PiYsIHNpemVfdCBzbWFsbFNpemVDbGFzcyk7CisgICAgU21hbGxMaW5lKiBhbGxvY2F0ZVNtYWxs
TGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IGJ1bXBDbGFzcyk7CiAg
ICAgdm9pZCBkZWFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4m
LCBTbWFsbExpbmUqKTsKIAotICAgIE1lZGl1bUxpbmUqIGFsbG9jYXRlTWVkaXVtTGluZShzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jik7CisgICAgTWVkaXVtTGluZSogYWxsb2NhdGVNZWRp
dW1MaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QgYnVtcENsYXNzKTsK
ICAgICB2b2lkIGRlYWxsb2NhdGVNZWRpdW1MaW5lKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRl
eD4mLCBNZWRpdW1MaW5lKik7CiAgICAgCiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90KTsKQEAgLTY2LDggKzY2LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB+SGVhcCgpID0gZGVsZXRlOwogCi0gICAgU21hbGxMaW5lKiBhbGxv
Y2F0ZVNtYWxsTGluZVNsb3dDYXNlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXpl
X3Qgc21hbGxTaXplQ2xhc3MpOwotICAgIE1lZGl1bUxpbmUqIGFsbG9jYXRlTWVkaXVtTGluZVNs
b3dDYXNlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKKyAgICBTbWFsbExpbmUqIGFs
bG9jYXRlU21hbGxMaW5lU2xvd0Nhc2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNp
emVfdCBidW1wQ2xhc3MpOworICAgIE1lZGl1bUxpbmUqIGFsbG9jYXRlTWVkaXVtTGluZVNsb3dD
YXNlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QgYnVtcENsYXNzKTsKIAog
ICAgIHZvaWQqIGFsbG9jYXRlTGFyZ2UoUmFuZ2UsIHNpemVfdCk7CiAgICAgUmFuZ2UgYWxsb2Nh
dGVMYXJnZUNodW5rKCk7CkBAIC0xMDUsMjMgKzEwNSwyMyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpk
ZWFsbG9jYXRlU21hbGxMaW5lKHN0CiAgICAgICAgIG1fc2NhdmVuZ2VyLnJ1bigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIG1fc21hbGxMaW5lc1twYWdlLT5zbWFsbFNpemVDbGFzcygp
XS5wdXNoKGxpbmUpOworICAgIG1fc21hbGxMaW5lc1twYWdlLT5idW1wQ2xhc3MoKV0ucHVzaChs
aW5lKTsKIH0KIAotaW5saW5lIFNtYWxsTGluZSogSGVhcDo6YWxsb2NhdGVTbWFsbExpbmUoc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IHNtYWxsU2l6ZUNsYXNzKQor
aW5saW5lIFNtYWxsTGluZSogSGVhcDo6YWxsb2NhdGVTbWFsbExpbmUoc3RkOjpsb2NrX2d1YXJk
PFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IGJ1bXBDbGFzcykKIHsKLSAgICBWZWN0b3I8U21h
bGxMaW5lKj4mIHNtYWxsTGluZXMgPSBtX3NtYWxsTGluZXNbc21hbGxTaXplQ2xhc3NdOworICAg
IFZlY3RvcjxTbWFsbExpbmUqPiYgc21hbGxMaW5lcyA9IG1fc21hbGxMaW5lc1tidW1wQ2xhc3Nd
OwogICAgIHdoaWxlIChzbWFsbExpbmVzLnNpemUoKSkgewogICAgICAgICBTbWFsbExpbmUqIGxp
bmUgPSBzbWFsbExpbmVzLnBvcCgpOwogICAgICAgICBTbWFsbFBhZ2UqIHBhZ2UgPSBTbWFsbFBh
Z2U6OmdldChsaW5lKTsKLSAgICAgICAgaWYgKCFwYWdlLT5yZWZDb3VudChsb2NrKSB8fCBwYWdl
LT5zbWFsbFNpemVDbGFzcygpICE9IHNtYWxsU2l6ZUNsYXNzKSAvLyBUaGUgbGluZSB3YXMgcHJv
bW90ZWQgdG8gdGhlIHNtYWxsIHBhZ2VzIGxpc3QuCisgICAgICAgIGlmICghcGFnZS0+cmVmQ291
bnQobG9jaykgfHwgcGFnZS0+YnVtcENsYXNzKCkgIT0gYnVtcENsYXNzKSAvLyBUaGUgbGluZSB3
YXMgcHJvbW90ZWQgdG8gdGhlIHNtYWxsIHBhZ2VzIGxpc3QuCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgQkFTU0VSVCghbGluZS0+cmVmQ291bnQobG9jaykpOwogICAgICAgICBwYWdl
LT5yZWYobG9jayk7CiAgICAgICAgIHJldHVybiBsaW5lOwogICAgIH0KIAotICAgIHJldHVybiBh
bGxvY2F0ZVNtYWxsTGluZVNsb3dDYXNlKGxvY2ssIHNtYWxsU2l6ZUNsYXNzKTsKKyAgICByZXR1
cm4gYWxsb2NhdGVTbWFsbExpbmVTbG93Q2FzZShsb2NrLCBidW1wQ2xhc3MpOwogfQogCiBpbmxp
bmUgdm9pZCBIZWFwOjpkZWFsbG9jYXRlTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TXV0ZXg+JiBsb2NrLCBNZWRpdW1MaW5lKiBsaW5lKQpAQCAtMTM2LDcgKzEzNiw3IEBAIGlubGlu
ZSB2b2lkIEhlYXA6OmRlYWxsb2NhdGVNZWRpdW1MaW5lKHMKICAgICBtX21lZGl1bUxpbmVzLnB1
c2gobGluZSk7CiB9CiAKLWlubGluZSBNZWRpdW1MaW5lKiBIZWFwOjphbGxvY2F0ZU1lZGl1bUxp
bmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaykKK2lubGluZSBNZWRpdW1MaW5l
KiBIZWFwOjphbGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYg
bG9jaywgc2l6ZV90IGJ1bXBDbGFzcykKIHsKICAgICB3aGlsZSAobV9tZWRpdW1MaW5lcy5zaXpl
KCkpIHsKICAgICAgICAgTWVkaXVtTGluZSogbGluZSA9IG1fbWVkaXVtTGluZXMucG9wKCk7CkBA
IC0xNDgsNyArMTQ4LDcgQEAgaW5saW5lIE1lZGl1bUxpbmUqIEhlYXA6OmFsbG9jYXRlTWVkaXVt
TAogICAgICAgICByZXR1cm4gbGluZTsKICAgICB9CiAKLSAgICByZXR1cm4gYWxsb2NhdGVNZWRp
dW1MaW5lU2xvd0Nhc2UobG9jayk7CisgICAgcmV0dXJuIGFsbG9jYXRlTWVkaXVtTGluZVNsb3dD
YXNlKGxvY2ssIGJ1bXBDbGFzcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKSW5kZXg6
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvTGluZS5oCShyZXZpc2lvbiAxNzMyMjIpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0xpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIG1heExpbmVSZWZDb3Vu
dCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj46Om1heCgpOworCiB0ZW1wbGF0
ZTxjbGFzcyBUcmFpdHM+CiBjbGFzcyBMaW5lIHsKIHB1YmxpYzoKQEAgLTQwLDggKzQyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluaW11bU9iamVjdFNpemUgPSBUcmFp
dHM6Om1pbmltdW1PYmplY3RTaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGluZVNpemUg
PSBUcmFpdHM6OmxpbmVTaXplOwogICAgIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IG1heFJlZkNvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBjaGFyPjo6bWF4KCk7
Ci0gICAgc3RhdGljX2Fzc2VydChsaW5lU2l6ZSAvIG1pbmltdW1PYmplY3RTaXplIDwgbWF4UmVm
Q291bnQsICJtYXhpbXVtIG9iamVjdCBjb3VudCBtdXN0IGZpdCBpbiBMaW5lIik7CisgICAgc3Rh
dGljX2Fzc2VydChsaW5lU2l6ZSAvIG1pbmltdW1PYmplY3RTaXplIDwgbWF4TGluZVJlZkNvdW50
LCAibWF4aW11bSBvYmplY3QgY291bnQgbXVzdCBmaXQgaW4gTGluZSIpOwogCiAgICAgc3RhdGlj
IExpbmUqIGdldCh2b2lkKik7CiAKQEAgLTg0LDcgKzg1LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVHJh
aXRzPgogaW5saW5lIHZvaWQgTGluZTxUcmFpdHM+Ojpjb25jdXJyZW50UmVmKHVuc2lnbmVkIGNo
YXIgY291bnQpCiB7CiAgICAgQkFTU0VSVCghbV9yZWZDb3VudCk7IC8vIFVwLXJlZiBmcm9tIHpl
cm8gY2FuIGJlIGxvY2stZnJlZSBiZWNhdXNlIHRoZXJlIGFyZSBubyBvdGhlciBjbGllbnRzLgot
ICAgIEJBU1NFUlQoY291bnQgPD0gbWF4UmVmQ291bnQpOworICAgIEJBU1NFUlQoY291bnQgPD0g
bWF4TGluZVJlZkNvdW50KTsKICAgICBtX3JlZkNvdW50ID0gY291bnQ7CiB9CiAKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvTWVkaXVtQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9NZWRpdW1BbGxvY2F0b3IuaAkocmV2aXNpb24gMTczMjIyKQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9NZWRpdW1BbGxvY2F0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaWZuZGVmIE1lZGl1bUFsbG9jYXRvcl9oCi0jZGVmaW5lIE1lZGl1bUFsbG9j
YXRvcl9oCi0KLSNpbmNsdWRlICJCQXNzZXJ0LmgiCi0jaW5jbHVkZSAiTWVkaXVtQ2h1bmsuaCIK
LSNpbmNsdWRlICJNZWRpdW1MaW5lLmgiCi0KLW5hbWVzcGFjZSBibWFsbG9jIHsKLQotLy8gSGVs
cGVyIG9iamVjdCBmb3IgYWxsb2NhdGluZyBtZWRpdW0gb2JqZWN0cy4KLQotY2xhc3MgTWVkaXVt
QWxsb2NhdG9yIHsKLXB1YmxpYzoKLSAgICBNZWRpdW1BbGxvY2F0b3IoKTsKLQotICAgIGJvb2wg
aXNOdWxsKCkgeyByZXR1cm4gIW1fZW5kOyB9Ci0gICAgTWVkaXVtTGluZSogbGluZSgpOwotCi0g
ICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKLSAgICBib29sIGFsbG9jYXRlKHNpemVfdCwgdm9p
ZComKTsKLQotICAgIHVuc2lnbmVkIGNoYXIgZGVyZWZDb3VudCgpOwotICAgIHZvaWQgcmVmaWxs
KE1lZGl1bUxpbmUqKTsKLQotcHJpdmF0ZToKLSAgICBjaGFyKiBtX2VuZDsKLSAgICBzaXplX3Qg
bV9yZW1haW5pbmc7Ci0gICAgc2l6ZV90IG1fb2JqZWN0Q291bnQ7Ci19OwotCi1pbmxpbmUgTWVk
aXVtQWxsb2NhdG9yOjpNZWRpdW1BbGxvY2F0b3IoKQotICAgIDogbV9lbmQoKQotICAgICwgbV9y
ZW1haW5pbmcoKQotICAgICwgbV9vYmplY3RDb3VudCgpCi17Ci19Ci0KLWlubGluZSBNZWRpdW1M
aW5lKiBNZWRpdW1BbGxvY2F0b3I6OmxpbmUoKQotewotICAgIHJldHVybiBNZWRpdW1MaW5lOjpn
ZXQobV9lbmQgLSAxKTsKLX0KLQotaW5saW5lIHZvaWQqIE1lZGl1bUFsbG9jYXRvcjo6YWxsb2Nh
dGUoc2l6ZV90IHNpemUpCi17Ci0gICAgQkFTU0VSVChzaXplIDw9IG1fcmVtYWluaW5nKTsKLSAg
ICBCQVNTRVJUKHNpemUgPT0gcm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnQ+KHNpemUpKTsK
LSAgICBCQVNTRVJUKHNpemUgPj0gTWVkaXVtTGluZTo6bWluaW11bU9iamVjdFNpemUpOwotCi0g
ICAgbV9yZW1haW5pbmcgLT0gc2l6ZTsKLSAgICB2b2lkKiBvYmplY3QgPSBtX2VuZCAtIG1fcmVt
YWluaW5nIC0gc2l6ZTsKLSAgICBCQVNTRVJUKGlzU21hbGxPck1lZGl1bShvYmplY3QpICYmICFp
c1NtYWxsKG9iamVjdCkpOwotCi0gICAgKyttX29iamVjdENvdW50OwotICAgIHJldHVybiBvYmpl
Y3Q7Ci19Ci0KLWlubGluZSBib29sIE1lZGl1bUFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IHNp
emUsIHZvaWQqJiBvYmplY3QpCi17Ci0gICAgaWYgKHNpemUgPiBtX3JlbWFpbmluZykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgb2JqZWN0ID0gYWxsb2NhdGUoc2l6ZSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBjaGFyIE1lZGl1bUFsbG9jYXRvcjo6ZGVy
ZWZDb3VudCgpCi17Ci0gICAgcmV0dXJuIE1lZGl1bUxpbmU6Om1heFJlZkNvdW50IC0gbV9vYmpl
Y3RDb3VudDsKLX0KLQotaW5saW5lIHZvaWQgTWVkaXVtQWxsb2NhdG9yOjpyZWZpbGwoTWVkaXVt
TGluZSogbGluZSkKLXsKLSAgICBsaW5lLT5jb25jdXJyZW50UmVmKE1lZGl1bUxpbmU6Om1heFJl
ZkNvdW50KTsKLSAgICBtX2VuZCA9IGxpbmUtPmVuZCgpOwotICAgIG1fcmVtYWluaW5nID0gbWVk
aXVtTGluZVNpemU7Ci0gICAgbV9vYmplY3RDb3VudCA9IDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IGJtYWxsb2MKLQotI2VuZGlmIC8vIE1lZGl1bUFsbG9jYXRvcl9oCkluZGV4OiBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL09iamVjdFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL09iamVjdFR5cGUuaAkocmV2aXNpb24gMTczMjIyKQorKysgU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9PYmplY3RUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDEyIEBAIGlu
bGluZSBib29sIGlzU21hbGwodm9pZCogc21hbGxPck1lZGl1bSkKICAgICByZXR1cm4gdGVzdChz
bWFsbE9yTWVkaXVtLCBzbWFsbE9yTWVkaXVtU21hbGxUeXBlTWFzayk7CiB9CiAKK2lubGluZSBi
b29sIGlzTWVkaXVtKHZvaWQqIHNtYWxsT3JNZWRpdW0pCit7CisgICAgQkFTU0VSVChpc1NtYWxs
T3JNZWRpdW0oc21hbGxPck1lZGl1bSkpOworICAgIHJldHVybiAhaXNTbWFsbChzbWFsbE9yTWVk
aXVtKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCiAjZW5kaWYgLy8gT2JqZWN0VHlw
ZV9oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BhZ2UuaAkocmV2aXNpb24gMTczMjIyKQorKysgU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE1ICs0OSwxNSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBkZXJlZihzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jik7
CiAgICAgdW5zaWduZWQgcmVmQ291bnQoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpIHsg
cmV0dXJuIG1fcmVmQ291bnQ7IH0KICAgICAKLSAgICBzaXplX3Qgc21hbGxTaXplQ2xhc3MoKSB7
IHJldHVybiBtX3NtYWxsU2l6ZUNsYXNzOyB9Ci0gICAgdm9pZCBzZXRTbWFsbFNpemVDbGFzcyhz
aXplX3Qgc21hbGxTaXplQ2xhc3MpIHsgbV9zbWFsbFNpemVDbGFzcyA9IHNtYWxsU2l6ZUNsYXNz
OyB9CisgICAgc2l6ZV90IGJ1bXBDbGFzcygpIHsgcmV0dXJuIG1fYnVtcENsYXNzOyB9CisgICAg
dm9pZCBzZXRCdW1wQ2xhc3Moc2l6ZV90IGJ1bXBDbGFzcykgeyBtX2J1bXBDbGFzcyA9IGJ1bXBD
bGFzczsgfQogICAgIAogICAgIExpbmUqIGJlZ2luKCk7CiAgICAgTGluZSogZW5kKCk7CiAKIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgY2hhciBtX3JlZkNvdW50OwotICAgIHVuc2lnbmVkIGNoYXIg
bV9zbWFsbFNpemVDbGFzczsKKyAgICB1bnNpZ25lZCBjaGFyIG1fYnVtcENsYXNzOwogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9T
aXplcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaAkocmV2
aXNpb24gMTczMjI0KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw2ICs2Myw4IEBAIG5hbWVzcGFjZSBTaXplcyB7CiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBtZWRpdW1DaHVua09mZnNldCA9IHN1cGVyQ2h1bmtTaXplICogMiAvIDQ7CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBtZWRpdW1DaHVua01hc2sgPSB+KG1lZGl1bUNodW5rU2l6
ZSAtIDF1bCk7CiAKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJ1bXBNYXggPSBtZWRpdW1NYXg7
CisKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlQ2h1bmtTaXplID0gc3VwZXJDaHVua1Np
emUgLyAyOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VDaHVua09mZnNldCA9IDA7CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUNodW5rTWFzayA9IH4obGFyZ2VDaHVua1NpemUg
LSAxdWwpOwpAQCAtNzEsNyArNzMsNyBAQCBuYW1lc3BhY2UgU2l6ZXMgewogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgbGFyZ2VBbGlnbm1lbnRTaGlmdCA9IDY7CiAgICAgc3RhdGljX2Fzc2VydCgx
IDw8IGxhcmdlQWxpZ25tZW50U2hpZnQgPT0gbGFyZ2VBbGlnbm1lbnQsICJsYXJnZUFsaWdubWVu
dFNoaWZ0IGJlIGxvZzIobGFyZ2VBbGlnbm1lbnQpLiIpOwogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgbGFyZ2VNYXggPSBsYXJnZUNodW5rU2l6ZSAqIDk5IC8gMTAwOyAvLyBQbGVudHkgb2Ygcm9v
bSBmb3IgbWV0YWRhdGEuCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZU1pbiA9IDEwMjQ7
CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZU1pbiA9IG1lZGl1bU1heDsKIAogICAgIHN0
YXRpYyBjb25zdCBzaXplX3Qgc2VncmVnYXRlZEZyZWVMaXN0U2VhcmNoRGVwdGggPSAxNjsKIApA
QCAtOTIsMTAgKzk0LDEwIEBAIG5hbWVzcGFjZSBTaXplcyB7CiAgICAgCiAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgc2NhdmVuZ2VTbGVlcER1cmF0aW9uID0gc3Rk
OjpjaHJvbm86Om1pbGxpc2Vjb25kcyg1MTIpOwogCi0gICAgaW5saW5lIHNpemVfdCBzbWFsbFNp
emVDbGFzc0ZvcihzaXplX3Qgc2l6ZSkKKyAgICBpbmxpbmUgc2l6ZV90IGJ1bXBDbGFzcyhzaXpl
X3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxTaXplQ2xh
c3NNYXNrID0gKHNtYWxsTWF4IC8gYWxpZ25tZW50KSAtIDE7Ci0gICAgICAgIHJldHVybiBtYXNr
KChzaXplIC0gMXVsKSAvIGFsaWdubWVudCwgc21hbGxTaXplQ2xhc3NNYXNrKTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBidW1wQ2xhc3NNYXNrID0gKGJ1bXBNYXggLyBhbGlnbm1lbnQp
IC0gMTsKKyAgICAgICAgcmV0dXJuIG1hc2soKHNpemUgLSAxdWwpIC8gYWxpZ25tZW50LCBidW1w
Q2xhc3NNYXNrKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Nt
YWxsQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFs
bEFsbG9jYXRvci5oCShyZXZpc2lvbiAxNzMyMjIpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1NtYWxsQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBTbWFsbEFs
bG9jYXRvcl9oCi0jZGVmaW5lIFNtYWxsQWxsb2NhdG9yX2gKLQotI2luY2x1ZGUgIkJBc3NlcnQu
aCIKLSNpbmNsdWRlICJTbWFsbENodW5rLmgiCi0jaW5jbHVkZSAiU21hbGxMaW5lLmgiCi0KLW5h
bWVzcGFjZSBibWFsbG9jIHsKLQotLy8gSGVscGVyIG9iamVjdCBmb3IgYWxsb2NhdGluZyBzbWFs
bCBvYmplY3RzLgotCi1jbGFzcyBTbWFsbEFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgU21hbGxB
bGxvY2F0b3IoKTsKLSAgICBTbWFsbEFsbG9jYXRvcihzaXplX3QpOwotICAgIAotICAgIGJvb2wg
aXNOdWxsKCkgeyByZXR1cm4gIW1fcHRyOyB9Ci0gICAgU21hbGxMaW5lKiBsaW5lKCk7Ci0KLSAg
ICBib29sIGNhbkFsbG9jYXRlKCkgeyByZXR1cm4gISFtX3JlbWFpbmluZzsgfQotICAgIHZvaWQq
IGFsbG9jYXRlKCk7Ci0KLSAgICB1bnNpZ25lZCBzaG9ydCBvYmplY3RDb3VudCgpOwotICAgIHVu
c2lnbmVkIGNoYXIgZGVyZWZDb3VudCgpOwotICAgIHZvaWQgcmVmaWxsKFNtYWxsTGluZSopOwot
Ci1wcml2YXRlOgotICAgIGNoYXIqIG1fcHRyOwotICAgIHVuc2lnbmVkIHNob3J0IG1fc2l6ZTsK
LSAgICB1bnNpZ25lZCBjaGFyIG1fcmVtYWluaW5nOwotICAgIHVuc2lnbmVkIGNoYXIgbV9tYXhP
YmplY3RDb3VudDsKLX07Ci0KLWlubGluZSBTbWFsbEFsbG9jYXRvcjo6U21hbGxBbGxvY2F0b3Io
KQotICAgIDogbV9wdHIoKQotICAgICwgbV9zaXplKCkKLSAgICAsIG1fcmVtYWluaW5nKCkKLSAg
ICAsIG1fbWF4T2JqZWN0Q291bnQoKQotewotfQotCi1pbmxpbmUgU21hbGxBbGxvY2F0b3I6OlNt
YWxsQWxsb2NhdG9yKHNpemVfdCBzaXplKQotICAgIDogbV9wdHIoKQotICAgICwgbV9zaXplKHNp
emUpCi0gICAgLCBtX3JlbWFpbmluZygpCi0gICAgLCBtX21heE9iamVjdENvdW50KHNtYWxsTGlu
ZVNpemUgLyBzaXplKQotewotfQotCi1pbmxpbmUgU21hbGxMaW5lKiBTbWFsbEFsbG9jYXRvcjo6
bGluZSgpCi17Ci0gICAgcmV0dXJuIFNtYWxsTGluZTo6Z2V0KGNhbkFsbG9jYXRlKCkgPyBtX3B0
ciA6IG1fcHRyIC0gMSk7Ci19Ci0KLWlubGluZSB2b2lkKiBTbWFsbEFsbG9jYXRvcjo6YWxsb2Nh
dGUoKQotewotICAgIEJBU1NFUlQobV9yZW1haW5pbmcpOwotICAgIEJBU1NFUlQobV9zaXplID49
IFNtYWxsTGluZTo6bWluaW11bU9iamVjdFNpemUpOwotCi0gICAgLS1tX3JlbWFpbmluZzsKLSAg
ICBjaGFyKiByZXN1bHQgPSBtX3B0cjsKLSAgICBtX3B0ciArPSBtX3NpemU7Ci0gICAgQkFTU0VS
VChpc1NtYWxsKHJlc3VsdCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWlubGluZSB1bnNp
Z25lZCBzaG9ydCBTbWFsbEFsbG9jYXRvcjo6b2JqZWN0Q291bnQoKQotewotICAgIHJldHVybiBt
X21heE9iamVjdENvdW50IC0gbV9yZW1haW5pbmc7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBjaGFy
IFNtYWxsQWxsb2NhdG9yOjpkZXJlZkNvdW50KCkKLXsKLSAgICByZXR1cm4gU21hbGxMaW5lOjpt
YXhSZWZDb3VudCAtIG9iamVjdENvdW50KCk7Ci19Ci0KLWlubGluZSB2b2lkIFNtYWxsQWxsb2Nh
dG9yOjpyZWZpbGwoU21hbGxMaW5lKiBsaW5lKQotewotICAgIEJBU1NFUlQoIWNhbkFsbG9jYXRl
KCkpOwotICAgIGxpbmUtPmNvbmN1cnJlbnRSZWYoU21hbGxMaW5lOjptYXhSZWZDb3VudCk7Ci0g
ICAgbV9wdHIgPSBsaW5lLT5iZWdpbigpOwotICAgIG1fcmVtYWluaW5nID0gbV9tYXhPYmplY3RD
b3VudDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gU21hbGxBbGxv
Y2F0b3JfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237899</attachid>
            <date>2014-09-10 13:04:16 -0700</date>
            <delta_ts>2014-09-11 12:50:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136693-20140910130411.patch</filename>
            <type>text/plain</type>
            <size>4069</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAxNzMyMjIpCisrKyBTb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwxMCBAQAog
I2VuZGlmCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShDT0NPQSkgJiYgKENQVShYODZfNjQpIHx8
IENQVShBUk02NCkpKQorI2RlZmluZSBVU0VfQk1BTExPQyAxCisjZW5kaWYKKwogI2lmICEoZGVm
aW5lZChVU0VfU1lTVEVNX01BTExPQykgJiYgVVNFX1NZU1RFTV9NQUxMT0MpICYmIGRlZmluZWQo
TkRFQlVHKQogI2RlZmluZSBGT1JDRV9TWVNURU1fTUFMTE9DIDAKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzM0NzkpCisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNC0wOS0xMCAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIGJtYWxsb2Mgc2hvdWxkIHNlZ3JlZ2F0ZSBtZWRp
dW0tc2l6ZWQgb2JqZWN0cyBieSBsaW5lIGxpa2UgaXQgZG9lcyBmb3Igc21hbGwtc2l6ZWQgb2Jq
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgNCUg
cmVkdWN0aW9uIGluIGhlYXAgc2l6ZSBvbiB0aGUgTWFsbG9jQmVuY2ggKl9tZW1vcnlfd2Fybmlu
ZyBiZW5jaG1hcmtzLgorCisgICAgICAgIE5vIHRocm91Z2hwdXQgY2hhbmdlLgorCisgICAgICAg
IFdlIGtlZXAgYW4gYXJyYXkgb2YgbWVkaXVtIGFsbG9jYXRvcnMsIGp1c3QgbGlrZSBvdXIgYXJy
YXkgb2Ygc21hbGwKKyAgICAgICAgYWxsb2NhdG9ycy4KKworICAgICAgICBJbiBmdXR1cmUsIHdl
IGNhbiBzaW1wbGlmeSB0aGUgYWxsb2NhdGlvbiBmYXN0IHBhdGggYnkgbWVyZ2luZyB0aGUgc21h
bGwKKyAgICAgICAgYW5kIG1lZGl1bSBhbGxvY2F0b3IgYXJyYXlzLiBGb3Igbm93LCB0aGlzIGlz
IHRoZSBzaW1wbGVzdCBjaGFuZ2UgdGhhdAorICAgICAgICBnZXRzIHRoZSB3aW4uCisKKyAgICAg
ICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OkFsbG9jYXRvcik6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OnNjYXZlbmdlKToKKyAg
ICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6YWxsb2NhdGVNZWRpdW0pOgorICAgICAgICAqIGJt
YWxsb2MvQWxsb2NhdG9yLmg6CisgICAgICAgICogYm1hbGxvYy9TaXplcy5oOgorICAgICAgICAo
Ym1hbGxvYzo6U2l6ZXM6Om1lZGl1bVNpemVDbGFzc0Zvcik6CisKIDIwMTQtMDktMDUgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBibWFsbG9jIHNob3VsZCBo
b25vciB0aGUgRmFzdE1hbGxvYyBzdGF0aXN0aWNzIEFQSQpJbmRleDogU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9BbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMTczMjIyKQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9BbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBibWFsbG9jIHsKIEFsbG9jYXRvcjo6QWxsb2NhdG9yKERlYWxsb2NhdG9yJiBkZWFsbG9j
YXRvcikKICAgICA6IG1fZGVhbGxvY2F0b3IoZGVhbGxvY2F0b3IpCiAgICAgLCBtX3NtYWxsQWxs
b2NhdG9ycygpCi0gICAgLCBtX21lZGl1bUFsbG9jYXRvcigpCisgICAgLCBtX21lZGl1bUFsbG9j
YXRvcnMoKQogICAgICwgbV9zbWFsbEFsbG9jYXRvckxvZygpCiAgICAgLCBtX21lZGl1bUFsbG9j
YXRvckxvZygpCiB7CkBAIC02MCw3ICs2MCw4IEBAIHZvaWQgQWxsb2NhdG9yOjpzY2F2ZW5nZSgp
CiAgICAgICAgIGxvZyhhbGxvY2F0b3IpOwogICAgIHByb2Nlc3NTbWFsbEFsbG9jYXRvckxvZygp
OwogCi0gICAgbG9nKG1fbWVkaXVtQWxsb2NhdG9yKTsKKyAgICBmb3IgKGF1dG8mIGFsbG9jYXRv
ciA6IG1fbWVkaXVtQWxsb2NhdG9ycykKKyAgICAgICAgbG9nKGFsbG9jYXRvcik7CiAgICAgcHJv
Y2Vzc01lZGl1bUFsbG9jYXRvckxvZygpOwogfQogCkBAIC0xMjYsNyArMTI3LDcgQEAgdm9pZCog
QWxsb2NhdG9yOjphbGxvY2F0ZVhMYXJnZShzaXplX3QgcwogCiB2b2lkKiBBbGxvY2F0b3I6OmFs
bG9jYXRlTWVkaXVtKHNpemVfdCBzaXplKQogewotICAgIE1lZGl1bUFsbG9jYXRvciYgYWxsb2Nh
dG9yID0gbV9tZWRpdW1BbGxvY2F0b3I7CisgICAgTWVkaXVtQWxsb2NhdG9yJiBhbGxvY2F0b3Ig
PSBtX21lZGl1bUFsbG9jYXRvcnNbbWVkaXVtU2l6ZUNsYXNzRm9yKHNpemUpXTsKICAgICBzaXpl
ID0gcm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnQ+KHNpemUpOwogCiAgICAgdm9pZCogb2Jq
ZWN0OwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCShyZXZpc2lvbiAxNzMyMjIp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgRGVhbGxvY2F0b3ImIG1fZGVhbGxvY2F0b3I7
CiAKICAgICBzdGQ6OmFycmF5PFNtYWxsQWxsb2NhdG9yLCBzbWFsbE1heCAvIGFsaWdubWVudD4g
bV9zbWFsbEFsbG9jYXRvcnM7Ci0gICAgTWVkaXVtQWxsb2NhdG9yIG1fbWVkaXVtQWxsb2NhdG9y
OworICAgIHN0ZDo6YXJyYXk8TWVkaXVtQWxsb2NhdG9yLCBtZWRpdW1NYXggLyBhbGlnbm1lbnQ+
IG1fbWVkaXVtQWxsb2NhdG9yczsKIAogICAgIEZpeGVkVmVjdG9yPHN0ZDo6cGFpcjxTbWFsbExp
bmUqLCB1bnNpZ25lZCBjaGFyPiwgc21hbGxBbGxvY2F0b3JMb2dDYXBhY2l0eT4gbV9zbWFsbEFs
bG9jYXRvckxvZzsKICAgICBGaXhlZFZlY3RvcjxzdGQ6OnBhaXI8TWVkaXVtTGluZSosIHVuc2ln
bmVkIGNoYXI+LCBtZWRpdW1BbGxvY2F0b3JMb2dDYXBhY2l0eT4gbV9tZWRpdW1BbGxvY2F0b3JM
b2c7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCShyZXZpc2lvbiAxNzMyMjQpCisrKyBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDEy
IEBAIG5hbWVzcGFjZSBTaXplcyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxT
aXplQ2xhc3NNYXNrID0gKHNtYWxsTWF4IC8gYWxpZ25tZW50KSAtIDE7CiAgICAgICAgIHJldHVy
biBtYXNrKChzaXplIC0gMXVsKSAvIGFsaWdubWVudCwgc21hbGxTaXplQ2xhc3NNYXNrKTsKICAg
ICB9CisKKyAgICBpbmxpbmUgc2l6ZV90IG1lZGl1bVNpemVDbGFzc0ZvcihzaXplX3Qgc2l6ZSkK
KyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWVkaXVtU2l6ZUNsYXNzTWFzayA9
IChtZWRpdW1NYXggLyBhbGlnbm1lbnQpIC0gMTsKKyAgICAgICAgcmV0dXJuIG1hc2soKHNpemUg
LSAxdWwpIC8gYWxpZ25tZW50LCBtZWRpdW1TaXplQ2xhc3NNYXNrKTsKKyAgICB9CiB9OwogCiB1
c2luZyBuYW1lc3BhY2UgU2l6ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237981</attachid>
            <date>2014-09-11 12:50:59 -0700</date>
            <delta_ts>2014-09-11 12:54:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136693-20140911125056.patch</filename>
            <type>text/plain</type>
            <size>4215</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAxNzM1MzApCisrKyBTb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwxMCBAQAog
I2VuZGlmCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShDT0NPQSkgJiYgKENQVShYODZfNjQpIHx8
IENQVShBUk02NCkpKQorI2RlZmluZSBVU0VfQk1BTExPQyAxCisjZW5kaWYKKwogI2lmICEoZGVm
aW5lZChVU0VfU1lTVEVNX01BTExPQykgJiYgVVNFX1NZU1RFTV9NQUxMT0MpICYmIGRlZmluZWQo
TkRFQlVHKQogI2RlZmluZSBGT1JDRV9TWVNURU1fTUFMTE9DIDAKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzM1MzApCisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNC0wOS0xMSAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIGJtYWxsb2Mgc2hvdWxkIHNlZ3JlZ2F0ZSBtZWRp
dW0tc2l6ZWQgb2JqZWN0cyBieSBsaW5lIGxpa2UgaXQgZG9lcyBmb3Igc21hbGwtc2l6ZWQgb2Jq
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgNCUg
cmVkdWN0aW9uIGluIGhlYXAgc2l6ZSBvbiB0aGUgTWFsbG9jQmVuY2ggKl9tZW1vcnlfd2Fybmlu
ZyBiZW5jaG1hcmtzLgorCisgICAgICAgIE5vIHRocm91Z2hwdXQgY2hhbmdlLgorCisgICAgICAg
IFdlIGtlZXAgYW4gYXJyYXkgb2YgbWVkaXVtIGFsbG9jYXRvcnMsIGp1c3QgbGlrZSBvdXIgYXJy
YXkgb2Ygc21hbGwKKyAgICAgICAgYWxsb2NhdG9ycy4KKworICAgICAgICBJbiBmdXR1cmUsIHdl
IGNhbiBzaW1wbGlmeSB0aGUgYWxsb2NhdGlvbiBmYXN0IHBhdGggYnkgbWVyZ2luZyB0aGUgc21h
bGwKKyAgICAgICAgYW5kIG1lZGl1bSBhbGxvY2F0b3IgYXJyYXlzLiBGb3Igbm93LCB0aGlzIGlz
IHRoZSBzaW1wbGVzdCBjaGFuZ2UgdGhhdAorICAgICAgICBnZXRzIHRoZSB3aW4uCisKKyAgICAg
ICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OkFsbG9jYXRvcik6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OnNjYXZlbmdlKToKKyAg
ICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6YWxsb2NhdGVNZWRpdW0pOgorICAgICAgICAqIGJt
YWxsb2MvQWxsb2NhdG9yLmg6CisgICAgICAgICogYm1hbGxvYy9TaXplcy5oOgorICAgICAgICAo
Ym1hbGxvYzo6U2l6ZXM6Om1lZGl1bVNpemVDbGFzc0Zvcik6CisKIDIwMTQtMDktMTEgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MTczNTMwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIEFsbG9jYXRvcjo6
QWxsb2NhdG9yKERlYWxsb2NhdG9yJiBkZWFsbG9jYXRvcikKICAgICA6IG1fZGVhbGxvY2F0b3Io
ZGVhbGxvY2F0b3IpCiAgICAgLCBtX3NtYWxsQWxsb2NhdG9ycygpCi0gICAgLCBtX21lZGl1bUFs
bG9jYXRvcigpCisgICAgLCBtX21lZGl1bUFsbG9jYXRvcnMoKQogICAgICwgbV9zbWFsbEFsbG9j
YXRvckxvZygpCiAgICAgLCBtX21lZGl1bUFsbG9jYXRvckxvZygpCiB7CkBAIC01Myw3ICs1Myw3
IEBAIEFsbG9jYXRvcjo6fkFsbG9jYXRvcigpCiB7CiAgICAgc2NhdmVuZ2UoKTsKIH0KLSAgICAK
Kwogdm9pZCBBbGxvY2F0b3I6OnNjYXZlbmdlKCkKIHsKICAgICBmb3IgKGF1dG8mIGFsbG9jYXRv
ciA6IG1fc21hbGxBbGxvY2F0b3JzKSB7CkBAIC02Miw4ICs2Miw4IEBAIHZvaWQgQWxsb2NhdG9y
OjpzY2F2ZW5nZSgpCiAgICAgfQogICAgIHByb2Nlc3NTbWFsbEFsbG9jYXRvckxvZygpOwogCi0g
ICAgcmV0aXJlKG1fbWVkaXVtQWxsb2NhdG9yKTsKLSAgICBtX21lZGl1bUFsbG9jYXRvci5jbGVh
cigpOworICAgIGZvciAoYXV0byYgYWxsb2NhdG9yIDogbV9tZWRpdW1BbGxvY2F0b3JzKQorICAg
ICAgICByZXRpcmUoYWxsb2NhdG9yKTsKICAgICBwcm9jZXNzTWVkaXVtQWxsb2NhdG9yTG9nKCk7
CiB9CiAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlWExhcmdl
KHNpemVfdCBzCiAKIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGVNZWRpdW0oc2l6ZV90IHNpemUp
CiB7Ci0gICAgTWVkaXVtQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSBtX21lZGl1bUFsbG9jYXRvcjsK
KyAgICBNZWRpdW1BbGxvY2F0b3ImIGFsbG9jYXRvciA9IG1fbWVkaXVtQWxsb2NhdG9yc1ttZWRp
dW1TaXplQ2xhc3NGb3Ioc2l6ZSldOwogICAgIHNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPGFs
aWdubWVudD4oc2l6ZSk7CiAKICAgICB2b2lkKiBvYmplY3Q7CkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0FsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvQWxsb2NhdG9yLmgJKHJldmlzaW9uIDE3MzUzMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToK
ICAgICBEZWFsbG9jYXRvciYgbV9kZWFsbG9jYXRvcjsKIAogICAgIHN0ZDo6YXJyYXk8U21hbGxB
bGxvY2F0b3IsIHNtYWxsTWF4IC8gYWxpZ25tZW50PiBtX3NtYWxsQWxsb2NhdG9yczsKLSAgICBN
ZWRpdW1BbGxvY2F0b3IgbV9tZWRpdW1BbGxvY2F0b3I7CisgICAgc3RkOjphcnJheTxNZWRpdW1B
bGxvY2F0b3IsIG1lZGl1bU1heCAvIGFsaWdubWVudD4gbV9tZWRpdW1BbGxvY2F0b3JzOwogCiAg
ICAgRml4ZWRWZWN0b3I8c3RkOjpwYWlyPFNtYWxsTGluZSosIHVuc2lnbmVkIGNoYXI+LCBzbWFs
bEFsbG9jYXRvckxvZ0NhcGFjaXR5PiBtX3NtYWxsQWxsb2NhdG9yTG9nOwogICAgIEZpeGVkVmVj
dG9yPHN0ZDo6cGFpcjxNZWRpdW1MaW5lKiwgdW5zaWduZWQgY2hhcj4sIG1lZGl1bUFsbG9jYXRv
ckxvZ0NhcGFjaXR5PiBtX21lZGl1bUFsbG9jYXRvckxvZzsKSW5kZXg6IFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvU2l6ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Np
emVzLmgJKHJldmlzaW9uIDE3MzUzMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMTIgQEAgbmFtZXNwYWNlIFNpemVzIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbFNpemVDbGFzc01hc2sgPSAoc21hbGxNYXgg
LyBhbGlnbm1lbnQpIC0gMTsKICAgICAgICAgcmV0dXJuIG1hc2soKHNpemUgLSAxdWwpIC8gYWxp
Z25tZW50LCBzbWFsbFNpemVDbGFzc01hc2spOwogICAgIH0KKworICAgIGlubGluZSBzaXplX3Qg
bWVkaXVtU2l6ZUNsYXNzRm9yKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBtZWRpdW1TaXplQ2xhc3NNYXNrID0gKG1lZGl1bU1heCAvIGFsaWdubWVudCkg
LSAxOworICAgICAgICByZXR1cm4gbWFzaygoc2l6ZSAtIDF1bCkgLyBhbGlnbm1lbnQsIG1lZGl1
bVNpemVDbGFzc01hc2spOworICAgIH0KIH07CiAKIHVzaW5nIG5hbWVzcGFjZSBTaXplczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237982</attachid>
            <date>2014-09-11 12:55:00 -0700</date>
            <delta_ts>2014-09-30 22:19:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136693-20140911125458.patch</filename>
            <type>text/plain</type>
            <size>4253</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAxNzM1MzApCisrKyBTb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwxMCBAQAog
I2VuZGlmCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShDT0NPQSkgJiYgKENQVShYODZfNjQpIHx8
IENQVShBUk02NCkpKQorI2RlZmluZSBVU0VfQk1BTExPQyAxCisjZW5kaWYKKwogI2lmICEoZGVm
aW5lZChVU0VfU1lTVEVNX01BTExPQykgJiYgVVNFX1NZU1RFTV9NQUxMT0MpICYmIGRlZmluZWQo
TkRFQlVHKQogI2RlZmluZSBGT1JDRV9TWVNURU1fTUFMTE9DIDAKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzM1MzApCisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNC0wOS0xMSAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIGJtYWxsb2Mgc2hvdWxkIHNlZ3JlZ2F0ZSBtZWRp
dW0tc2l6ZWQgb2JqZWN0cyBieSBsaW5lIGxpa2UgaXQgZG9lcyBmb3Igc21hbGwtc2l6ZWQgb2Jq
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgNCUg
cmVkdWN0aW9uIGluIGhlYXAgc2l6ZSBvbiB0aGUgTWFsbG9jQmVuY2ggKl9tZW1vcnlfd2Fybmlu
ZyBiZW5jaG1hcmtzLgorCisgICAgICAgIE5vIHRocm91Z2hwdXQgY2hhbmdlLgorCisgICAgICAg
IFdlIGtlZXAgYW4gYXJyYXkgb2YgbWVkaXVtIGFsbG9jYXRvcnMsIGp1c3QgbGlrZSBvdXIgYXJy
YXkgb2Ygc21hbGwKKyAgICAgICAgYWxsb2NhdG9ycy4KKworICAgICAgICBJbiBmdXR1cmUsIHdl
IGNhbiBzaW1wbGlmeSB0aGUgYWxsb2NhdGlvbiBmYXN0IHBhdGggYnkgbWVyZ2luZyB0aGUgc21h
bGwKKyAgICAgICAgYW5kIG1lZGl1bSBhbGxvY2F0b3IgYXJyYXlzLiBGb3Igbm93LCB0aGlzIGlz
IHRoZSBzaW1wbGVzdCBjaGFuZ2UgdGhhdAorICAgICAgICBnZXRzIHRoZSB3aW4uCisKKyAgICAg
ICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OkFsbG9jYXRvcik6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OnNjYXZlbmdlKToKKyAg
ICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6YWxsb2NhdGVNZWRpdW0pOgorICAgICAgICAqIGJt
YWxsb2MvQWxsb2NhdG9yLmg6CisgICAgICAgICogYm1hbGxvYy9TaXplcy5oOgorICAgICAgICAo
Ym1hbGxvYzo6U2l6ZXM6Om1lZGl1bVNpemVDbGFzc0Zvcik6CisKIDIwMTQtMDktMTEgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MTczNTMwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIEFsbG9jYXRvcjo6
QWxsb2NhdG9yKERlYWxsb2NhdG9yJiBkZWFsbG9jYXRvcikKICAgICA6IG1fZGVhbGxvY2F0b3Io
ZGVhbGxvY2F0b3IpCiAgICAgLCBtX3NtYWxsQWxsb2NhdG9ycygpCi0gICAgLCBtX21lZGl1bUFs
bG9jYXRvcigpCisgICAgLCBtX21lZGl1bUFsbG9jYXRvcnMoKQogICAgICwgbV9zbWFsbEFsbG9j
YXRvckxvZygpCiAgICAgLCBtX21lZGl1bUFsbG9jYXRvckxvZygpCiB7CkBAIC01Myw3ICs1Myw3
IEBAIEFsbG9jYXRvcjo6fkFsbG9jYXRvcigpCiB7CiAgICAgc2NhdmVuZ2UoKTsKIH0KLSAgICAK
Kwogdm9pZCBBbGxvY2F0b3I6OnNjYXZlbmdlKCkKIHsKICAgICBmb3IgKGF1dG8mIGFsbG9jYXRv
ciA6IG1fc21hbGxBbGxvY2F0b3JzKSB7CkBAIC02Miw4ICs2MiwxMCBAQCB2b2lkIEFsbG9jYXRv
cjo6c2NhdmVuZ2UoKQogICAgIH0KICAgICBwcm9jZXNzU21hbGxBbGxvY2F0b3JMb2coKTsKIAot
ICAgIHJldGlyZShtX21lZGl1bUFsbG9jYXRvcik7Ci0gICAgbV9tZWRpdW1BbGxvY2F0b3IuY2xl
YXIoKTsKKyAgICBmb3IgKGF1dG8mIGFsbG9jYXRvciA6IG1fbWVkaXVtQWxsb2NhdG9ycykgewor
ICAgICAgICByZXRpcmUoYWxsb2NhdG9yKTsKKyAgICAgICAgYWxsb2NhdG9yLmNsZWFyKCk7Cisg
ICAgfQogICAgIHByb2Nlc3NNZWRpdW1BbGxvY2F0b3JMb2coKTsKIH0KIApAQCAtMTI5LDcgKzEz
MSw3IEBAIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGVYTGFyZ2Uoc2l6ZV90IHMKIAogdm9pZCog
QWxsb2NhdG9yOjphbGxvY2F0ZU1lZGl1bShzaXplX3Qgc2l6ZSkKIHsKLSAgICBNZWRpdW1BbGxv
Y2F0b3ImIGFsbG9jYXRvciA9IG1fbWVkaXVtQWxsb2NhdG9yOworICAgIE1lZGl1bUFsbG9jYXRv
ciYgYWxsb2NhdG9yID0gbV9tZWRpdW1BbGxvY2F0b3JzW21lZGl1bVNpemVDbGFzc0ZvcihzaXpl
KV07CiAgICAgc2l6ZSA9IHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25tZW50PihzaXplKTsKIAog
ICAgIHZvaWQqIG9iamVjdDsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuaAkocmV2
aXNpb24gMTczNTMwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIERlYWxsb2NhdG9yJiBt
X2RlYWxsb2NhdG9yOwogCiAgICAgc3RkOjphcnJheTxTbWFsbEFsbG9jYXRvciwgc21hbGxNYXgg
LyBhbGlnbm1lbnQ+IG1fc21hbGxBbGxvY2F0b3JzOwotICAgIE1lZGl1bUFsbG9jYXRvciBtX21l
ZGl1bUFsbG9jYXRvcjsKKyAgICBzdGQ6OmFycmF5PE1lZGl1bUFsbG9jYXRvciwgbWVkaXVtTWF4
IC8gYWxpZ25tZW50PiBtX21lZGl1bUFsbG9jYXRvcnM7CiAKICAgICBGaXhlZFZlY3RvcjxzdGQ6
OnBhaXI8U21hbGxMaW5lKiwgdW5zaWduZWQgY2hhcj4sIHNtYWxsQWxsb2NhdG9yTG9nQ2FwYWNp
dHk+IG1fc21hbGxBbGxvY2F0b3JMb2c7CiAgICAgRml4ZWRWZWN0b3I8c3RkOjpwYWlyPE1lZGl1
bUxpbmUqLCB1bnNpZ25lZCBjaGFyPiwgbWVkaXVtQWxsb2NhdG9yTG9nQ2FwYWNpdHk+IG1fbWVk
aXVtQWxsb2NhdG9yTG9nOwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaAkocmV2aXNpb24gMTcz
NTMwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05Nyw2ICs5NywxMiBAQCBuYW1lc3BhY2UgU2l6ZXMgewogICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHNtYWxsU2l6ZUNsYXNzTWFzayA9IChzbWFsbE1heCAvIGFsaWdubWVudCkgLSAxOwog
ICAgICAgICByZXR1cm4gbWFzaygoc2l6ZSAtIDF1bCkgLyBhbGlnbm1lbnQsIHNtYWxsU2l6ZUNs
YXNzTWFzayk7CiAgICAgfQorCisgICAgaW5saW5lIHNpemVfdCBtZWRpdW1TaXplQ2xhc3NGb3Io
c2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1lZGl1bVNp
emVDbGFzc01hc2sgPSAobWVkaXVtTWF4IC8gYWxpZ25tZW50KSAtIDE7CisgICAgICAgIHJldHVy
biBtYXNrKChzaXplIC0gMXVsKSAvIGFsaWdubWVudCwgbWVkaXVtU2l6ZUNsYXNzTWFzayk7Cisg
ICAgfQogfTsKIAogdXNpbmcgbmFtZXNwYWNlIFNpemVzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>