<?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>72537</bug_id>
          
          <creation_ts>2011-11-16 13:09:49 -0800</creation_ts>
          <short_desc>Add API for paginated display</short_desc>
          <delta_ts>2011-11-16 17:20:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504169</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-11-16 13:09:49 -0800</bug_when>
    <thetext>Add API for paginated display</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504171</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-11-16 13:10:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/10262242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504190</commentid>
    <comment_count>2</comment_count>
      <attachid>115434</attachid>
    <who name="">mitz</who>
    <bug_when>2011-11-16 13:24:25 -0800</bug_when>
    <thetext>Created attachment 115434
Add WebKit1 Mac SPI, WebKit2 Mac SPI and WebKit2 C SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504193</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-16 13:28:18 -0800</bug_when>
    <thetext>Attachment 115434 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit2/UIProcess/API/mac/WKBrowsingContextControllerPrivate.h:35:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504196</commentid>
    <comment_count>4</comment_count>
      <attachid>115434</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-16 13:30:24 -0800</bug_when>
    <thetext>Comment on attachment 115434
Add WebKit1 Mac SPI, WebKit2 Mac SPI and WebKit2 C SPI

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

&gt; Source/WebKit2/UIProcess/API/C/WKPagePrivate.h:64
&gt; +WK_EXPORT void WKPageSetGapBetweenPages(WKPageRef page, double gap);

What units is this gap in? Pixels?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504200</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-11-16 13:35:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 115434 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115434&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKPagePrivate.h:64
&gt; &gt; +WK_EXPORT void WKPageSetGapBetweenPages(WKPageRef page, double gap);
&gt; 
&gt; What units is this gap in? Pixels?

