<?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>138963</bug_id>
          
          <creation_ts>2014-11-21 05:40:13 -0800</creation_ts>
          <short_desc>Remove alignment code from IPC coders</short_desc>
          <delta_ts>2022-10-05 22:29:52 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>139081</dependson>
    
    <dependson>139239</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1050439</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-21 05:40:13 -0800</bug_when>
    <thetext>It does nothing except bloat the messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050466</commentid>
    <comment_count>1</comment_count>
      <attachid>242048</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-21 08:40:59 -0800</bug_when>
    <thetext>Created attachment 242048
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050481</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-21 09:41:20 -0800</bug_when>
    <thetext>https://trac.webkit.org/r176452</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052329</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-03 16:08:46 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 139239</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064146</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-26 05:59:05 -0800</bug_when>
    <thetext>If you are going to reland this patch once, please integrate 
the buildfix from bug139081. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098471</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-06-01 04:09:31 -0700</bug_when>
    <thetext>Is there any plan to land it again with the iOS fix and the fix in bug139081?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098472</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-06-01 04:14:22 -0700</bug_when>
    <thetext>I think Anders said he wanted to do something different here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102899</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-06-18 06:26:54 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Is there any plan to land it again with the iOS fix and the fix in bug139081?

(In reply to comment #6)
&gt; I think Anders said he wanted to do something different here.

Anders?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128482</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-09-24 07:06:14 -0700</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162849</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-02-08 02:25:45 -0800</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903572</commentid>
    <comment_count>10</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-05 15:38:18 -0700</bug_when>
    <thetext>This r+ patch landed:

https://github.com/WebKit/WebKit/commit/395664aba4d8e744cf9e206e326259ae171d8bd0

but got backed out:

https://github.com/WebKit/WebKit/commit/92c313f6d581fe6d372217e388c4ee4e9f1cc80d

Is this needed anymore? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903671</commentid>
    <comment_count>11</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-10-05 22:29:52 -0700</bug_when>
    <thetext>I&apos;m not sure at 2014, but in 2022 I think the alignment is used to ensure that the possible in-place references of data are correctly aligned.
E.g. mostly the case where we would refer to Span&lt;float&gt; that exist in the stream IPC buffer or mach message buffer, and we&apos;d prefer not to copy it (say it&apos;s 50mbs of floats for WebGL).

There might be cases where the alignment could be omitted.

There might be call sequences where the invariants are broken so that the above expectation doesn&apos;t actually hold, we don&apos;t have the tests yet for this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242048</attachid>
            <date>2014-11-21 08:40:59 -0800</date>
            <delta_ts>2014-11-21 08:43:58 -0800</delta_ts>
            <desc>patch</desc>
            <filename>argument-coder-align.patch</filename>
            <type>text/plain</type>
            <size>21186</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjQ0NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE0LTExLTIxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxpZ25tZW50IGNv
ZGUgZnJvbSBJUEMgY29kZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzg5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbGlnbm1lbnQgY29kZSBqdXN0IG1ha2VzIHRoZSBtZXNzYWdlcyBzb21ld2hh
dCBiaWdnZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPENTdHJpbmc+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFN0cmluZz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OmRlY29kZVN0cmluZ1Rl
eHQpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAo
SVBDOjpTaW1wbGVBcmd1bWVudENvZGVyOjplbmNvZGUpOgorICAgICAgICAoSVBDOjpTaW1wbGVB
cmd1bWVudENvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudERl
Y29kZXIuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudERlY29kZXI6OmluaXRpYWxpemUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW4pOgorICAgICAgICAoSVBDOjpBcmd1bWVudERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50RGVjb2Rlcjo6ZGVjb2RlVmFyaWFibGVMZW5ndGhC
eXRlQXJyYXkpOgorICAgICAgICAoSVBDOjpBcmd1bWVudERlY29kZXI6OmRlY29kZU51bWJlcik6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
cm91bmRVcFRvQWxpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6YWxpZ25lZEJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4pOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVu
dERlY29kZXI6OmFsaWduQnVmZmVyUG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpk
ZWNvZGVWYWx1ZUZyb21CdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9B
cmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKElQQzo6QXJndW1lbnREZWNvZGVyOjppc0ludmFs
aWQpOgorICAgICAgICAoSVBDOjpBcmd1bWVudERlY29kZXI6Om1hcmtJbnZhbGlkKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnREZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRFbmNvZGVyOjpBcmd1bWVudEVuY29kZXIpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudEVuY29kZXI6Omdyb3cpOgorICAgICAgICAoSVBDOjpBcmd1bWVudEVuY29kZXI6OmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6ZW5jb2Rl
VmFyaWFibGVMZW5ndGhCeXRlQXJyYXkpOgorICAgICAgICAoSVBDOjpBcmd1bWVudEVuY29kZXI6
OmVuY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudEVuY29kZXI6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50RW5jb2Rlcjo6bXV0YWJsZUJ1ZmZlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RhdGFS
ZWZlcmVuY2UuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpl
bmNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHA6CisgICAg
ICAgIChJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpzZXRJc1N5bmNNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6TWVzc2FnZUVuY29kZXI6OnNldFNob3VsZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9y
U3luY1JlcGx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW06
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorCiAyMDE0
LTExLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQg
Zml4LgpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuY3BwCShyZXZpc2lvbiAxNzY0NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKEFyZ3UKIAogICAgIHVpbnQzMl90IGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICBlbmNvZGVyIDw8IGxlbmd0aDsKLSAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
dHJpbmcuZGF0YSgpKSwgbGVuZ3RoLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuZGF0YSgpKSwgbGVu
Z3RoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENTdHJpbmc+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBDU3RyaW5nJiByZXN1bHQpCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKEFyZ3UKIAogICAgIGNoYXIqIGJ1ZmZlcjsK
ICAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQobGVuZ3RoLCBi
dWZmZXIpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSwgbGVuZ3RoLCAxKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciks
IGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdCA9IHN0cmluZzsK
QEAgLTEwMiw5ICsxMDIsOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEFy
Z3VtCiAgICAgZW5jb2RlciA8PCBsZW5ndGggPDwgaXM4Qml0OwogCiAgICAgaWYgKGlzOEJpdCkK
LSAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBsZW5ndGggKiBzaXplb2YoTENo
YXIpLCBhbGlnbm9mKExDaGFyKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgp
KSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CiAgICAgZWxzZQotICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJp
bmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFy
KSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTEx
OCw3ICsxMTgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZGVjb2RlU3RyaW5nVGV4dChBcmd1CiAg
ICAgCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwogICAgIFN0cmluZyBzdHJpbmcgPSBTdHJp
bmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVy
KSwgbGVuZ3RoICogc2l6ZW9mKENoYXJhY3RlclR5cGUpLCBhbGlnbm9mKENoYXJhY3RlclR5cGUp
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXN1bHQgPSBzdHJpbmc7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24g
MTc2NDQ1KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMiBAQCBuYW1lc3BhY2UgSVBDIHsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUJiB0KQogICAgIHsK
LSAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oJnQpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgICAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PigmdCksIHNpemVvZihUKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgVCYgdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGVy
LmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdCksIHNp
emVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZUZpeGVk
TGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdCksIHNpemVvZihUKSk7CiAg
ICAgfQogfTsKIApAQCAtMTc4LDcgKzE3OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHVuc2ln
bmVkIGlubGluZUNhcGEKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewog
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsK
LSAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4odmVjdG9yLmRhdGEoKSksIHZlY3Rvci5zaXplKCkgKiBzaXplb2YoVCks
IGFsaWdub2YoVCkpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2ZWN0b3IuZGF0YSgpKSwgdmVjdG9yLnNpemUo
KSAqIHNpemVvZihUKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikK
QEAgLTE5OCw3ICsxOTgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB1bnNpZ25lZCBpbmxpbmVD
YXBhCiAgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4gdGVtcDsKICAgICAgICAgdGVt
cC5yZXNpemUoc2l6ZSk7CiAKLSAgICAgICAgZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEo
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkpLCBzaXplICogc2l6ZW9mKFQp
LCBhbGlnbm9mKFQpKTsKKyAgICAgICAgZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkpLCBzaXplICogc2l6ZW9mKFQpKTsK
IAogICAgICAgICB2ZWN0b3Iuc3dhcCh0ZW1wKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmNwcAko
cmV2aXNpb24gMTc2NDQ1KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDU2ICs1NiwyOSBAQCBBcmd1bWVudERl
Y29kZXI6On5Bcmd1bWVudERlY29kZXIoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgdWlu
dDhfdCogcm91bmRVcFRvQWxpZ25tZW50KHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50
KQotewotICAgIC8vIEFzc2VydCB0aGF0IHRoZSBhbGlnbm1lbnQgaXMgYSBwb3dlciBvZiAyLgot
ICAgIEFTU0VSVChhbGlnbm1lbnQgJiYgIShhbGlnbm1lbnQgJiAoYWxpZ25tZW50IC0gMSkpKTsK
LQotICAgIHVpbnRwdHJfdCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihwdHIpICsgYWxpZ25tZW50TWFzaykgJiB+YWxpZ25tZW50TWFzayk7Ci19Ci0KIHZvaWQgQXJn
dW1lbnREZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpCiB7CiAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFsbG9j
KGJ1ZmZlclNpemUpKTsKIAogICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihtX2J1ZmZlcikgJSBhbGlnbm9mKHVpbnQ2NF90KSkpOwogCi0gICAgbV9idWZmZXJQb3MgPSBt
X2J1ZmZlcjsKKyAgICBtX2J1ZmZlclBvc2l0aW9uID0gbV9idWZmZXI7CiAgICAgbV9idWZmZXJF
bmQgPSBtX2J1ZmZlciArIGJ1ZmZlclNpemU7CiAgICAgbWVtY3B5KG1fYnVmZmVyLCBidWZmZXIs
IGJ1ZmZlclNpemUpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgYWxpZ25lZEJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0aW9uLCBjb25zdCB1
aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQotewotICAgIHJldHVybiBidWZmZXJFbmQg
Pj0gYWxpZ25lZFBvc2l0aW9uICYmIHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyRW5kIC0gYWxp
Z25lZFBvc2l0aW9uKSA+PSBzaXplOwotfQotCi1ib29sIEFyZ3VtZW50RGVjb2Rlcjo6YWxpZ25C
dWZmZXJQb3NpdGlvbih1bnNpZ25lZCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQotewotICAgIHVp
bnQ4X3QqIGFsaWduZWRQb3NpdGlvbiA9IHJvdW5kVXBUb0FsaWdubWVudChtX2J1ZmZlclBvcywg
YWxpZ25tZW50KTsKLSAgICBpZiAoIWFsaWduZWRCdWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
KGFsaWduZWRQb3NpdGlvbiwgbV9idWZmZXJFbmQsIHNpemUpKSB7Ci0gICAgICAgIC8vIFdlJ3Zl
IHdhbGtlZCBvZmYgdGhlIGVuZCBvZiB0aGlzIGJ1ZmZlci4KLSAgICAgICAgbWFya0ludmFsaWQo
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBtX2J1ZmZlclBvcyA9
IGFsaWduZWRQb3NpdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBBcmd1bWVudERl
Y29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4odW5zaWduZWQgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSkgY29uc3QKK2Jvb2wgQXJndW1lbnREZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluKHNpemVfdCBzaXplKSBjb25zdAogewotICAgIHJldHVybiBhbGlnbmVkQnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihyb3VuZFVwVG9BbGlnbm1lbnQobV9idWZmZXJQb3Ms
IGFsaWdubWVudCksIG1fYnVmZmVyRW5kLCBzaXplKTsKKyAgICByZXR1cm4gbV9idWZmZXIgKyBz
aXplIDw9IG1fYnVmZmVyRW5kOwogfQogCi1ib29sIEFyZ3VtZW50RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBhbGlnbm1l
bnQpCitib29sIEFyZ3VtZW50RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbihhbGln
bm1lbnQsIHNpemUpKQorICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXpl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVyUG9z
LCBzaXplKTsKLSAgICBtX2J1ZmZlclBvcyArPSBzaXplOworICAgIG1lbWNweShkYXRhLCBtX2J1
ZmZlclBvc2l0aW9uLCBzaXplKTsKKyAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTExNiwxMDIgKzg5LDcxIEBAIGJvb2wgQXJndW1lbnREZWNv
ZGVyOjpkZWNvZGVWYXJpYWJsZUxlbmcKICAgICBpZiAoIWRlY29kZShzaXplKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbigxLCBzaXpl
KSkKKyAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHVpbnQ4X3QqIGRhdGEgPSBtX2J1ZmZlclBvczsKLSAgICBt
X2J1ZmZlclBvcyArPSBzaXplOworICAgIHVpbnQ4X3QqIGRhdGEgPSBtX2J1ZmZlclBvc2l0aW9u
OworICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKIAogICAgIGRhdGFSZWZlcmVuY2UgPSBE
YXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUeXBlPgotc3RhdGljIHZvaWQgZGVjb2RlVmFsdWVGcm9tQnVmZmVyKFR5cGUm
IHZhbHVlLCB1aW50OF90KiYgYnVmZmVyUG9zaXRpb24pCitib29sIEFyZ3VtZW50RGVjb2Rlcjo6
ZGVjb2RlTnVtYmVyKFR5cGUmIHZhbHVlKQogewotICAgIG1lbWNweSgmdmFsdWUsIGJ1ZmZlclBv
c2l0aW9uLCBzaXplb2YodmFsdWUpKTsKLSAgICBidWZmZXJQb3NpdGlvbiArPSBzaXplb2YoVHlw
ZSk7CisgICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVvZihUeXBlKSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1lbWNweSgmdmFsdWUsIG1fYnVmZmVyUG9z
aXRpb24sIHNpemVvZihUeXBlKSk7CisgICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXplb2YoVHlw
ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBBcmd1bWVudERlY29kZXI6OmRlY29k
ZShib29sJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKHNpemVvZihy
ZXN1bHQpLCBzaXplb2YocmVzdWx0KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAg
ICBkZWNvZGVWYWx1ZUZyb21CdWZmZXIocmVzdWx0LCBtX2J1ZmZlclBvcyk7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwogfQogCiBib29sIEFyZ3Vt
ZW50RGVjb2Rlcjo6ZGVjb2RlKHVpbnQ4X3QmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWFsaWduQnVm
ZmVyUG9zaXRpb24oc2l6ZW9mKHJlc3VsdCksIHNpemVvZihyZXN1bHQpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgZGVjb2RlVmFsdWVGcm9tQnVmZmVyKHJlc3VsdCwgbV9idWZmZXJQ
b3MpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsK
IH0KIAogYm9vbCBBcmd1bWVudERlY29kZXI6OmRlY29kZSh1aW50MTZfdCYgcmVzdWx0KQogewot
ICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbihzaXplb2YocmVzdWx0KSwgc2l6ZW9mKHJlc3Vs
dCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkZWNvZGVWYWx1ZUZyb21CdWZmZXIo
cmVzdWx0LCBtX2J1ZmZlclBvcyk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwogfQogCiBib29sIEFyZ3VtZW50RGVjb2Rlcjo6ZGVjb2RlKHVpbnQz
Ml90JiByZXN1bHQpCiB7Ci0gICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKHNpemVvZihyZXN1
bHQpLCBzaXplb2YocmVzdWx0KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRlY29k
ZVZhbHVlRnJvbUJ1ZmZlcihyZXN1bHQsIG1fYnVmZmVyUG9zKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKIGJvb2wgQXJndW1lbnREZWNv
ZGVyOjpkZWNvZGUodWludDY0X3QmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9z
aXRpb24oc2l6ZW9mKHJlc3VsdCksIHNpemVvZihyZXN1bHQpKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIGRlY29kZVZhbHVlRnJvbUJ1ZmZlcihyZXN1bHQsIG1fYnVmZmVyUG9z
KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9
CiAKIGJvb2wgQXJndW1lbnREZWNvZGVyOjpkZWNvZGUoaW50MzJfdCYgcmVzdWx0KQogewotICAg
IGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbihzaXplb2YocmVzdWx0KSwgc2l6ZW9mKHJlc3VsdCkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgZGVjb2RlVmFsdWVGcm9tQnVmZmVy
KHJlc3VsdCwgbV9idWZmZXJQb3MpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNv
ZGVOdW1iZXIocmVzdWx0KTsKIH0KIAogYm9vbCBBcmd1bWVudERlY29kZXI6OmRlY29kZShpbnQ2
NF90JiByZXN1bHQpCiB7Ci0gICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKHNpemVvZihyZXN1
bHQpLCBzaXplb2YocmVzdWx0KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGRlY29k
ZVZhbHVlRnJvbUJ1ZmZlcihyZXN1bHQsIG1fYnVmZmVyUG9zKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CiB9CiAKIGJvb2wgQXJndW1lbnREZWNv
ZGVyOjpkZWNvZGUoZmxvYXQmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRp
b24oc2l6ZW9mKHJlc3VsdCksIHNpemVvZihyZXN1bHQpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgZGVjb2RlVmFsdWVGcm9tQnVmZmVyKHJlc3VsdCwgbV9idWZmZXJQb3MpOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKIH0KIAogYm9v
bCBBcmd1bWVudERlY29kZXI6OmRlY29kZShkb3VibGUmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWFs
aWduQnVmZmVyUG9zaXRpb24oc2l6ZW9mKHJlc3VsdCksIHNpemVvZihyZXN1bHQpKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGRlY29kZVZhbHVlRnJvbUJ1ZmZlcihyZXN1bHQs
IG1fYnVmZmVyUG9zKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlTnVtYmVy
KHJlc3VsdCk7CiB9CiAKIGJvb2wgQXJndW1lbnREZWNvZGVyOjpyZW1vdmVBdHRhY2htZW50KEF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
QXJndW1lbnREZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50RGVjb2Rlci5oCShyZXZpc2lvbiAxNzY0NDUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEw
ICs0MiwxMCBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXJFbmQgLSBtX2J1ZmZlcjsgfQogCi0gICAgYm9vbCBpc0ludmFsaWQoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlclBvcyA+IG1fYnVmZmVyRW5kOyB9Ci0gICAgdm9pZCBtYXJrSW52YWxp
ZCgpIHsgbV9idWZmZXJQb3MgPSBtX2J1ZmZlckVuZCArIDE7IH0KKyAgICBib29sIGlzSW52YWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyUG9zaXRpb24gPiBtX2J1ZmZlckVuZDsgfQorICAg
IHZvaWQgbWFya0ludmFsaWQoKSB7IG1fYnVmZmVyUG9zaXRpb24gPSBtX2J1ZmZlckVuZCArIDE7
IH0KIAotICAgIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBzaXplX3QsIHVu
c2lnbmVkIGFsaWdubWVudCk7CisgICAgYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCosIHNpemVfdCk7CiAKICAgICAvLyBUaGUgZGF0YSBpbiB0aGUgZGF0YSByZWZlcmVuY2UgaGVy
ZSB3aWxsIG9ubHkgYmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNv
ZGVyIG9iamVjdC4KICAgICBib29sIGRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KERhdGFS
ZWZlcmVuY2UmKTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobnVtRWxl
bWVudHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluKGFsaWdub2YoVCksIG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKKyAg
ICAgICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4obnVtRWxlbWVudHMgKiBz
aXplb2YoVCkpOwogICAgIH0KIAogICAgIC8vIEdlbmVyaWMgdHlwZSBkZWNvZGUgZnVuY3Rpb24u
CkBAIC05NiwxMiArOTYsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBpbml0aWFsaXplKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpOwogCi0gICAgYm9vbCBhbGln
bkJ1ZmZlclBvc2l0aW9uKHVuc2lnbmVkIGFsaWdubWVudCwgc2l6ZV90IHNpemUpOwotICAgIGJv
b2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbih1bnNpZ25lZCBhbGlnbm1lbnQsIHNpemVf
dCBzaXplKSBjb25zdDsKKyAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6
ZV90KSBjb25zdDsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gYm9vbCBkZWNvZGVOdW1i
ZXIoVHlwZSYgdmFsdWUpOwogCiBwcml2YXRlOgogICAgIHVpbnQ4X3QqIG1fYnVmZmVyOwotICAg
IHVpbnQ4X3QqIG1fYnVmZmVyUG9zOworICAgIHVpbnQ4X3QqIG1fYnVmZmVyUG9zaXRpb247CiAg
ICAgdWludDhfdCogbV9idWZmZXJFbmQ7CiAKICAgICBWZWN0b3I8QXR0YWNobWVudD4gbV9hdHRh
Y2htZW50czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29k
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dEVuY29kZXIuY3BwCShyZXZpc2lvbiAxNzY0NDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZUJ1ZmZlcih2b2lkKiBhZGRyCiAKIEFyZ3VtZW50RW5j
b2Rlcjo6QXJndW1lbnRFbmNvZGVyKCkKICAgICA6IG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQot
ICAgICwgbV9idWZmZXJQb2ludGVyKG1faW5saW5lQnVmZmVyKQogICAgICwgbV9idWZmZXJTaXpl
KDApCiAgICAgLCBtX2J1ZmZlckNhcGFjaXR5KHNpemVvZihtX2lubGluZUJ1ZmZlcikpCiB7CkBA
IC0xMDMsMjkgKzEwMiwyNiBAQCB2b2lkIEFyZ3VtZW50RW5jb2Rlcjo6cmVzZXJ2ZShzaXplX3Qg
c2l6CiAgICAgbV9idWZmZXJDYXBhY2l0eSA9IG5ld0NhcGFjaXR5OwogfQogCi11aW50OF90KiBB
cmd1bWVudEVuY29kZXI6Omdyb3codW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKK3Vp
bnQ4X3QqIEFyZ3VtZW50RW5jb2Rlcjo6Z3JvdyhzaXplX3Qgc2l6ZSkKIHsKLSAgICBzaXplX3Qg
YWxpZ25lZFNpemUgPSByb3VuZFVwVG9BbGlnbm1lbnQobV9idWZmZXJTaXplLCBhbGlnbm1lbnQp
OwotICAgIHJlc2VydmUoYWxpZ25lZFNpemUgKyBzaXplKTsKKyAgICBzaXplX3QgY3VycmV0UG9z
aXRpb24gPSBtX2J1ZmZlclNpemU7CisgICAgcmVzZXJ2ZShtX2J1ZmZlclNpemUgKyBzaXplKTsK
IAotICAgIG1fYnVmZmVyU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6ZTsKLSAgICBtX2J1ZmZlclBv
aW50ZXIgPSBtX2J1ZmZlciArIGFsaWduZWRTaXplICsgc2l6ZTsKLSAgICAKLSAgICByZXR1cm4g
bV9idWZmZXIgKyBhbGlnbmVkU2l6ZTsKKyAgICBtX2J1ZmZlclNpemUgKz0gc2l6ZTsKKworICAg
IHJldHVybiBtX2J1ZmZlciArIGN1cnJldFBvc2l0aW9uOwogfQogCi12b2lkIEFyZ3VtZW50RW5j
b2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplLCB1bnNpZ25lZCBhbGlnbm1lbnQpCit2b2lkIEFyZ3VtZW50RW5jb2Rlcjo6ZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIEFT
U0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihkYXRhKSAlIGFsaWdubWVudCkpOwot
Ci0gICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhhbGlnbm1lbnQsIHNpemUpOworICAgIHVpbnQ4
X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7
CiB9CiAKIHZvaWQgQXJndW1lbnRFbmNvZGVyOjplbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJh
eShjb25zdCBEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQogewogICAgIGVuY29kZShzdGF0
aWNfY2FzdDx1aW50NjRfdD4oZGF0YVJlZmVyZW5jZS5zaXplKCkpKTsKLSAgICBlbmNvZGVGaXhl
ZExlbmd0aERhdGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpLCAx
KTsKKyAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KQEAgLTEzNiw1
NSArMTMyLDU1IEBAIHN0YXRpYyB2b2lkIGNvcHlWYWx1ZVRvQnVmZmVyKFR5cGUgdmFsdWUKIAog
dm9pZCBBcmd1bWVudEVuY29kZXI6OmVuY29kZShib29sIG4pCiB7Ci0gICAgdWludDhfdCogYnVm
ZmVyID0gZ3JvdyhzaXplb2YobiksIHNpemVvZihuKSk7CisgICAgdWludDhfdCogYnVmZmVyID0g
Z3JvdyhzaXplb2YobikpOwogICAgIGNvcHlWYWx1ZVRvQnVmZmVyKG4sIGJ1ZmZlcik7CiB9CiAK
IHZvaWQgQXJndW1lbnRFbmNvZGVyOjplbmNvZGUodWludDhfdCBuKQogewotICAgIHVpbnQ4X3Qq
IGJ1ZmZlciA9IGdyb3coc2l6ZW9mKG4pLCBzaXplb2YobikpOworICAgIHVpbnQ4X3QqIGJ1ZmZl
ciA9IGdyb3coc2l6ZW9mKG4pKTsKICAgICBjb3B5VmFsdWVUb0J1ZmZlcihuLCBidWZmZXIpOwog
fQogCiB2b2lkIEFyZ3VtZW50RW5jb2Rlcjo6ZW5jb2RlKHVpbnQxNl90IG4pCiB7Ci0gICAgdWlu
dDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YobiksIHNpemVvZihuKSk7CisgICAgdWludDhfdCog
YnVmZmVyID0gZ3JvdyhzaXplb2YobikpOwogICAgIGNvcHlWYWx1ZVRvQnVmZmVyKG4sIGJ1ZmZl
cik7CiB9CiAKIHZvaWQgQXJndW1lbnRFbmNvZGVyOjplbmNvZGUodWludDMyX3QgbikKIHsKLSAg
ICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihuKSwgc2l6ZW9mKG4pKTsKKyAgICB1aW50
OF90KiBidWZmZXIgPSBncm93KHNpemVvZihuKSk7CiAgICAgY29weVZhbHVlVG9CdWZmZXIobiwg
YnVmZmVyKTsKIH0KIAogdm9pZCBBcmd1bWVudEVuY29kZXI6OmVuY29kZSh1aW50NjRfdCBuKQog
ewotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZW9mKG4pLCBzaXplb2YobikpOworICAg
IHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZW9mKG4pKTsKICAgICBjb3B5VmFsdWVUb0J1ZmZl
cihuLCBidWZmZXIpOwogfQogCiB2b2lkIEFyZ3VtZW50RW5jb2Rlcjo6ZW5jb2RlKGludDMyX3Qg
bikKIHsKLSAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihuKSwgc2l6ZW9mKG4pKTsK
KyAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihuKSk7CiAgICAgY29weVZhbHVlVG9C
dWZmZXIobiwgYnVmZmVyKTsKIH0KIAogdm9pZCBBcmd1bWVudEVuY29kZXI6OmVuY29kZShpbnQ2
NF90IG4pCiB7Ci0gICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YobiksIHNpemVvZihu
KSk7CisgICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YobikpOwogICAgIGNvcHlWYWx1
ZVRvQnVmZmVyKG4sIGJ1ZmZlcik7CiB9CiAKIHZvaWQgQXJndW1lbnRFbmNvZGVyOjplbmNvZGUo
ZmxvYXQgbikKIHsKLSAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihuKSwgc2l6ZW9m
KG4pKTsKKyAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihuKSk7CiAgICAgY29weVZh
bHVlVG9CdWZmZXIobiwgYnVmZmVyKTsKIH0KIAogdm9pZCBBcmd1bWVudEVuY29kZXI6OmVuY29k
ZShkb3VibGUgbikKIHsKLSAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihuKSwgc2l6
ZW9mKG4pKTsKKyAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihuKSk7CiAgICAgY29w
eVZhbHVlVG9CdWZmZXIobiwgYnVmZmVyKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuaAkocmV2aXNpb24gMTc2NDQ1KQorKysgU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBBcmd1bWVudEVuY29kZXIoKTsKICAgICB2
aXJ0dWFsIH5Bcmd1bWVudEVuY29kZXIoKTsKIAotICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIHVuc2lnbmVkIGFsaWdubWVudCk7CisgICAgdm9p
ZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgdm9p
ZCBlbmNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShjb25zdCBEYXRhUmVmZXJlbmNlJik7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGVuY29kZUVudW0oVCB0KQpAQCAtNjIsMTMg
KzYyLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHVp
bnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgdWlu
dDhfdCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyU2l6ZTsgfQogCiAgICAgdm9pZCBhZGRB
dHRhY2htZW50KGNvbnN0IEF0dGFjaG1lbnQmKTsKICAgICBWZWN0b3I8QXR0YWNobWVudD4gcmVs
ZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgdm9pZCByZXNlcnZlKHNpemVfdCk7CiAKK3Byb3RlY3Rl
ZDoKKyAgICB1aW50OF90KiBtdXRhYmxlQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKwog
cHJpdmF0ZToKICAgICB2b2lkIGVuY29kZShib29sKTsKICAgICB2b2lkIGVuY29kZSh1aW50OF90
KTsKQEAgLTgwLDEzICs4MywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5jb2RlKGZsb2F0KTsK
ICAgICB2b2lkIGVuY29kZShkb3VibGUpOwogCi0gICAgdWludDhfdCogZ3Jvdyh1bnNpZ25lZCBh
bGlnbm1lbnQsIHNpemVfdCBzaXplKTsKKyAgICB1aW50OF90KiBncm93KHNpemVfdCk7CiAKICAg
ICB1aW50OF90IG1faW5saW5lQnVmZmVyWzUxMl07Ci0KICAgICB1aW50OF90KiBtX2J1ZmZlcjsK
LSAgICB1aW50OF90KiBtX2J1ZmZlclBvaW50ZXI7Ci0gICAgCisKICAgICBzaXplX3QgbV9idWZm
ZXJTaXplOwogICAgIHNpemVfdCBtX2J1ZmZlckNhcGFjaXR5OwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3BwCShyZXZpc2lvbiAxNzY0NDUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
OjplbmNvZGUoQQogICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKICAgICB3aGlsZSAocG9zaXRp
b24gPCBidWZmZXJTaXplKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVzVG9Xcml0ZSA9IG1fYnVm
ZmVyLT5nZXRTb21lRGF0YShwYXJ0aWFsRGF0YSwgcG9zaXRpb24pOwotICAgICAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihw
YXJ0aWFsRGF0YSksIGJ5dGVzVG9Xcml0ZSwgMSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBhcnRpYWxEYXRh
KSwgYnl0ZXNUb1dyaXRlKTsKICAgICAgICAgcG9zaXRpb24gKz0gYnl0ZXNUb1dyaXRlOwogICAg
IH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VFbmNv
ZGVyLmNwcAkocmV2aXNpb24gMTc2NDQ1KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L01lc3NhZ2VFbmNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTcgKzUxLDE3IEBAIE1l
c3NhZ2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIoKQogdm9pZCBNZXNzYWdlRW5jb2Rlcjo6c2V0
SXNTeW5jTWVzc2FnZShib29sIGlzU3luY01lc3NhZ2UpCiB7CiAgICAgaWYgKGlzU3luY01lc3Nh
Z2UpCi0gICAgICAgICpidWZmZXIoKSB8PSBTeW5jTWVzc2FnZTsKKyAgICAgICAgKm11dGFibGVC
dWZmZXIoKSB8PSBTeW5jTWVzc2FnZTsKICAgICBlbHNlCi0gICAgICAgICpidWZmZXIoKSAmPSB+
U3luY01lc3NhZ2U7CisgICAgICAgICptdXRhYmxlQnVmZmVyKCkgJj0gflN5bmNNZXNzYWdlOwog
fQogCiB2b2lkIE1lc3NhZ2VFbmNvZGVyOjpzZXRTaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseShib29sIHNob3VsZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9y
U3luY1JlcGx5KQogewogICAgIGlmIChzaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0Zv
clN5bmNSZXBseSkKLSAgICAgICAgKmJ1ZmZlcigpIHw9IERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5OworICAgICAgICAqbXV0YWJsZUJ1ZmZlcigpIHw9IERpc3BhdGNoTWVz
c2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OwogICAgIGVsc2UKLSAgICAgICAgKmJ1ZmZlcigp
ICY9IH5EaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTsKKyAgICAgICAgKm11
dGFibGVCdWZmZXIoKSAmPSB+RGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL21hYy9Db25uZWN0aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQkocmV2aXNpb24gMTc2NDQ1KQorKysgU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjcsNyArMzI3LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNz
YWdlKHN0ZAogICAgICAgICBpZiAobWVzc2FnZUJvZHlJc09PTCkgewogICAgICAgICAgICAgbWFj
aF9tc2dfZGVzY3JpcHRvcl90KiBkZXNjcmlwdG9yID0gcmVpbnRlcnByZXRfY2FzdDxtYWNoX21z
Z19kZXNjcmlwdG9yX3QqPihkZXNjcmlwdG9yRGF0YSk7CiAKLSAgICAgICAgICAgIGRlc2NyaXB0
b3ItPm91dF9vZl9saW5lLmFkZHJlc3MgPSBlbmNvZGVyLT5idWZmZXIoKTsKKyAgICAgICAgICAg
IGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MgPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihl
bmNvZGVyLT5idWZmZXIoKSk7CiAgICAgICAgICAgICBkZXNjcmlwdG9yLT5vdXRfb2ZfbGluZS5z
aXplID0gZW5jb2Rlci0+YnVmZmVyU2l6ZSgpOwogICAgICAgICAgICAgZGVzY3JpcHRvci0+b3V0
X29mX2xpbmUuY29weSA9IE1BQ0hfTVNHX1ZJUlRVQUxfQ09QWTsKICAgICAgICAgICAgIGRlc2Ny
aXB0b3ItPm91dF9vZl9saW5lLmRlYWxsb2NhdGUgPSBmYWxzZTsK
</data>
<flag name="review"
          id="266923"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>