140a021e6:	48 8b c2             	mov    %rdx,%rax
140a021e9:	48 c1 e8 3f          	shr    $0x3f,%rax
140a021ed:	48 03 d0             	add    %rax,%rdx
140a021f0:	48 83 fa 01          	cmp    $0x1,%rdx
140a021f4:	76 7a                	jbe    0x140a02270
140a021f6:	49 8d 48 18          	lea    0x18(%r8),%rcx
140a021fa:	e8 f5 b3 ff ff       	call   0x1409fd5f4
140a021ff:	83 f8 02             	cmp    $0x2,%eax
140a02202:	75 5f                	jne    0x140a02263
140a02204:	48 8b 0b             	mov    (%rbx),%rcx
140a02207:	48 8b 43 08          	mov    0x8(%rbx),%rax
140a0220b:	48 2b c1             	sub    %rcx,%rax
140a0220e:	48 c1 f8 03          	sar    $0x3,%rax
140a02212:	48 0f af c7          	imul   %rdi,%rax
140a02216:	48 85 c0             	test   %rax,%rax
140a02219:	74 41                	je     0x140a0225c
140a0221b:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a0221f:	48 8b 08             	mov    (%rax),%rcx
140a02222:	48 39 48 08          	cmp    %rcx,0x8(%rax)
140a02226:	74 48                	je     0x140a02270
140a02228:	e8 c7 b3 ff ff       	call   0x1409fd5f4
140a0222d:	48 8b 13             	mov    (%rbx),%rdx
140a02230:	48 8b 4b 08          	mov    0x8(%rbx),%rcx
140a02234:	48 2b ca             	sub    %rdx,%rcx
140a02237:	48 c1 f9 03          	sar    $0x3,%rcx
140a0223b:	48 0f af cf          	imul   %rdi,%rcx
140a0223f:	48 83 f9 01          	cmp    $0x1,%rcx
140a02243:	76 17                	jbe    0x140a0225c
140a02245:	83 7a 18 17          	cmpl   $0x17,0x18(%rdx)
140a02249:	75 18                	jne    0x140a02263
140a0224b:	48 8b 4a 20          	mov    0x20(%rdx),%rcx
140a0224f:	48 8b 11             	mov    (%rcx),%rdx
140a02252:	48 39 51 08          	cmp    %rdx,0x8(%rcx)
140a02256:	75 0b                	jne    0x140a02263
140a02258:	b0 01                	mov    $0x1,%al
140a0225a:	eb 09                	jmp    0x140a02265
140a0225c:	ff 15 36 a7 10 00    	call   *0x10a736(%rip)        # 0x140b0c998
140a02262:	cc                   	int3
140a02263:	32 c0                	xor    %al,%al
140a02265:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
140a0226a:	48 83 c4 20          	add    $0x20,%rsp
140a0226e:	5f                   	pop    %rdi
140a0226f:	c3                   	ret
140a02270:	e8 b3 2f 68 ff       	call   0x140085228
140a02275:	cc                   	int3
140a02276:	90                   	nop
140a02277:	90                   	nop
140a02278:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
140a0227d:	57                   	push   %rdi
140a0227e:	48 83 ec 20          	sub    $0x20,%rsp
140a02282:	48 8b 19             	mov    (%rcx),%rbx
140a02285:	48 bf ab aa aa aa aa 	movabs $0xaaaaaaaaaaaaaaab,%rdi
140a0228c:	aa aa aa
140a0228f:	48 8b 0b             	mov    (%rbx),%rcx
140a02292:	48 8b 43 08          	mov    0x8(%rbx),%rax
140a02296:	48 2b c1             	sub    %rcx,%rax
140a02299:	48 c1 f8 03          	sar    $0x3,%rax
140a0229d:	48 0f af c7          	imul   %rdi,%rax
140a022a1:	48 83 f8 04          	cmp    $0x4,%rax
140a022a5:	0f 85 e9 00 00 00    	jne    0x140a02394
140a022ab:	48 85 c0             	test   %rax,%rax
140a022ae:	0f 84 d9 00 00 00    	je     0x140a0238d
140a022b4:	83 39 15             	cmpl   $0x15,(%rcx)
140a022b7:	0f 85 d7 00 00 00    	jne    0x140a02394
140a022bd:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a022c1:	48 8b 50 08          	mov    0x8(%rax),%rdx
140a022c5:	48 2b 10             	sub    (%rax),%rdx
140a022c8:	48 83 fa 30          	cmp    $0x30,%rdx
140a022cc:	0f 85 c2 00 00 00    	jne    0x140a02394
140a022d2:	48 8b 08             	mov    (%rax),%rcx
140a022d5:	e8 1a b3 ff ff       	call   0x1409fd5f4
140a022da:	83 f8 01             	cmp    $0x1,%eax
140a022dd:	0f 85 b1 00 00 00    	jne    0x140a02394
140a022e3:	48 8b 0b             	mov    (%rbx),%rcx
140a022e6:	48 8b 43 08          	mov    0x8(%rbx),%rax
140a022ea:	48 2b c1             	sub    %rcx,%rax
140a022ed:	48 c1 f8 03          	sar    $0x3,%rax
140a022f1:	48 0f af c7          	imul   %rdi,%rax
140a022f5:	48 85 c0             	test   %rax,%rax
140a022f8:	0f 84 8f 00 00 00    	je     0x140a0238d
140a022fe:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a02302:	48 8b 10             	mov    (%rax),%rdx
140a02305:	48 8b 48 08          	mov    0x8(%rax),%rcx
140a02309:	48 2b ca             	sub    %rdx,%rcx
140a0230c:	48 c1 f9 03          	sar    $0x3,%rcx
140a02310:	48 0f af cf          	imul   %rdi,%rcx
140a02314:	48 83 f9 01          	cmp    $0x1,%rcx
140a02318:	0f 86 83 00 00 00    	jbe    0x140a023a1
140a0231e:	48 8d 4a 18          	lea    0x18(%rdx),%rcx
140a02322:	e8 cd b2 ff ff       	call   0x1409fd5f4
140a02327:	83 f8 03             	cmp    $0x3,%eax
140a0232a:	75 68                	jne    0x140a02394
140a0232c:	48 8b 13             	mov    (%rbx),%rdx
140a0232f:	4c 8b 43 08          	mov    0x8(%rbx),%r8
140a02333:	4c 2b c2             	sub    %rdx,%r8
140a02336:	49 c1 f8 03          	sar    $0x3,%r8
140a0233a:	4c 0f af c7          	imul   %rdi,%r8
140a0233e:	49 83 f8 01          	cmp    $0x1,%r8
140a02342:	76 49                	jbe    0x140a0238d
140a02344:	83 7a 18 16          	cmpl   $0x16,0x18(%rdx)
140a02348:	75 4a                	jne    0x140a02394
140a0234a:	48 8b 42 20          	mov    0x20(%rdx),%rax
140a0234e:	48 8b 08             	mov    (%rax),%rcx
140a02351:	48 39 48 08          	cmp    %rcx,0x8(%rax)
140a02355:	75 3d                	jne    0x140a02394
140a02357:	49 83 f8 02          	cmp    $0x2,%r8
140a0235b:	76 30                	jbe    0x140a0238d
140a0235d:	83 7a 30 14          	cmpl   $0x14,0x30(%rdx)
140a02361:	75 31                	jne    0x140a02394
140a02363:	48 8b 42 38          	mov    0x38(%rdx),%rax
140a02367:	48 8b 08             	mov    (%rax),%rcx
140a0236a:	48 39 48 08          	cmp    %rcx,0x8(%rax)
140a0236e:	75 24                	jne    0x140a02394
140a02370:	49 83 f8 03          	cmp    $0x3,%r8
140a02374:	76 17                	jbe    0x140a0238d
140a02376:	83 7a 48 17          	cmpl   $0x17,0x48(%rdx)
140a0237a:	75 18                	jne    0x140a02394
140a0237c:	48 8b 4a 50          	mov    0x50(%rdx),%rcx
140a02380:	48 8b 11             	mov    (%rcx),%rdx
140a02383:	48 39 51 08          	cmp    %rdx,0x8(%rcx)
140a02387:	75 0b                	jne    0x140a02394
140a02389:	b0 01                	mov    $0x1,%al
140a0238b:	eb 09                	jmp    0x140a02396
140a0238d:	ff 15 05 a6 10 00    	call   *0x10a605(%rip)        # 0x140b0c998
140a02393:	cc                   	int3
140a02394:	32 c0                	xor    %al,%al
140a02396:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
140a0239b:	48 83 c4 20          	add    $0x20,%rsp
140a0239f:	5f                   	pop    %rdi
140a023a0:	c3                   	ret
140a023a1:	e8 82 2e 68 ff       	call   0x140085228
140a023a6:	cc                   	int3
140a023a7:	90                   	nop
140a023a8:	48 89 5c 24 10       	mov    %rbx,0x10(%rsp)
140a023ad:	48 89 74 24 18       	mov    %rsi,0x18(%rsp)
140a023b2:	48 89 4c 24 08       	mov    %rcx,0x8(%rsp)
140a023b7:	57                   	push   %rdi
140a023b8:	48 83 ec 20          	sub    $0x20,%rsp
140a023bc:	48 8b d9             	mov    %rcx,%rbx
140a023bf:	48 89 11             	mov    %rdx,(%rcx)
140a023c2:	33 f6                	xor    %esi,%esi
140a023c4:	48 89 71 08          	mov    %rsi,0x8(%rcx)
140a023c8:	48 89 71 10          	mov    %rsi,0x10(%rcx)
140a023cc:	49 8b 40 08          	mov    0x8(%r8),%rax
140a023d0:	48 85 c0             	test   %rax,%rax
140a023d3:	74 04                	je     0x140a023d9
140a023d5:	f0 ff 40 08          	lock incl 0x8(%rax)
140a023d9:	49 8b 00             	mov    (%r8),%rax
140a023dc:	48 89 41 08          	mov    %rax,0x8(%rcx)
140a023e0:	49 8b 40 08          	mov    0x8(%r8),%rax
140a023e4:	48 89 41 10          	mov    %rax,0x10(%rcx)
140a023e8:	44 88 49 18          	mov    %r9b,0x18(%rcx)
140a023ec:	48 89 71 20          	mov    %rsi,0x20(%rcx)
140a023f0:	48 89 71 28          	mov    %rsi,0x28(%rcx)
140a023f4:	48 8b 4c 24 50       	mov    0x50(%rsp),%rcx
140a023f9:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a023fd:	48 85 c0             	test   %rax,%rax
140a02400:	74 04                	je     0x140a02406
140a02402:	f0 ff 40 08          	lock incl 0x8(%rax)
140a02406:	48 8b 01             	mov    (%rcx),%rax
140a02409:	48 89 43 20          	mov    %rax,0x20(%rbx)
140a0240d:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a02411:	48 89 43 28          	mov    %rax,0x28(%rbx)
140a02415:	48 89 73 30          	mov    %rsi,0x30(%rbx)
140a02419:	48 89 73 38          	mov    %rsi,0x38(%rbx)
140a0241d:	48 8b 4c 24 58       	mov    0x58(%rsp),%rcx
140a02422:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a02426:	48 85 c0             	test   %rax,%rax
140a02429:	74 04                	je     0x140a0242f
140a0242b:	f0 ff 40 08          	lock incl 0x8(%rax)
140a0242f:	48 8b 01             	mov    (%rcx),%rax
140a02432:	48 89 43 30          	mov    %rax,0x30(%rbx)
140a02436:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a0243a:	48 89 43 38          	mov    %rax,0x38(%rbx)
140a0243e:	48 8d 4b 40          	lea    0x40(%rbx),%rcx
140a02442:	e8 ed 2e 00 00       	call   0x140a05334
140a02447:	48 8b 0b             	mov    (%rbx),%rcx
140a0244a:	48 8b 01             	mov    (%rcx),%rax
140a0244d:	48 8b 00             	mov    (%rax),%rax
140a02450:	48 89 43 50          	mov    %rax,0x50(%rbx)
140a02454:	48 8b 01             	mov    (%rcx),%rax
140a02457:	48 8b 40 08          	mov    0x8(%rax),%rax
140a0245b:	48 89 43 58          	mov    %rax,0x58(%rbx)
140a0245f:	48 8d 7b 60          	lea    0x60(%rbx),%rdi
140a02463:	48 89 7c 24 50       	mov    %rdi,0x50(%rsp)
140a02468:	48 89 37             	mov    %rsi,(%rdi)
140a0246b:	48 89 77 08          	mov    %rsi,0x8(%rdi)
140a0246f:	48 89 77 10          	mov    %rsi,0x10(%rdi)
140a02473:	48 89 77 18          	mov    %rsi,0x18(%rdi)
140a02477:	48 89 77 20          	mov    %rsi,0x20(%rdi)
140a0247b:	b9 10 00 00 00       	mov    $0x10,%ecx
140a02480:	ff 15 42 a4 10 00    	call   *0x10a442(%rip)        # 0x140b0c8c8
140a02486:	48 85 c0             	test   %rax,%rax
140a02489:	75 07                	jne    0x140a02492
140a0248b:	ff 15 07 a0 10 00    	call   *0x10a007(%rip)        # 0x140b0c498
140a02491:	cc                   	int3
140a02492:	48 89 70 08          	mov    %rsi,0x8(%rax)
140a02496:	48 89 07             	mov    %rax,(%rdi)
140a02499:	48 89 38             	mov    %rdi,(%rax)
140a0249c:	48 8d bb 88 00 00 00 	lea    0x88(%rbx),%rdi
140a024a3:	48 89 7c 24 50       	mov    %rdi,0x50(%rsp)
140a024a8:	48 89 37             	mov    %rsi,(%rdi)
140a024ab:	48 89 77 08          	mov    %rsi,0x8(%rdi)
140a024af:	48 89 77 10          	mov    %rsi,0x10(%rdi)
140a024b3:	48 89 77 18          	mov    %rsi,0x18(%rdi)
140a024b7:	48 89 77 20          	mov    %rsi,0x20(%rdi)
140a024bb:	b9 10 00 00 00       	mov    $0x10,%ecx
140a024c0:	ff 15 02 a4 10 00    	call   *0x10a402(%rip)        # 0x140b0c8c8
140a024c6:	48 85 c0             	test   %rax,%rax
140a024c9:	75 07                	jne    0x140a024d2
140a024cb:	ff 15 c7 9f 10 00    	call   *0x109fc7(%rip)        # 0x140b0c498
140a024d1:	cc                   	int3
140a024d2:	48 89 70 08          	mov    %rsi,0x8(%rax)
140a024d6:	48 89 07             	mov    %rax,(%rdi)
140a024d9:	48 89 38             	mov    %rdi,(%rax)
140a024dc:	48 8d 8b b0 00 00 00 	lea    0xb0(%rbx),%rcx
140a024e3:	e8 b0 b0 ff ff       	call   0x1409fd598
140a024e8:	48 8b c3             	mov    %rbx,%rax
140a024eb:	48 8b 5c 24 38       	mov    0x38(%rsp),%rbx
140a024f0:	48 8b 74 24 40       	mov    0x40(%rsp),%rsi
140a024f5:	48 83 c4 20          	add    $0x20,%rsp
140a024f9:	5f                   	pop    %rdi
140a024fa:	c3                   	ret
140a024fb:	90                   	nop
140a024fc:	90                   	nop
140a024fd:	90                   	nop
140a024fe:	90                   	nop
140a024ff:	90                   	nop
140a02500:	40 53                	rex push %rbx
140a02502:	48 83 ec 20          	sub    $0x20,%rsp
140a02506:	48 8b d9             	mov    %rcx,%rbx
140a02509:	e8 5e 47 00 00       	call   0x140a06c6c
140a0250e:	48 8b 0b             	mov    (%rbx),%rcx
140a02511:	48 83 23 00          	andq   $0x0,(%rbx)
140a02515:	48 83 c4 20          	add    $0x20,%rsp
140a02519:	5b                   	pop    %rbx
140a0251a:	48 ff 25 9f a3 10 00 	rex.W jmp *0x10a39f(%rip)        # 0x140b0c8c0
140a02521:	cc                   	int3
140a02522:	90                   	nop
140a02523:	90                   	nop
140a02524:	48 89 5c 24 18       	mov    %rbx,0x18(%rsp)
140a02529:	48 89 74 24 20       	mov    %rsi,0x20(%rsp)
140a0252e:	57                   	push   %rdi
140a0252f:	48 81 ec 90 00 00 00 	sub    $0x90,%rsp
140a02536:	48 8b 05 03 cb 2b 00 	mov    0x2bcb03(%rip),%rax        # 0x140cbf040
140a0253d:	48 33 c4             	xor    %rsp,%rax
140a02540:	48 89 84 24 80 00 00 	mov    %rax,0x80(%rsp)
140a02547:	00
140a02548:	48 89 54 24 20       	mov    %rdx,0x20(%rsp)
140a0254d:	48 8b f2             	mov    %rdx,%rsi
140a02550:	48 8b 41 58          	mov    0x58(%rcx),%rax
140a02554:	48 8b d9             	mov    %rcx,%rbx
140a02557:	48 39 41 50          	cmp    %rax,0x50(%rcx)
140a0255b:	0f 84 d5 00 00 00    	je     0x140a02636
140a02561:	48 8b cb             	mov    %rbx,%rcx
140a02564:	e8 af 01 00 00       	call   0x140a02718
140a02569:	84 c0                	test   %al,%al
140a0256b:	0f 85 b7 00 00 00    	jne    0x140a02628
140a02571:	48 83 bb 80 00 00 00 	cmpq   $0x0,0x80(%rbx)
140a02578:	00
140a02579:	48 8b 43 50          	mov    0x50(%rbx),%rax
140a0257d:	0f 84 91 00 00 00    	je     0x140a02614
140a02583:	83 38 17             	cmpl   $0x17,(%rax)
140a02586:	75 3e                	jne    0x140a025c6
140a02588:	48 8b 48 08          	mov    0x8(%rax),%rcx
140a0258c:	4c 8d 44 24 30       	lea    0x30(%rsp),%r8
140a02591:	48 8d 54 24 20       	lea    0x20(%rsp),%rdx
140a02596:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a0259a:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
140a0259f:	48 8b 01             	mov    (%rcx),%rax
140a025a2:	48 8d 8b 88 00 00 00 	lea    0x88(%rbx),%rcx
140a025a9:	48 89 44 24 20       	mov    %rax,0x20(%rsp)
140a025ae:	e8 1d 2e 00 00       	call   0x140a053d0
140a025b3:	48 83 43 50 18       	addq   $0x18,0x50(%rbx)
140a025b8:	48 8b 43 50          	mov    0x50(%rbx),%rax
140a025bc:	48 3b 43 58          	cmp    0x58(%rbx),%rax
140a025c0:	0f 85 27 01 00 00    	jne    0x140a026ed
140a025c6:	48 3b 43 58          	cmp    0x58(%rbx),%rax
140a025ca:	75 48                	jne    0x140a02614
140a025cc:	48 8b 93 80 00 00 00 	mov    0x80(%rbx),%rdx
140a025d3:	48 8b 4b 78          	mov    0x78(%rbx),%rcx
140a025d7:	48 8b 43 70          	mov    0x70(%rbx),%rax
140a025db:	48 ff c9             	dec    %rcx
140a025de:	48 ff c8             	dec    %rax
140a025e1:	48 03 ca             	add    %rdx,%rcx
140a025e4:	48 23 c8             	and    %rax,%rcx
140a025e7:	48 8b 43 68          	mov    0x68(%rbx),%rax
140a025eb:	48 8b 0c c8          	mov    (%rax,%rcx,8),%rcx
140a025ef:	48 8b 01             	mov    (%rcx),%rax
140a025f2:	48 89 43 50          	mov    %rax,0x50(%rbx)
140a025f6:	48 8b 41 08          	mov    0x8(%rcx),%rax
140a025fa:	48 89 43 58          	mov    %rax,0x58(%rbx)
140a025fe:	48 8d 42 ff          	lea    -0x1(%rdx),%rax
140a02602:	48 89 83 80 00 00 00 	mov    %rax,0x80(%rbx)
140a02609:	48 85 c0             	test   %rax,%rax
140a0260c:	75 1a                	jne    0x140a02628
140a0260e:	48 21 43 78          	and    %rax,0x78(%rbx)
140a02612:	eb 14                	jmp    0x140a02628
140a02614:	48 8b cb             	mov    %rbx,%rcx
140a02617:	e8 58 04 00 00       	call   0x140a02a74
140a0261c:	84 c0                	test   %al,%al
140a0261e:	75 08                	jne    0x140a02628
140a02620:	48 8b cb             	mov    %rbx,%rcx
140a02623:	e8 58 06 00 00       	call   0x140a02c80
140a02628:	48 8b 43 58          	mov    0x58(%rbx),%rax
140a0262c:	48 39 43 50          	cmp    %rax,0x50(%rbx)
140a02630:	0f 85 2b ff ff ff    	jne    0x140a02561
140a02636:	48 8b 83 b8 00 00 00 	mov    0xb8(%rbx),%rax
140a0263d:	48 8b 13             	mov    (%rbx),%rdx
140a02640:	48 85 c0             	test   %rax,%rax
140a02643:	74 04                	je     0x140a02649
140a02645:	f0 ff 40 08          	lock incl 0x8(%rax)
140a02649:	48 8b 7a 08          	mov    0x8(%rdx),%rdi
140a0264d:	48 8b 8b b8 00 00 00 	mov    0xb8(%rbx),%rcx
140a02654:	48 8b 83 b0 00 00 00 	mov    0xb0(%rbx),%rax
140a0265b:	48 89 02             	mov    %rax,(%rdx)
140a0265e:	48 89 4a 08          	mov    %rcx,0x8(%rdx)
140a02662:	48 85 ff             	test   %rdi,%rdi
140a02665:	74 39                	je     0x140a026a0
140a02667:	83 c8 ff             	or     $0xffffffff,%eax
140a0266a:	f0 0f c1 47 08       	lock xadd %eax,0x8(%rdi)
140a0266f:	83 f8 01             	cmp    $0x1,%eax
140a02672:	75 2c                	jne    0x140a026a0
140a02674:	48 8b 07             	mov    (%rdi),%rax
140a02677:	48 8b cf             	mov    %rdi,%rcx
140a0267a:	48 8b 00             	mov    (%rax),%rax
140a0267d:	ff 15 b5 a5 10 00    	call   *0x10a5b5(%rip)        # 0x140b0cc38
140a02683:	83 c8 ff             	or     $0xffffffff,%eax
140a02686:	f0 0f c1 47 0c       	lock xadd %eax,0xc(%rdi)
140a0268b:	83 f8 01             	cmp    $0x1,%eax
140a0268e:	75 10                	jne    0x140a026a0
140a02690:	48 8b 07             	mov    (%rdi),%rax
140a02693:	48 8b cf             	mov    %rdi,%rcx
140a02696:	48 8b 40 08          	mov    0x8(%rax),%rax
140a0269a:	ff 15 98 a5 10 00    	call   *0x10a598(%rip)        # 0x140b0cc38
140a026a0:	48 83 26 00          	andq   $0x0,(%rsi)
140a026a4:	48 83 66 08 00       	andq   $0x0,0x8(%rsi)
140a026a9:	48 8b 43 48          	mov    0x48(%rbx),%rax
140a026ad:	48 85 c0             	test   %rax,%rax
140a026b0:	74 04                	je     0x140a026b6
140a026b2:	f0 ff 40 08          	lock incl 0x8(%rax)
140a026b6:	48 8b 4b 40          	mov    0x40(%rbx),%rcx
140a026ba:	48 8b c6             	mov    %rsi,%rax
140a026bd:	48 89 0e             	mov    %rcx,(%rsi)
140a026c0:	48 8b 4b 48          	mov    0x48(%rbx),%rcx
140a026c4:	48 89 4e 08          	mov    %rcx,0x8(%rsi)
140a026c8:	48 8b 8c 24 80 00 00 	mov    0x80(%rsp),%rcx
140a026cf:	00
140a026d0:	48 33 cc             	xor    %rsp,%rcx
140a026d3:	e8 08 cf 0e 00       	call   0x140aef5e0