They are document view units (i.e. they are scaled by the page scale factor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504344</commentid>
    <comment_count>6</comment_count>
      <attachid>115434</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-11-16 15:56:22 -0800</bug_when>
    <thetext>Comment on attachment 115434
Add WebKit1 Mac SPI, WebKit2 Mac SPI and WebKit2 C SPI

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

&gt; Source/WebKit2/Shared/WebPageCreationParameters.cpp:49
&gt; +    encoder-&gt;encode(paginationMode);

You can just use encodeEnum here.

&gt; Source/WebKit2/Shared/WebPageCreationParameters.cpp:96
&gt; +    if (!decoder-&gt;decode(parameters.paginationMode))
&gt; +        return false;

and decodeEnum here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504430</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-11-16 17:20:30 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r100534&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115434</attachid>
            <date>2011-11-16 13:24:25 -0800</date>
            <delta_ts>2011-11-16 17:20:52 -0800</delta_ts>
            <desc>Add WebKit1 Mac SPI, WebKit2 Mac SPI and WebKit2 C SPI</desc>
            <filename>bug-72537-20111116132424.patch</filename>
            <type>text/plain</type>
            <size>34087</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTExLTE2ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBwYXJ0IG9mIDxyZGFy
Oi8vcHJvYmxlbS8xMDI2MjI0Mj4gQWRkIEFQSSBmb3IgcGFnaW5hdGVkIGRpc3BsYXkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjogRXhwb3J0ZWQgUGFnZTo6cGFnZUNvdW50KCkuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2VDb3VudCk6IEFkZGVkIHRoaXMgZ2V0dGVyLgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDExLTExLTE2ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTAwNDM4LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEwMDQ2NSkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI5LDYg
KzEzMjksNyBAQCBfX1pOSzdXZWJDb3JlNFBhZ2UxMHBsdWdpbkRhdGFFdgogX19aTks3V2ViQ29y
ZTRQYWdlMTViYWNrRm9yd2FyZExpc3RFdgogX19aTks3V2ViQ29yZTRQYWdlMzRpbkxvd1F1YWxp
dHlJbWFnZUludGVycG9sYXRpb25Nb2RlRXYKIF9fWk5LN1dlYkNvcmU0UGFnZTlncm91cE5hbWVF
dgorX19aTks3V2ViQ29yZTRQYWdlOXBhZ2VDb3VudEV2CiBfX1pOSzdXZWJDb3JlNUNvbG9yN2dl
dFJHQkFFUmRTMV9TMV9TMV8KIF9fWk5LN1dlYkNvcmU1RnJhbWUxM293bmVyUmVuZGVyZXJFdgog
X19aTks3V2ViQ29yZTVGcmFtZTE0c2VsZWN0aW9uSW1hZ2VFYgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiAxMDA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2Uu
aCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0
cnkuaCIKQEAgLTY3Niw2ICs2NzcsMjEgQEAgdm9pZCBQYWdlOjpzZXRQYWdpbmF0aW9uKGNvbnN0
IFBhZ2luYXRpbwogICAgIGJhY2tGb3J3YXJkKCktPm1hcmtQYWdlc0ZvckZ1bGxTdHlsZVJlY2Fs
YygpOwogfQogCit1bnNpZ25lZCBQYWdlOjpwYWdlQ291bnQoKSBjb25zdAoreworICAgIGlmICht
X3BhZ2luYXRpb24ubW9kZSA9PSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFtZSgpLT52aWV3KCk7
CisgICAgaWYgKCFmcmFtZVZpZXctPmRpZEZpcnN0TGF5b3V0KCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgbWFpbkZyYW1lKCktPnZpZXcoKS0+Zm9yY2VMYXlvdXQoKTsKKworICAgIFJlbmRl
clZpZXcqIGNvbnRlbnRSZW5kZXJlciA9IG1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKTsK
KyAgICByZXR1cm4gY29udGVudFJlbmRlcmVyLT5jb2x1bW5Db3VudChjb250ZW50UmVuZGVyZXIt
PmNvbHVtbkluZm8oKSk7Cit9CisKIHZvaWQgUGFnZTo6ZGlkTW92ZU9uc2NyZWVuKCkKIHsKICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDEw
MDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjcsNiArMjY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBQYWdpbmF0
aW9uJiBwYWdpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0aW9uOyB9CiAgICAgICAg
IHZvaWQgc2V0UGFnaW5hdGlvbihjb25zdCBQYWdpbmF0aW9uJik7CiAKKyAgICAgICAgdW5zaWdu
ZWQgcGFnZUNvdW50KCkgY29uc3Q7CisKICAgICAgICAgLy8gTm90aWZpY2F0aW9ucyB3aGVuIHRo
ZSBQYWdlIHN0YXJ0cyBhbmQgc3RvcHMgYmVpbmcgcHJlc2VudGVkIHZpYSBhIG5hdGl2ZSB3aW5k
b3cuCiAgICAgICAgIHZvaWQgZGlkTW92ZU9uc2NyZWVuKCk7CiAgICAgICAgIHZvaWQgd2lsbE1v
dmVPZmZzY3JlZW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDQ5NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEx
LTExLTE2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0
MiBwYXJ0IG9mIDxyZGFyOi8vcHJvYmxlbS8xMDI2MjI0Mj4gQWRkIEFQSSBmb3IgcGFnaW5hdGVk
IGRpc3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyNTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEVuY29kZSB0aGUgcGFnaW5hdGlv
biBtb2RlIGFuZCBnYXAgYmV0d2VlbiBwYWdlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKTogRGVjb2RlIHRoZSBwYWdpbmF0aW9uIG1vZGUgYW5k
IGdhcCBiZXR3ZWVuIHBhZ2VzLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmg6IEFkZGVkIHBhZ2luYXRpb25Nb2RlIGFuZCBnYXBCZXR3ZWVuUGFnZXMgbWVtYmVy
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFn
ZVNldFBhZ2luYXRpb25Nb2RlKTogQWRkZWQgdGhpcyBBUEkgd3JhcHBlci4KKyAgICAgICAgKFdL
UGFnZUdldFBhZ2luYXRpb25Nb2RlKTogRGl0dG8uCisgICAgICAgIChXS1BhZ2VTZXRHYXBCZXR3
ZWVuUGFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdLUGFnZUdldEdhcEJldHdlZW5QYWdlcyk6IERp
dHRvLgorICAgICAgICAoV0tQYWdlR2V0UGFnZUNvdW50KTogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDogQWRkZWQgYW4gZW51bSBhbmQgYSBkZWZpbml0
aW9uIG9mIFdLUGFnaW5hdGlvbk1vZGUgYW5kCisgICAgICAgIGFjY2Vzc29ycy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBzZXRQYWdpbmF0aW9uTW9kZTpdKTog
QWRkZWQgdGhpcyBBUEkgd3JhcHBlci4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIHBhZ2luYXRpb25Nb2RlXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgc2V0R2FwQmV0d2VlblBhZ2VzOl0pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGdhcEJldHdlZW5QYWdlc10pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHBhZ2VDb3VudF0pOiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQ
cml2YXRlLmg6IEFkZGVkLiBJbmNsdWRlcyBhbiBlbnVtIGFuZCBhIGRlZmluaXRpb24KKyAgICAg
ICAgb2YgV0tCcm93c2luZ0NvbnRleHRQYWdpbmF0aW9uTW9kZSBhbmQgcHJvcGVydHkgZGVjbGFy
YXRpb25zLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6IEFkZGVkIGludGlhbGl6YXRpb24g
b2YgbV9wYWdpbmF0aW9uTW9kZSwgbV9nYXBCZXR3ZWVuUGFnZXMsCisgICAgICAgIGFuZCBtX3Bh
Z2VDb3VudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTW9k
ZSk6IEFkZGVkIHRoaXMgYWNjZXNzb3IsIHdoaWNoIGNhY2hlcyB0aGUgdmFsdWUgYW5kIHNlbmRz
CisgICAgICAgIGEgbWVzc2FnZSB0byB0aGUgV2ViUGFnZS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBTZXQgdGhlIHBhZ2luYXRpb24gbW9k
ZSBhbmQgZ2FwIGJldHdlZW4gcGFnZXMgaW4gdGhlCisgICAgICAgIGNyZWF0aW9uIHBhcmFtZXRl
cnMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUGFnZUNvdW50KTog
QWRkZWQuIFVwZGF0ZXMgdGhlIGNhY2hlZCBwYWdlIGNvdW50LgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdpbmF0
aW9uTW9kZSk6IEFkZGVkIHRoaXMgZ2V0dGVyIHRoYXQgcmV0dXJucyBhIGNhY2hlZCB2YWx1ZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnYXBCZXR3ZWVuUGFnZXMpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlQ291bnQpOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZCBEaWRDaGFuZ2Vk
UGFnZUNvdW50LCBzZW50IHdoZW4gdGhlIHBhZ2UgY291bnQgY2hhbmdlcworICAgICAgICBhZnRl
ciBsYXlvdXQuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBB
ZGRlZCBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmguCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6IAorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOiBBZGRl
ZCBhIGNhbGwgdG8gV2ViUGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KCksCisgICAgICAgIGFsbG93
aW5nIHRoZSBwYWdlIHRvIHJlc3BvbmQgdG8gY2hhbmdlcyBpbiB0aGUgY29sdW1uIGNvdW50Lgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6V2ViUGFnZSk6IEFkZGVkIGluaXRpYWxpemVyIGZvciBtX2NhY2hlZFBhZ2VD
b3VudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UGFnaW5hdGlvbk1vZGUpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0R2FwQmV0d2VlblBhZ2VzKTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1haW5GcmFtZURpZExheW91dCk6IEFkZGVkLiBT
ZW5kcyBhIERpZENoYW5nZVBhZ2VDb3VudCBtZXNzYWdlIHRvIHRoZSBVSSBwcm9jZXNzCisgICAg
ICAgIGlmIHRoZSBwYWdlIGNvdW50IGhhcyBjaGFuZ2VkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46IEFkZGVkIFNldFBhZ2luYXRpb25Nb2RlIGFuZCBTZXRHYXBCZXR3ZWVuUGFn
ZXMgbWVzc2FnZXMuCisKIDIwMTEtMTEtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgYWNj
ZXNzaWJpbGl0eS1yZWxhdGVkIERSVCBBUElzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMDA0NjUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00Niw2ICs0Niw4IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKEMKICAgICBlbmNvZGVyLT5lbmNvZGUoYXJlTWVtb3J5Q2FjaGVDbGllbnRD
YWxsc0VuYWJsZWQpOwogICAgIGVuY29kZXItPmVuY29kZSh1c2VGaXhlZExheW91dCk7CiAgICAg
ZW5jb2Rlci0+ZW5jb2RlKGZpeGVkTGF5b3V0U2l6ZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHBh
Z2luYXRpb25Nb2RlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZ2FwQmV0d2VlblBhZ2VzKTsKICAg
ICBlbmNvZGVyLT5lbmNvZGUodXNlckFnZW50KTsKICAgICBlbmNvZGVyLT5lbmNvZGUoc2Vzc2lv
blN0YXRlKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1J
RCk7CkBAIC05MCw2ICs5MiwxMCBAQCBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShDCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShw
YXJhbWV0ZXJzLmZpeGVkTGF5b3V0U2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25Nb2RlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMuZ2FwQmV0
d2VlblBhZ2VzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHBhcmFtZXRlcnMudXNlckFnZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMuc2Vzc2lvblN0YXRlKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2
aXNpb24gMTAwNDY1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsOSBAQCBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VGaXhlZExheW91dDsKICAgICBXZWJD
b3JlOjpJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZTsKIAorICAgIHVpbnQzMl90IC8qIFdlYkNvcmU6
OlBhZ2U6OlBhZ2luYXRpb246Ok1vZGUgKi8gcGFnaW5hdGlvbk1vZGU7CisgICAgZG91YmxlIGdh
cEJldHdlZW5QYWdlczsKKwogICAgIFN0cmluZyB1c2VyQWdlbnQ7CiAKICAgICBTZXNzaW9uU3Rh
dGUgc2Vzc2lvblN0YXRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDEwMDQ2NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDggQEAgV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcAogICAgICwgbV9kcmF3c1RyYW5zcGFy
ZW50QmFja2dyb3VuZChmYWxzZSkKICAgICAsIG1fYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0Vu
YWJsZWQodHJ1ZSkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFsc2UpCisgICAgLCBtX3BhZ2lu
YXRpb25Nb2RlKFBhZ2U6OlBhZ2luYXRpb246OlVucGFnaW5hdGVkKQorICAgICwgbV9nYXBCZXR3
ZWVuUGFnZXMoMCkKICAgICAsIG1faXNWYWxpZCh0cnVlKQogICAgICwgbV9pc0Nsb3NlZChmYWxz
ZSkKICAgICAsIG1faXNJblByaW50aW5nTW9kZShmYWxzZSkKQEAgLTE4Nyw2ICsxODksNyBAQCBX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiBwCiAgICAgLCBtX21haW5GcmFt
ZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVJc1Bpbm5lZFRv
TGVmdFNpZGUoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGUoZmFs
c2UpCisgICAgLCBtX3BhZ2VDb3VudCgwKQogICAgICwgbV9yZW5kZXJUcmVlU2l6ZSgwKQogICAg
ICwgbV9zaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShmYWxzZSkKIHsKQEAgLTEyNzgsNiAr
MTI4MSwzMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvCiAgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZExheW91dFNpemUoc2l6
ZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25Nb2Rl
KFdlYkNvcmU6OlBhZ2U6OlBhZ2luYXRpb246Ok1vZGUgbW9kZSkKK3sKKyAgICBpZiAoIWlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1vZGUgPT0gbV9wYWdpbmF0aW9uTW9k
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdpbmF0aW9uTW9kZSA9IG1vZGU7CisgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTW9kZShtb2Rl
KSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2FwQmV0d2VlblBhZ2Vz
KGRvdWJsZSBnYXApCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChnYXAgPT0gbV9nYXBCZXR3ZWVuUGFnZXMpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZ2FwQmV0d2VlblBhZ2VzID0gZ2FwOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBX
ZWJQYWdlUHJveHk6OnBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0b3Ip
CiB7CiAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSBzY2FsZUZhY3RvcjsKQEAgLTMxNTUsNiArMzE4
Miw4IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICBwYXJh
bWV0ZXJzLmFyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkID0gbV9hcmVNZW1vcnlDYWNo
ZUNsaWVudENhbGxzRW5hYmxlZDsKICAgICBwYXJhbWV0ZXJzLnVzZUZpeGVkTGF5b3V0ID0gbV91
c2VGaXhlZExheW91dDsKICAgICBwYXJhbWV0ZXJzLmZpeGVkTGF5b3V0U2l6ZSA9IG1fZml4ZWRM
YXlvdXRTaXplOworICAgIHBhcmFtZXRlcnMucGFnaW5hdGlvbk1vZGUgPSBtX3BhZ2luYXRpb25N
b2RlOworICAgIHBhcmFtZXRlcnMuZ2FwQmV0d2VlblBhZ2VzID0gbV9nYXBCZXR3ZWVuUGFnZXM7
CiAgICAgcGFyYW1ldGVycy51c2VyQWdlbnQgPSB1c2VyQWdlbnQoKTsKICAgICBwYXJhbWV0ZXJz
LnNlc3Npb25TdGF0ZSA9IFNlc3Npb25TdGF0ZShtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygp
LCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEluZGV4KCkpOwogICAgIHBhcmFtZXRlcnMuaGln
aGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmhpZ2hl
ZFVzZWRJdGVtSUQoKTsKQEAgLTMyNzksNiArMzMwOCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0CiAgICAgbV9tYWluRnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRl
ID0gcGlubmVkVG9SaWdodFNpZGU7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQ
YWdlQ291bnQodW5zaWduZWQgcGFnZUNvdW50KQoreworICAgIG1fcGFnZUNvdW50ID0gcGFnZUNv
dW50OworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZhaWxUb0lu
aXRpYWxpemVQbHVnaW4odGhpcywgbWltZVR5cGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTAwNDY1KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJh
Z1Nlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENo
ZWNraW5nLmg+CkBAIC00MTIsNiArNDEzLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzUGlubmVk
VG9MZWZ0U2lkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRl
OyB9CiAgICAgYm9vbCBpc1Bpbm5lZFRvUmlnaHRTaWRlKCkgY29uc3QgeyByZXR1cm4gbV9tYWlu
RnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRlOyB9CiAKKyAgICB2b2lkIHNldFBhZ2luYXRpb25Nb2Rl
KFdlYkNvcmU6OlBhZ2U6OlBhZ2luYXRpb246Ok1vZGUpOworICAgIFdlYkNvcmU6OlBhZ2U6OlBh
Z2luYXRpb246Ok1vZGUgcGFnaW5hdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRp
b25Nb2RlOyB9CisgICAgdm9pZCBzZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlKTsKKyAgICBkb3Vi
bGUgZ2FwQmV0d2VlblBhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9nYXBCZXR3ZWVuUGFnZXM7IH0K
KyAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDb3VudDsgfQor
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIENhbGxlZCBieSB0aGUgd2ViIHByb2Nlc3MgdGhy
b3VnaCBhIG1lc3NhZ2UuCiAgICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW4oY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpOwpAQCAtNjYyLDYgKzY2OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JN
YWluRnJhbWUoYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyLCBib29sIGhhc1ZlcnRpY2FsU2Ny
b2xsYmFyKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldFBpbm5pbmdGb3JNYWluRnJh
bWUoYm9vbCBwaW5uZWRUb0xlZnRTaWRlLCBib29sIHBpbm5lZFRvUmlnaHRTaWRlKTsKKyAgICB2
b2lkIGRpZENoYW5nZVBhZ2VDb3VudCh1bnNpZ25lZCk7CiAgICAgdm9pZCBkaWRGYWlsVG9Jbml0
aWFsaXplUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHZvaWQgbnVtV2hlZWxF
dmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBjb3VudCkgeyBtX3doZWVsRXZlbnRIYW5kbGVy
Q291bnQgPSBjb3VudDsgfQogCkBAIC04ODQsNiArODkyLDkgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fdXNlRml4ZWRMYXlvdXQ7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6
ZTsKIAorICAgIFdlYkNvcmU6OlBhZ2U6OlBhZ2luYXRpb246Ok1vZGUgbV9wYWdpbmF0aW9uTW9k
ZTsKKyAgICBkb3VibGUgbV9nYXBCZXR3ZWVuUGFnZXM7CisKICAgICAvLyBJZiB0aGUgcHJvY2Vz
cyBiYWNraW5nIHRoZSB3ZWIgcGFnZSBpcyBhbGl2ZSBhbmQga2lja2luZy4KICAgICBib29sIG1f
aXNWYWxpZDsKIApAQCAtOTM4LDYgKzk0OSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21haW5G
cmFtZUlzUGlubmVkVG9MZWZ0U2lkZTsKICAgICBib29sIG1fbWFpbkZyYW1lSXNQaW5uZWRUb1Jp
Z2h0U2lkZTsKIAorICAgIHVuc2lnbmVkIG1fcGFnZUNvdW50OworCiAgICAgV2ViQ29yZTo6SW50
UmVjdCBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsKIAogICAgIHVpbnQ2NF90IG1fcmVuZGVy
VHJlZVNpemU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEwMDQ2NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBOb3RpZnlTY3JvbGxlclRo
dW1iSXNWaXNpYmxlSW5SZWN0KFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsZXJUaHVtYikKICAgICBE
aWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJh
ciwgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhcikKICAgICBEaWRDaGFuZ2VTY3JvbGxPZmZzZXRQ
aW5uaW5nRm9yTWFpbkZyYW1lKGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhciwgYm9vbCBoYXNW
ZXJ0aWNhbFNjcm9sbGJhcikKKyAgICBEaWRDaGFuZ2VQYWdlQ291bnQodW5zaWduZWQgcGFnZUNv
dW50KTsKICAgICBEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKFdURjo6U3RyaW5nIG1pbWVUeXBl
KQogICAgIE51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQgY291bnQpCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAx
MDA0NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDEzIEBACiAjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCiAjaWZkZWYgX19CTE9DS1NfXwogI2luY2x1ZGUgPEJs
b2NrLmg+CiAjZW5kaWYKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogCiBXS1R5cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKQpAQCAtMzQzLDYgKzM0NSw1
NSBAQCBib29sIFdLUGFnZUlzUGlubmVkVG9SaWdodFNpZGUoV0tQYWdlUmVmCiAgICAgcmV0dXJu
IHRvSW1wbChwYWdlUmVmKS0+aXNQaW5uZWRUb1JpZ2h0U2lkZSgpOwogfQogCit2b2lkIFdLUGFn
ZVNldFBhZ2luYXRpb25Nb2RlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2luYXRpb25Nb2RlIHBh
Z2luYXRpb25Nb2RlKQoreworICAgIFBhZ2U6OlBhZ2luYXRpb246Ok1vZGUgbW9kZTsKKyAgICBz
d2l0Y2ggKHBhZ2luYXRpb25Nb2RlKSB7CisgICAgY2FzZSBrV0tQYWdpbmF0aW9uTW9kZVVucGFn
aW5hdGVkOgorICAgICAgICBtb2RlID0gUGFnZTo6UGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVIb3Jpem9udGFsOgorICAg
ICAgICBtb2RlID0gUGFnZTo6UGFnaW5hdGlvbjo6SG9yaXpvbnRhbGx5UGFnaW5hdGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVmVydGljYWw6CisgICAgICAg
IG1vZGUgPSBQYWdlOjpQYWdpbmF0aW9uOjpWZXJ0aWNhbGx5UGFnaW5hdGVkOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0UGFnaW5hdGlvbk1vZGUobW9kZSk7Cit9CisKK1dLUGFnaW5hdGlvbk1vZGUg
V0tQYWdlR2V0UGFnaW5hdGlvbk1vZGUoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgc3dpdGNo
ICh0b0ltcGwocGFnZVJlZiktPnBhZ2luYXRpb25Nb2RlKCkpIHsKKyAgICBjYXNlIFBhZ2U6OlBh
Z2luYXRpb246OlVucGFnaW5hdGVkOgorICAgICAgICByZXR1cm4ga1dLUGFnaW5hdGlvbk1vZGVV
bnBhZ2luYXRlZDsKKyAgICBjYXNlIFBhZ2U6OlBhZ2luYXRpb246Okhvcml6b250YWxseVBhZ2lu
YXRlZDoKKyAgICAgICAgcmV0dXJuIGtXS1BhZ2luYXRpb25Nb2RlSG9yaXpvbnRhbDsKKyAgICBj
YXNlIFBhZ2U6OlBhZ2luYXRpb246OlZlcnRpY2FsbHlQYWdpbmF0ZWQ6CisgICAgICAgIHJldHVy
biBrV0tQYWdpbmF0aW9uTW9kZVZlcnRpY2FsOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBrV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOworfQorCit2
b2lkIFdLUGFnZVNldEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIGdh
cCkKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEdhcEJldHdlZW5QYWdlcyhnYXApOworfQor
Citkb3VibGUgV0tQYWdlR2V0R2FwQmV0d2VlblBhZ2VzKFdLUGFnZVJlZiBwYWdlUmVmKQorewor
ICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmdhcEJldHdlZW5QYWdlcygpOworfQorCit1bnNp
Z25lZCBXS1BhZ2VHZXRQYWdlQ291bnQoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgcmV0dXJu
IHRvSW1wbChwYWdlUmVmKS0+cGFnZUNvdW50KCk7Cit9CisKIGJvb2wgV0tQYWdlQ2FuRGVsZXRl
KFdLUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmNhbkRl
bGV0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
UHJpdmF0ZS5oCShyZXZpc2lvbiAxMDA0NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwyMCBAQCBX
S19FWFBPUlQgV0tQYWdlRGVidWdQYWludEZsYWdzIFdLUGFnZUdlCiAKIFdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS1BhZ2VDb3B5U3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKFdL
U3RyaW5nUmVmKTsKIAorZW51bSB7CisgICAga1dLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZCwK
KyAgICBrV0tQYWdpbmF0aW9uTW9kZUhvcml6b250YWwsCisgICAga1dLUGFnaW5hdGlvbk1vZGVW
ZXJ0aWNhbCwKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLUGFnaW5hdGlvbk1vZGU7CisKK1dLX0VY
UE9SVCB2b2lkIFdLUGFnZVNldFBhZ2luYXRpb25Nb2RlKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2lu
YXRpb25Nb2RlIHBhZ2luYXRpb25Nb2RlKTsKK1dLX0VYUE9SVCBXS1BhZ2luYXRpb25Nb2RlIFdL
UGFnZUdldFBhZ2luYXRpb25Nb2RlKFdLUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdL
UGFnZVNldEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFnZSwgZG91YmxlIGdhcCk7CitXS19F
WFBPUlQgZG91YmxlIFdLUGFnZUdldEdhcEJldHdlZW5QYWdlcyhXS1BhZ2VSZWYgcGFnZSk7CisK
K1dLX0VYUE9SVCB1bnNpZ25lZCBXS1BhZ2VHZXRQYWdlQ291bnQoV0tQYWdlUmVmIHBhZ2UpOwor
CiBzdHJ1Y3QgV0tQcmludEluZm8gewogICAgIGZsb2F0IHBhZ2VTZXR1cFNjYWxlRmFjdG9yOwog
ICAgIGZsb2F0IGF2YWlsYWJsZVBhcGVyV2lkdGg7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyLm1tCShyZXZpc2lvbiAxMDA0NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1LDExICsyNSwxMiBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJu
YWwuaCIKIAogI2ltcG9ydCAiV0tFcnJvckNGLmgiCiAjaW1wb3J0ICJXS0ZyYW1lLmgiCi0jaW1w
b3J0ICJXS1BhZ2UuaCIKKyNpbXBvcnQgIldLUGFnZVByaXZhdGUuaCIKICNpbXBvcnQgIldLUmV0
YWluUHRyLmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0ICJXS1VSTENGLmgiCkBA
IC0xOTYsNiArMTk3LDU5IEBAIC0gKHZvaWQpc2V0UGFnZVpvb206KENHRmxvYXQpcGFnZVpvb20K
IAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIChQ
cml2YXRlKQorCistICh2b2lkKXNldFBhZ2luYXRpb25Nb2RlOihXS0Jyb3dzaW5nQ29udGV4dFBh
Z2luYXRpb25Nb2RlKXBhZ2luYXRpb25Nb2RlCit7CisgICAgV0tQYWdpbmF0aW9uTW9kZSBtb2Rl
OworICAgIHN3aXRjaCAocGFnaW5hdGlvbk1vZGUpIHsKKyAgICBjYXNlIFdLUGFnaW5hdGlvbk1v
ZGVVbnBhZ2luYXRlZDoKKyAgICAgICAgbW9kZSA9IGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0
ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0tQYWdpbmF0aW9uTW9kZUhvcml6b250YWw6
CisgICAgICAgIG1vZGUgPSBrV0tQYWdpbmF0aW9uTW9kZUhvcml6b250YWw7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV0tQYWdpbmF0aW9uTW9kZVZlcnRpY2FsOgorICAgICAgICBtb2RlID0g
a1dLUGFnaW5hdGlvbk1vZGVWZXJ0aWNhbDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdLUGFnZVNldFBhZ2luYXRpb25Nb2RlKHNl
bGYucGFnZVJlZiwgbW9kZSk7Cit9CisKKy0gKFdLQnJvd3NpbmdDb250ZXh0UGFnaW5hdGlvbk1v
ZGUpcGFnaW5hdGlvbk1vZGUKK3sKKyAgICBzd2l0Y2ggKFdLUGFnZUdldFBhZ2luYXRpb25Nb2Rl
KHNlbGYucGFnZVJlZikpIHsKKyAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ6
CisgICAgICAgIHJldHVybiBXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ7CisgICAgY2FzZSBr
V0tQYWdpbmF0aW9uTW9kZUhvcml6b250YWw6CisgICAgICAgIHJldHVybiBXS1BhZ2luYXRpb25N
b2RlSG9yaXpvbnRhbDsKKyAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVmVydGljYWw6CisgICAg
ICAgIHJldHVybiBXS1BhZ2luYXRpb25Nb2RlVmVydGljYWw7CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDsK
K30KKworLSAodm9pZClzZXRHYXBCZXR3ZWVuUGFnZXM6KENHRmxvYXQpZ2FwQmV0d2VlblBhZ2Vz
Cit7CisgICAgV0tQYWdlU2V0R2FwQmV0d2VlblBhZ2VzKHNlbGYucGFnZVJlZiwgZ2FwQmV0d2Vl
blBhZ2VzKTsKK30KKworLSAoQ0dGbG9hdClnYXBCZXR3ZWVuUGFnZXMKK3sKKyAgICByZXR1cm4g
V0tQYWdlR2V0R2FwQmV0d2VlblBhZ2VzKHNlbGYucGFnZVJlZik7Cit9CisKKy0gKE5TVUludGVn
ZXIpcGFnZUNvdW50Cit7CisgICAgcmV0dXJuIFdLUGFnZUdldFBhZ2VDb3VudChzZWxmLnBhZ2VS
ZWYpOworfQorCitAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKEludGVybmFsKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
UHJpdmF0ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIuaD4KKworZW51bSB7CisgICAgV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5h
dGVkLAorICAgIFdLUGFnaW5hdGlvbk1vZGVIb3Jpem9udGFsLAorICAgIFdLUGFnaW5hdGlvbk1v
ZGVWZXJ0aWNhbCwKK307Cit0eXBlZGVmIE5TVUludGVnZXIgV0tCcm93c2luZ0NvbnRleHRQYWdp
bmF0aW9uTW9kZTsKKworQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKFBy
aXZhdGUpCisKK0Bwcm9wZXJ0eSBXS0Jyb3dzaW5nQ29udGV4dFBhZ2luYXRpb25Nb2RlIHBhZ2lu
YXRpb25Nb2RlOworQHByb3BlcnR5IENHRmxvYXQgZ2FwQmV0d2VlblBhZ2VzOworCitAcHJvcGVy
dHkocmVhZG9ubHkpIE5TVUludGVnZXIgcGFnZUNvdW50OworCitAZW5kCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMDA0NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw2ICsyODIsNyBAQAogCQkzM0QzQTNDQTEzMzk2
MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0QzQTND
NjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTMzRDNBM0NCMTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNh
Y2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzRDNBM0M3MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hl
TWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJMzNGOUQ1QjkxMzEyRjFFRTAwMEQ2ODNG
IC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNGOUQ1QjgxMzEyRjFFRTAwMEQ2ODNGIC8qIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwICovOyB9OworCQkzNzg4QTA1QzE0NzQzQzkw
MDA2MzE5RTUgLyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc4OEEwNUIxNDc0M0M5MDAw
NjMxOUU1IC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0M0RTlGNjEzMUM2RTdF
MDAyOUJENUEgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi87IH07CiAJ
CTM3RjYyM0I4MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZE
RjYgLyogV0tGaW5kT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNj
ZXB0UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNjM4OTU0RjEzM0JFRjM4MDA4OTQxRDUgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oICov
OyB9OwpAQCAtMTI0Myw2ICsxMjQ0LDcgQEAKIAkJMzNEM0EzQzYxMzM5NjE3OTAwNzA5QkU0IC8q
IFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzRDNBM0M3MTMz
OTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzRjlENUI4MTMxMkYxRUUw
MDBENjgzRiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJDRk5ldC5j
cHA7IHBhdGggPSBSZXNvdXJjZUNhY2hlL2NmL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzg4QTA1QjE0NzQzQzkwMDA2MzE5
RTUgLyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RjYyM0I3MTJBNTdCNjIwMEUzRkRGNiAv
KiBXS0ZpbmRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmlu
ZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMDMxRjYxMzc5Q0FD
QjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gV2ViUHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJD
b250ZXh0TWVudUNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjk1NSw2ICsyOTU3LDcgQEAKIAkJCQlCQ0JBQUM2QzE0NEU2MTkxMDA1M0Y4MkYg
LyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmggKi8sCiAJCQkJQkNCQUFDNkQxNDRFNjE5
MjAwNTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSAqLywKIAkJCQlCQ0JB
QUM2RTE0NEU2MTkyMDA1M0Y4MkYgLyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJu
YWwuaCAqLywKKwkJCQkzNzg4QTA1QjE0NzQzQzkwMDA2MzE5RTUgLyogV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyUHJpdmF0ZS5oICovLAogCQkJCUJDQkFBQ0VFMTQ1MjMyNDMwMDUzRjgyRiAv
KiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmggKi8sCiAJCQkJQkNCQUFDRUYxNDUyMzI0NDAwNTNG
ODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0gKi8sCiAJCQkJQkNCQUFDRjAxNDUyMzI0
ODAwNTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovLApAQCAtMzk2
Miw2ICszOTY1LDcgQEAKIAkJCQlCQzRBNjI5MDE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0QTYyOTIxNDczMTJCRTAwNkM2ODFBIC8qIFdl
YkNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2Mjk3MTQ3MzEzQTAw
MDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25SZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3ODhBMDVD
MTQ3NDNDOTAwMDYzMTlFNSAvKiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShy
ZXZpc2lvbiAxMDA0NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYzLDkgKzU2
MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExhCiAgICAgLy8g
Tk9URTogVW5saWtlIHRoZSBvdGhlciBsYXlvdXQgbm90aWZpY2F0aW9ucywgdGhpcyBkb2VzIG5v
dCBub3RpZnkgdGhlCiAgICAgLy8gdGhlIFVJUHJvY2VzcyBmb3IgZXZlcnkgY2FsbC4KIAotICAg
IC8vIEZJWE1FOiBSZW1vdmUgYXQgdGhlIHNvb25lc3QgcG9zc2libGUgdGltZS4KLSAgICBpZiAo
bV9mcmFtZSA9PSBtX2ZyYW1lLT5wYWdlKCktPm1haW5XZWJGcmFtZSgpKQorICAgIGlmIChtX2Zy
YW1lID09IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkpIHsKKyAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSBhdCB0aGUgc29vbmVzdCBwb3NzaWJsZSB0aW1lLgogICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFJlbmRlclRyZWVTaXplKHdlYlBhZ2Ut
PnJlbmRlclRyZWVTaXplKCkpKTsKKyAgICAgICAgd2ViUGFnZS0+bWFpbkZyYW1lRGlkTGF5b3V0
KCk7CisgICAgfQogfQogCiBGcmFtZSogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3Jl
YXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMTAwNDY1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgICwgbV9pc1J1bm5pbmdNb2RhbChmYWxzZSkKICAg
ICAsIG1fY2FjaGVkTWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlKGZhbHNlKQogICAgICwgbV9j
YWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRlKGZhbHNlKQorICAgICwgbV9jYWNoZWRQ
YWdlQ291bnQoMCkKICAgICAsIG1faXNTaG93aW5nQ29udGV4dE1lbnUoZmFsc2UpCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgICwgbV9nZXN0dXJlUmVhY2hlZFNjcm9sbGluZ0xpbWl0KGZhbHNlKQpA
QCAtMjQwLDYgKzI0MSw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCAKICAgICBzZXREcmF3c0JhY2tncm91bmQocGFyYW1ldGVycy5kcmF3c0JhY2tncm91bmQpOwog
ICAgIHNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHBhcmFtZXRlcnMuZHJhd3NUcmFuc3Bh
cmVudEJhY2tncm91bmQpOwogCisgICAgc2V0UGFnaW5hdGlvbk1vZGUocGFyYW1ldGVycy5wYWdp
bmF0aW9uTW9kZSk7CisgICAgc2V0R2FwQmV0d2VlblBhZ2VzKHBhcmFtZXRlcnMuZ2FwQmV0d2Vl
blBhZ2VzKTsKKwogICAgIHNldE1lbW9yeUNhY2hlTWVzc2FnZXNFbmFibGVkKHBhcmFtZXRlcnMu
YXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQpOwogCiAgICAgc2V0QWN0aXZlKHBhcmFt
ZXRlcnMuaXNBY3RpdmUpOwpAQCAtOTE2LDYgKzkyMCwyMCBAQCB2b2lkIFdlYlBhZ2U6OnNldEZp
eGVkTGF5b3V0U2l6ZShjb25zdCBJCiAgICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKIH0KIAordm9p
ZCBXZWJQYWdlOjpzZXRQYWdpbmF0aW9uTW9kZSh1aW50MzJfdCBtb2RlKQoreworICAgIFBhZ2U6
OlBhZ2luYXRpb24gcGFnaW5hdGlvbiA9IG1fcGFnZS0+cGFnaW5hdGlvbigpOworICAgIHBhZ2lu
YXRpb24ubW9kZSA9IHN0YXRpY19jYXN0PFBhZ2U6OlBhZ2luYXRpb246Ok1vZGU+KG1vZGUpOwor
ICAgIG1fcGFnZS0+c2V0UGFnaW5hdGlvbihwYWdpbmF0aW9uKTsKK30KKwordm9pZCBXZWJQYWdl
OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCkKK3sKKyAgICBQYWdlOjpQYWdpbmF0aW9u
IHBhZ2luYXRpb24gPSBtX3BhZ2UtPnBhZ2luYXRpb24oKTsKKyAgICBwYWdpbmF0aW9uLmdhcCA9
IGdhcDsKKyAgICBtX3BhZ2UtPnNldFBhZ2luYXRpb24ocGFnaW5hdGlvbik7Cit9CisKIHZvaWQg
V2ViUGFnZTo6aW5zdGFsbFBhZ2VPdmVybGF5KFBhc3NSZWZQdHI8UGFnZU92ZXJsYXk+IHBhZ2VP
dmVybGF5KQogewogICAgIGJvb2wgc2hvdWxkRmFkZUluID0gdHJ1ZTsKQEAgLTIxNjgsNiArMjE4
NiwxNSBAQCB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1hCiAgICAgfQog
fQogCit2b2lkIFdlYlBhZ2U6Om1haW5GcmFtZURpZExheW91dCgpCit7CisgICAgdW5zaWduZWQg
cGFnZUNvdW50ID0gbV9wYWdlLT5wYWdlQ291bnQoKTsKKyAgICBpZiAocGFnZUNvdW50ICE9IG1f
Y2FjaGVkUGFnZUNvdW50KSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkQ2hhbmdlUGFnZUNvdW50KHBhZ2VDb3VudCkpOworICAgICAgICBtX2NhY2hlZFBhZ2VDb3Vu
dCA9IHBhZ2VDb3VudDsKKyAgICB9Cit9CisKICNpZiBQTEFURk9STShNQUMpCiAKIHZvaWQgV2Vi
UGFnZTo6YWRkUGx1Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxMDA0NjUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjUsNiArMjY1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlRml4ZWRM
YXlvdXQoYm9vbCk7CiAgICAgdm9pZCBzZXRGaXhlZExheW91dFNpemUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOwogCisgICAgdm9pZCBzZXRQYWdpbmF0aW9uTW9kZSh1aW50MzJfdCAvKiBXZWJD
b3JlOjpQYWdlOjpQYWdpbmF0aW9uOjpNb2RlICovKTsKKyAgICB2b2lkIHNldEdhcEJldHdlZW5Q
YWdlcyhkb3VibGUpOworCiAgICAgYm9vbCBkcmF3c0JhY2tncm91bmQoKSBjb25zdCB7IHJldHVy
biBtX2RyYXdzQmFja2dyb3VuZDsgfQogICAgIGJvb2wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91
bmQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOyB9CiAKQEAg
LTQyMiw2ICs0MjUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNl
dEZvck1haW5GcmFtZSgpOwogCisgICAgdm9pZCBtYWluRnJhbWVEaWRMYXlvdXQoKTsKKwogICAg
IGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgeyByZXR1cm4gbV9j
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7IH0KICAgICB2b2lkIHNldENhblJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkg
eyBtX2NhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCA9IGNhblJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbDsgfQogCkBAIC02OTYsNiArNzAxLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
Y2FjaGVkTWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlOwogICAgIGJvb2wgbV9jYWNoZWRNYWlu
RnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRlOwogCisgICAgdW5zaWduZWQgbV9jYWNoZWRQYWdlQ291
bnQ7CisKICAgICBib29sIG1faXNTaG93aW5nQ29udGV4dE1lbnU7CiAKICNpZiBQTEFURk9STShX
SU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTAwNDY1KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTEyMSw2ICsxMjEsOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRVc2VGaXhlZExh
eW91dChib29sIGZpeGVkKQogICAgIFNldEZpeGVkTGF5b3V0U2l6ZShXZWJDb3JlOjpJbnRTaXpl
IHNpemUpCiAKKyAgICBTZXRQYWdpbmF0aW9uTW9kZSh1aW50MzJfdCBtb2RlKTsKKyAgICBTZXRH
YXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCk7CisKICAgICAjIEZpbmQuCiAgICAgRmluZFN0cmlu
ZyhXVEY6OlN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQogICAgIEhpZGVGaW5kVUkoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMTAwNDk1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTEtMTYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KKworICAgICAgICBXZWJLaXQvbWFjIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzEwMjYy
MjQyPiBBZGQgQVBJIGZvciBwYWdpbmF0ZWQgZGlzcGxheQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVmlldyBfc2V0UGFnaW5hdGlvbk1vZGU6XSk6IEFkZGVkIHRoaXMgYWNjZXNzb3IuCisg
ICAgICAgICgtW1dlYlZpZXcgX3BhZ2luYXRpb25Nb2RlXSk6IERpdHRvLgorICAgICAgICAoLVtX
ZWJWaWV3IF9zZXRHYXBCZXR3ZWVuUGFnZXM6XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJWaWV3
IF9nYXBCZXR3ZWVuUGFnZXNdKTogRGl0dG8uCisgICAgICAgICgtW1dlYlZpZXcgX3BhZ2VDb3Vu
dF0pOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6IERlZmluZWQg
V2ViUGFnaW5hdGlvbk1vZGUgZW51bSBhbmQgdmFsdWVzLgorCiAyMDExLTExLTE1ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zb2xpZGF0ZSB0aGUgbG9naWMg
dGhhdCBjcmVhdGVzIHJ1biBsb29wIG9ic2VydmVycyBmb3IgZmx1c2hpbmcgbGF5ZXIgdHJlZSBj
aGFuZ2VzIHRvIENvcmVBbmltYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHJldmlzaW9uIDEwMDQ2NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcxNyw2ICsyNzE3LDc4IEBAIC0gKE5TU2l6ZSlf
Zml4ZWRMYXlvdXRTaXplCiAgICAgcmV0dXJuIHZpZXctPmZpeGVkTGF5b3V0U2l6ZSgpOwogfQog
CistICh2b2lkKV9zZXRQYWdpbmF0aW9uTW9kZTooV2ViUGFnaW5hdGlvbk1vZGUpcGFnaW5hdGlv
bk1vZGUKK3sKKyAgICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIFBhZ2U6OlBhZ2luYXRpb24gcGFnaW5hdGlvbiA9IHBhZ2Ut
PnBhZ2luYXRpb24oKTsKKyAgICBzd2l0Y2ggKHBhZ2luYXRpb25Nb2RlKSB7CisgICAgY2FzZSBX
ZWJQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOgorICAgICAgICBwYWdpbmF0aW9uLm1vZGUgPSBQ
YWdlOjpQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
ZWJQYWdpbmF0aW9uTW9kZUhvcml6b250YWw6CisgICAgICAgIHBhZ2luYXRpb24ubW9kZSA9IFBh
Z2U6OlBhZ2luYXRpb246Okhvcml6b250YWxseVBhZ2luYXRlZDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXZWJQYWdpbmF0aW9uTW9kZVZlcnRpY2FsOgorICAgICAgICBwYWdpbmF0aW9uLm1v
ZGUgPSBQYWdlOjpQYWdpbmF0aW9uOjpWZXJ0aWNhbGx5UGFnaW5hdGVkOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcGFnZS0+c2V0
UGFnaW5hdGlvbihwYWdpbmF0aW9uKTsKK30KKworLSAoV2ViUGFnaW5hdGlvbk1vZGUpX3BhZ2lu
YXRpb25Nb2RlCit7CisgICAgUGFnZSogcGFnZSA9IGNvcmUoc2VsZik7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm4gV2ViUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZDsKKworICAgIHN3
aXRjaCAocGFnZS0+cGFnaW5hdGlvbigpLm1vZGUpIHsKKyAgICBjYXNlIFBhZ2U6OlBhZ2luYXRp
b246OlVucGFnaW5hdGVkOgorICAgICAgICByZXR1cm4gV2ViUGFnaW5hdGlvbk1vZGVVbnBhZ2lu
YXRlZDsKKyAgICBjYXNlIFBhZ2U6OlBhZ2luYXRpb246Okhvcml6b250YWxseVBhZ2luYXRlZDoK
KyAgICAgICAgcmV0dXJuIFdlYlBhZ2luYXRpb25Nb2RlSG9yaXpvbnRhbDsKKyAgICBjYXNlIFBh
Z2U6OlBhZ2luYXRpb246OlZlcnRpY2FsbHlQYWdpbmF0ZWQ6CisgICAgICAgIHJldHVybiBXZWJQ
YWdpbmF0aW9uTW9kZVZlcnRpY2FsOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBXZWJQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOworfQorCistICh2b2lk
KV9zZXRHYXBCZXR3ZWVuUGFnZXM6KENHRmxvYXQpcGFnZUdhcAoreworICAgIFBhZ2UqIHBhZ2Ug
PSBjb3JlKHNlbGYpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFn
ZTo6UGFnaW5hdGlvbiBwYWdpbmF0aW9uID0gcGFnZS0+cGFnaW5hdGlvbigpOworICAgIHBhZ2lu
YXRpb24uZ2FwID0gcGFnZUdhcDsKKyAgICBwYWdlLT5zZXRQYWdpbmF0aW9uKHBhZ2luYXRpb24p
OworfQorCistIChDR0Zsb2F0KV9nYXBCZXR3ZWVuUGFnZXMKK3sKKyAgICBQYWdlKiBwYWdlID0g
Y29yZShzZWxmKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0
dXJuIHBhZ2UtPnBhZ2luYXRpb24oKS5nYXA7Cit9CisKKy0gKE5TVUludGVnZXIpX3BhZ2VDb3Vu
dAoreworICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYpOworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcGFnZS0+cGFnZUNvdW50KCk7Cit9CisKIC0gKENH
RmxvYXQpX2JhY2tpbmdTY2FsZUZhY3RvcgogewogICAgIHJldHVybiBbc2VsZiBfZGV2aWNlU2Nh
bGVGYWN0b3JdOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAkocmV2aXNpb24gMTAwNDY1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCwxMiBAQCBlbnVtIHsKIH07
CiB0eXBlZGVmIE5TVUludGVnZXIgV2ViRmluZE9wdGlvbnM7CiAKK3R5cGVkZWYgZW51bSB7Cisg
ICAgV2ViUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZCwKKyAgICBXZWJQYWdpbmF0aW9uTW9kZUhv
cml6b250YWwsCisgICAgV2ViUGFnaW5hdGlvbk1vZGVWZXJ0aWNhbCwKK30gV2ViUGFnaW5hdGlv
bk1vZGU7CisKIEBpbnRlcmZhY2UgV2ViQ29udHJvbGxlciA6IE5TVHJlZUNvbnRyb2xsZXIgewog
ICAgIElCT3V0bGV0IFdlYlZpZXcgKndlYlZpZXc7CiB9CkBAIC01NTUsNiArNTYxLDEyIEBAIENv
dWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAoQk9PTClfdXNlRml4ZWRMYXlvdXQ7
CiAtIChOU1NpemUpX2ZpeGVkTGF5b3V0U2l6ZTsKIAorLSAodm9pZClfc2V0UGFnaW5hdGlvbk1v
ZGU6KFdlYlBhZ2luYXRpb25Nb2RlKXBhZ2luYXRpb25Nb2RlOworLSAoV2ViUGFnaW5hdGlvbk1v
ZGUpX3BhZ2luYXRpb25Nb2RlOworLSAodm9pZClfc2V0R2FwQmV0d2VlblBhZ2VzOihDR0Zsb2F0
KXBhZ2VHYXA7CistIChDR0Zsb2F0KV9nYXBCZXR3ZWVuUGFnZXM7CistIChOU1VJbnRlZ2VyKV9w
YWdlQ291bnQ7CisKIC0gKHZvaWQpX3NldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3RvcjooQ0dGbG9h
dClvdmVycmlkZVNjYWxlRmFjdG9yOwogLSAoQ0dGbG9hdClfYmFja2luZ1NjYWxlRmFjdG9yOwog
Cg==
</data>
<flag name="review"
          id="114354"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>