Skip to content

Instantly share code, notes, and snippets.

@animetosho
Last active January 2, 2023 01:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save animetosho/e1f26ea6f213f8808d1cabebbb91460e to your computer and use it in GitHub Desktop.
Save animetosho/e1f26ea6f213f8808d1cabebbb91460e to your computer and use it in GitHub Desktop.
"use strict";
// arguments:
// dummy-nntp-server.js [-S] [-d=delay|0] [port/socket|119/563]
const DEBUG = false;
var delay = 0; // in miliseconds
var y;
var junkArticle, junkArticleCrc, junkFileCrc;
try {
y = require('yencode');
} catch(x) {
console.log('Could not load yencode - non-random article will be served');
}
junkArticle = new Buffer(768000);
junkArticle.fill(64);
if(y) {
var cipher = require('crypto').createCipher('rc4', 'gimme somewhat random data');
var rand = Buffer.concat([cipher.update(junkArticle), cipher.final()]).slice(0, 768000);
junkArticleCrc = y.crc32(rand);
junkArticle = y.encode(rand);
junkFileCrc = junkArticleCrc;
for(var i=1; i<256; i++)
junkFileCrc = y.crc32_combine(junkFileCrc, junkArticleCrc, 768000);
junkArticleCrc = junkArticleCrc.toString('hex');
junkFileCrc = junkFileCrc.toString('hex');
} else {
// can't yEnc, just do the best we can...
junkArticleCrc = 'c1727bea';
junkFileCrc = '645b7755';
}
// simple dummy NNTP server
function NNTPServer(opts) {
this.opts = opts || {};
this.server = require(opts && opts.ssl ? 'tls' : 'net').createServer(opts.opts||{}, function(c) {
new NNTPConnection(c);
});
}
NNTPServer.prototype = {
listen: function(port, cb) {
this.server.listen(port, cb);
},
address: function() {
return this.server.address();
},
close: function(cb) {
this.server.close(cb);
}
};
function NNTPConnection(conn) {
this.dataQueue = '';
this.conn = conn;
this.write('200 host test server\r\n');
conn.on('data', this.onData.bind(this));
var self = this;
conn.on('end', function() {
self.write = function(){}; // disable writing after close
});
conn.on('error', function(err) {
if(err.code == 'ERR_STREAM_WRITE_AFTER_END') return; // ignore these
console.log('Test server error:', err);
});
}
var postCounter = 0;
NNTPConnection.prototype = {
postMode: false,
postBuf: null,
group: '',
_writeDelayed: function(data) {
setTimeout(this.conn.write.bind(this.conn, data), delay);
},
write: function(data) {
this.conn.write(data);
},
onData: function(chunk) {
// grab incomming lines
if(this.postMode) {
return this.onPostData(chunk);
}
this.dataQueue += chunk.toString();
var p;
while((p = this.dataQueue.indexOf('\n')) >= 0) {
var line = this.dataQueue.substr(0, p).trim();
this.dataQueue = this.dataQueue.substr(p+1);
var m = line.match(/^([A-Za-z]+) ?/);
if(!m) throw new Error('Unexpected message format: ' + line);
this.onRequest(m[1].toUpperCase(), line.substr(m[0].length));
if(this.postMode && this.dataQueue.length) {
return this.onPostData(new Buffer(this.dataQueue));
}
}
},
onPostData: function(data) {
/*
var p = data.indexOf('\r\n.\r\n');
if(p >= 0) {
// post received
this.write('240 <' + (postCounter++) + '> Article received ok\r\n');
this.postMode = false;
return this.onData(data.slice(p+5));
}
*/
if(!data.length) return;
var slicePos = 0;
if(this.postBuf) {
var tmp = Buffer.concat([this.postBuf, data.slice(0, 4)]);
var p = tmp.indexOf('\r\n.\r\n');
if(p >= 0) {
slicePos = p - this.postBuf.length + 5;
}
}
if(!slicePos) {
var p = data.indexOf('\r\n.\r\n');
if(p >= 0) {
slicePos = p+5;
}
}
if(slicePos) {
// post received
this.write('240 <' + (postCounter++) + '> Article received ok\r\n');
this.postBuf = null;
this.dataQueue = [];
this.postMode = false;
return this.onData(data.slice(slicePos));
}
if(data.length < 4) {
if(this.postBuf) {
this.postBuf = Buffer.concat([this.postBuf, data]);
if(this.postBuf.length > 4)
this.postBuf = this.postBuf.slice(this.postBuf.length - 4);
} else
this.postBuf = data;
} else {
this.postBuf = data.slice(data.length-4);
}
},
sendArticle: function(id, part, head, body) {
var chunks = [];
// handle 256*750KB parts per file (=187.5MB)
var realPart = (part & 0xff) + 1;
if(head) {
chunks.push(new Buffer([
'Path: pathost!demo!whitehouse!not-for-mail',
'From: "Demo User" <nobody@example.net>',
'Newsgroups: '+this.group,
'Subject: "'+id+'" yEnc ('+realPart+'/256)',
'Date: 6 Oct 1998 04:38:40 -0500',
'Message-ID: <' + id + '.' + part + '>',
body ? '' : '.',
''
].join('\r\n')));
}
if(body) {
var endPos = realPart*768000;
chunks.push(
new Buffer('=ybegin part='+realPart+' total=256 line=128 size=196608000 name='+id
+'\r\n=ypart begin='+(endPos-768000+1)+' end='+endPos+'\r\n'),
junkArticle,
new Buffer('\r\n=yend size=768000 part='+realPart+' pcrc32='+junkArticleCrc+' crc32='+junkFileCrc + '\r\n.\r\n')
);
}
// TODO: writev to socket?
this.write(Buffer.concat(chunks));
},
onRequest: function(req, data) {
switch(req) {
case 'AUTHINFO':
var m;
if(m = data.match(/^(USER|PASS) (.*)$/i)) {
// accept any user/pass
if(m[1].toUpperCase() == 'USER') {
this.write('381 Give AUTHINFO PASS command\r\n');
} else {
this.write('281 User logged in\r\n');
}
} else {
throw new Error('Command AUTHINFO ' + data + ' not supported');
}
break;
case 'DATE':
this.write('111 20101122013344\r\n');
break;
case 'STAT':
this.write('223 0 <abc> article retrieved - request text separately\r\n');
break;
case 'GROUP':
this.group = data;
this.write('211 0 1 0\r\n');
break;
case 'MODE': // assume MODE READER
this.write('200 Posting allowed\r\n');
break;
case 'POST':
if(data != 'READER') { // sent by Sanguinews - doesn't seem to be valid in NNTP spec...
if(data) throw new Error('Unexpected POST params: ' + data);
}
this.postMode = true;
this.write('340 Send article\r\n');
break;
case 'ARTICLE':
case 'HEAD':
case 'BODY':
var m;
if(!data)
this.write('420 Invalid article\r\n');
else if(m = data.match(/^\<(.*)\.([0-9]+)\>$/)) {
this.write({ARTICLE:220, HEAD:221, BODY:222}[req] + ' 0 ' + data + '\r\n');
this.sendArticle(m[1], m[2], req != 'BODY', req != 'HEAD');
} else
this.write('423 Invalid article\r\n');
break;
case 'QUIT':
this.write('205 bye\r\n');
this.conn.end();
break;
default:
throw new Error('Command ' + req + ' ' + data + ' not supported');
}
}
};
if(DEBUG) {
NNTPConnection.prototype._onPostData = NNTPConnection.prototype.onPostData;
NNTPConnection.prototype.onPostData = function(data) {
console.log('< [' + data.length + ' bytes recieved]');
return this._onPostData(data);
};
NNTPConnection.prototype._onRequest = NNTPConnection.prototype.onRequest;
NNTPConnection.prototype.onRequest = function(req, data) {
console.log('< ' + req + ' ' + data);
return this._onRequest(req, data);
};
NNTPConnection.prototype._write = NNTPConnection.prototype.write;
NNTPConnection.prototype.write = function(data) {
console.log('> ' + data.replace(/[\r\n]/g, ''));
return this._write(data);
};
}
// Run the server
var cluster = require('cluster');
if (cluster.isMaster) {
// Fork workers.
//var numCPUs = require('os').cpus().length;
var numCPUs = 2;
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
} else {
var fs = require('fs');
var argv = process.argv;
var port;
var opts = {};
argv.shift();
argv.shift();
if(argv[0] == '-S') {
opts.ssl = true;
opts.opts = {
key: new Buffer(`-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDC3ksN0uSU2CN1
5pU3D0Ne0sXF/ag+UXm5anDRolEY0PtN1tRCTc0ImLKllMPk+17lK2vIB4ZmcYxr
nBl8bsU1XEONXIlmrnGxGqVBuwCcMgra19XaoO2N76p/JCPSKrxW7gxDNXsdVhLt
3CTTW/xIrTLN2gsaH4mfiKkBX0LcP3uyC7YTxUQP1xeNA7/CM4hU+5IcO6ALo5jc
hDV7OMJGLe749dIIew157H13hzZ/Due/xgpzFYCJNbDUdWXqzyJmqIW5A0cbIALg
q3wngIFuHMD0/O7R0uR6OUPLQ5ZfY9+s9ATuTnE78XciW+jFa8qmrVequCq3BUpa
7fFJx4FPAgMBAAECggEBAJv/ODYozbQaEskfffRF07jlIk4NcdHxh3BXNVmchy9G
nOcDQ4iQn8Jx+xFyth9o2965k97dp0n7PF4o6H4kbtr4sVtI6PW6UGlm20RzX1mq
9eWbQydyDLnDUsnVNJfafktY5ZgoCBbEAQNJaHGLAbtsa28/TgPrm1CLJkBi8jM9
dy6Me9dsDcbMRbHCIMHBT+jrUnUG5TnoYccem3paNmO8w7ncmZNbJoToSqSIYb9q
4J92d+fgX/66KaUyOaXcOrYuX0mTaEZEZ9hLlZnArFUsijDbyP+g12UKXO6RVzlW
AL7GfekOGwJaOvm2ur6sKD3v8t5c+TDk6uTCMd6BWYECgYEA+KUh+snznvt9c4fD
nWJ03GuDBECOZPPZYDED6/yzr8bYWO4NZ0bnxKshVRVN18LqAadZ6wm2VVzOoug+
166RQy3+MUPgHOjxXoYanZWBA8a7+Tc30QSv6K6cvsQ6oq5bnOJBH6b5rY6t+2Gu
XzZEFMd3lWWZPhOAwRtpREll/pMCgYEAyKHviU2HI2MTjHPDXKze1E29R9NG+9mn
4/au4j0RNXviPIoCKgjBJJTylitTBnmQj4pfrFc38BOumyi9UIS+EHkv4qrClHvS
Ipz9KpZC6nVeSPbP16Lt8CJDbd/Z2IxaCCLOtKRBxdxQ2MvBgI3zSj0XYnuxvfY0
sDy4y8I4K9UCgYBBh4PFDKRgKfeOEyHCwMf7r3oADON6R6nqaACYmSjiEo3CIjr2
FQHQGynVup+hVYVGmkxgXVboeGUdGgg135P5GI39fd36wImcV8t77ILr89xmed8D
/zA9Koe03xJ0/W63kgmHxgHXc9r2fW/vN+YJc+hYP0Z7zbgJLKg5jv6KcQKBgB3S
G/VvhY+X8Vbl+fqzYydxKpobaCiU8GRszQ+pff5SHI1dAfdXd8XFMc1qQRvsQ7Vi
HthR2mmfs0syofju0gVGzfxF30gMo24roWGMFgQdT9dOgBQQDoerwBP7urh6HAOr
kMe+xlvvZEDlACzobGnzbJ9hvUh76NbtH5aBlrHFAoGAI6lHTuDuma2glymbTFBx
n0we8xkmHOQ8wkFHHh9AG+BWc451+VK1KrxzRNshFyk2bV78zm5L5juMbOGsaKL2
7SIHVuZPdFOSeiWiZacdwfVMJaRET8G3uSrVSHzutQAkOIxp0lAbSW0FabF12NqX
9J0RH794AZh9QnJDgqgfrMk=
-----END PRIVATE KEY-----`),
cert: new Buffer(`-----BEGIN CERTIFICATE-----
MIICsjCCAZqgAwIBAgIJAP/ow1pGKqFyMA0GCSqGSIb3DQEBCwUAMBExDzANBgNV
BAMMBnVidW50dTAeFw0xNjA1MDUxMDQ2NTRaFw0yNjA1MDMxMDQ2NTRaMBExDzAN
BgNVBAMMBnVidW50dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMLe
Sw3S5JTYI3XmlTcPQ17SxcX9qD5ReblqcNGiURjQ+03W1EJNzQiYsqWUw+T7XuUr
a8gHhmZxjGucGXxuxTVcQ41ciWaucbEapUG7AJwyCtrX1dqg7Y3vqn8kI9IqvFbu
DEM1ex1WEu3cJNNb/EitMs3aCxofiZ+IqQFfQtw/e7ILthPFRA/XF40Dv8IziFT7
khw7oAujmNyENXs4wkYt7vj10gh7DXnsfXeHNn8O57/GCnMVgIk1sNR1ZerPImao
hbkDRxsgAuCrfCeAgW4cwPT87tHS5Ho5Q8tDll9j36z0BO5OcTvxdyJb6MVryqat
V6q4KrcFSlrt8UnHgU8CAwEAAaMNMAswCQYDVR0TBAIwADANBgkqhkiG9w0BAQsF
AAOCAQEArFDaYJAglNQr6/TgtZEmB1P7579B104c2vBM03ESibHvSFdw7O5urtRk
0d4GlbhoAByIBJw4h2F5M4M96CRo4Sr9tETW0uC9a9weLWRQcSi8cwCXCfDNOAs+
+EbKVhU865veQWvOgBRyWfrPLFixnbFzIHJjJ5I1B9M10jD2fc19asRDQ8ofxjhs
BfddQnOKa/jpHy7uzEh58ja+Ton4QNcP/YDfs2YdpSiGEi6CsErBwlsUdlDDyZ14
azBRuO45h8bPEAPRMXX2ixppx7124Pzjz1jfkse2kkdkRO67kmEj/i2IG2H2lqjJ
3xHoEnsHoeVeBhbJjD9H5Q56YYvOaQ==
-----END CERTIFICATE-----`)
};
argv.shift();
}
if(argv[0] && argv[0].startsWith('-d')) {
delay = argv.shift().substr(3);
NNTPConnection.prototype.write = DEBUG ? function(data) {
if(Buffer.isBuffer(data))
console.log('> [' + data.length + ' bytes]');
else
console.log('> ' + data.toString().replace(/[\r\n]/g, ''));
this._writeDelayed(data);
} : NNTPConnection.prototype._writeDelayed;
}
if(argv[0]) {
port = argv.shift();
if(/^\d+$/.test(port))
port |= 0; // numeric port (not socket)
else {
/* problem with auto delete + cluster because second process will delete first's socket, so need to manually handle this or fix it later
try {
fs.unlinkSync(port);
} catch(x) {}
*/
}
} else {
port = opts.ssl ? 563 : 119;
}
var srv = new NNTPServer(opts);
// if the following line gives an EACCESS error when not running as root, try a port > 1024
srv.listen(port, function(err) {
if(err) throw err;
var addr = srv.address();
if(addr.port) addr = addr.port;
console.log('Server listening on ' + addr)
});
}
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE nzb PUBLIC "-//newzBin//DTD NZB 1.1//EN" "http://www.newzbin.com/DTD/nzb/nzb-1.1.dtd">
<nzb xmlns="http://www.newzbin.com/DTD/2003/nzb">
<!-- copy/paste the following (changing the file name) for more files -->
<file poster="Joe Bloggs &lt;bloggs@nowhere.example&gt;" date="1071674882" subject="&quot;bigfile.001&quot; yEnc (1/256)">
<groups>
<group>alt.binaries.test</group>
</groups>
<segments>
<segment bytes="768000" number="1">bigfile.001.0</segment>
<segment bytes="768000" number="2">bigfile.001.1</segment>
<segment bytes="768000" number="3">bigfile.001.2</segment>
<segment bytes="768000" number="4">bigfile.001.3</segment>
<segment bytes="768000" number="5">bigfile.001.4</segment>
<segment bytes="768000" number="6">bigfile.001.5</segment>
<segment bytes="768000" number="7">bigfile.001.6</segment>
<segment bytes="768000" number="8">bigfile.001.7</segment>
<segment bytes="768000" number="9">bigfile.001.8</segment>
<segment bytes="768000" number="10">bigfile.001.9</segment>
<segment bytes="768000" number="11">bigfile.001.10</segment>
<segment bytes="768000" number="12">bigfile.001.11</segment>
<segment bytes="768000" number="13">bigfile.001.12</segment>
<segment bytes="768000" number="14">bigfile.001.13</segment>
<segment bytes="768000" number="15">bigfile.001.14</segment>
<segment bytes="768000" number="16">bigfile.001.15</segment>
<segment bytes="768000" number="17">bigfile.001.16</segment>
<segment bytes="768000" number="18">bigfile.001.17</segment>
<segment bytes="768000" number="19">bigfile.001.18</segment>
<segment bytes="768000" number="20">bigfile.001.19</segment>
<segment bytes="768000" number="21">bigfile.001.20</segment>
<segment bytes="768000" number="22">bigfile.001.21</segment>
<segment bytes="768000" number="23">bigfile.001.22</segment>
<segment bytes="768000" number="24">bigfile.001.23</segment>
<segment bytes="768000" number="25">bigfile.001.24</segment>
<segment bytes="768000" number="26">bigfile.001.25</segment>
<segment bytes="768000" number="27">bigfile.001.26</segment>
<segment bytes="768000" number="28">bigfile.001.27</segment>
<segment bytes="768000" number="29">bigfile.001.28</segment>
<segment bytes="768000" number="30">bigfile.001.29</segment>
<segment bytes="768000" number="31">bigfile.001.30</segment>
<segment bytes="768000" number="32">bigfile.001.31</segment>
<segment bytes="768000" number="33">bigfile.001.32</segment>
<segment bytes="768000" number="34">bigfile.001.33</segment>
<segment bytes="768000" number="35">bigfile.001.34</segment>
<segment bytes="768000" number="36">bigfile.001.35</segment>
<segment bytes="768000" number="37">bigfile.001.36</segment>
<segment bytes="768000" number="38">bigfile.001.37</segment>
<segment bytes="768000" number="39">bigfile.001.38</segment>
<segment bytes="768000" number="40">bigfile.001.39</segment>
<segment bytes="768000" number="41">bigfile.001.40</segment>
<segment bytes="768000" number="42">bigfile.001.41</segment>
<segment bytes="768000" number="43">bigfile.001.42</segment>
<segment bytes="768000" number="44">bigfile.001.43</segment>
<segment bytes="768000" number="45">bigfile.001.44</segment>
<segment bytes="768000" number="46">bigfile.001.45</segment>
<segment bytes="768000" number="47">bigfile.001.46</segment>
<segment bytes="768000" number="48">bigfile.001.47</segment>
<segment bytes="768000" number="49">bigfile.001.48</segment>
<segment bytes="768000" number="50">bigfile.001.49</segment>
<segment bytes="768000" number="51">bigfile.001.50</segment>
<segment bytes="768000" number="52">bigfile.001.51</segment>
<segment bytes="768000" number="53">bigfile.001.52</segment>
<segment bytes="768000" number="54">bigfile.001.53</segment>
<segment bytes="768000" number="55">bigfile.001.54</segment>
<segment bytes="768000" number="56">bigfile.001.55</segment>
<segment bytes="768000" number="57">bigfile.001.56</segment>
<segment bytes="768000" number="58">bigfile.001.57</segment>
<segment bytes="768000" number="59">bigfile.001.58</segment>
<segment bytes="768000" number="60">bigfile.001.59</segment>
<segment bytes="768000" number="61">bigfile.001.60</segment>
<segment bytes="768000" number="62">bigfile.001.61</segment>
<segment bytes="768000" number="63">bigfile.001.62</segment>
<segment bytes="768000" number="64">bigfile.001.63</segment>
<segment bytes="768000" number="65">bigfile.001.64</segment>
<segment bytes="768000" number="66">bigfile.001.65</segment>
<segment bytes="768000" number="67">bigfile.001.66</segment>
<segment bytes="768000" number="68">bigfile.001.67</segment>
<segment bytes="768000" number="69">bigfile.001.68</segment>
<segment bytes="768000" number="70">bigfile.001.69</segment>
<segment bytes="768000" number="71">bigfile.001.70</segment>
<segment bytes="768000" number="72">bigfile.001.71</segment>
<segment bytes="768000" number="73">bigfile.001.72</segment>
<segment bytes="768000" number="74">bigfile.001.73</segment>
<segment bytes="768000" number="75">bigfile.001.74</segment>
<segment bytes="768000" number="76">bigfile.001.75</segment>
<segment bytes="768000" number="77">bigfile.001.76</segment>
<segment bytes="768000" number="78">bigfile.001.77</segment>
<segment bytes="768000" number="79">bigfile.001.78</segment>
<segment bytes="768000" number="80">bigfile.001.79</segment>
<segment bytes="768000" number="81">bigfile.001.80</segment>
<segment bytes="768000" number="82">bigfile.001.81</segment>
<segment bytes="768000" number="83">bigfile.001.82</segment>
<segment bytes="768000" number="84">bigfile.001.83</segment>
<segment bytes="768000" number="85">bigfile.001.84</segment>
<segment bytes="768000" number="86">bigfile.001.85</segment>
<segment bytes="768000" number="87">bigfile.001.86</segment>
<segment bytes="768000" number="88">bigfile.001.87</segment>
<segment bytes="768000" number="89">bigfile.001.88</segment>
<segment bytes="768000" number="90">bigfile.001.89</segment>
<segment bytes="768000" number="91">bigfile.001.90</segment>
<segment bytes="768000" number="92">bigfile.001.91</segment>
<segment bytes="768000" number="93">bigfile.001.92</segment>
<segment bytes="768000" number="94">bigfile.001.93</segment>
<segment bytes="768000" number="95">bigfile.001.94</segment>
<segment bytes="768000" number="96">bigfile.001.95</segment>
<segment bytes="768000" number="97">bigfile.001.96</segment>
<segment bytes="768000" number="98">bigfile.001.97</segment>
<segment bytes="768000" number="99">bigfile.001.98</segment>
<segment bytes="768000" number="100">bigfile.001.99</segment>
<segment bytes="768000" number="101">bigfile.001.100</segment>
<segment bytes="768000" number="102">bigfile.001.101</segment>
<segment bytes="768000" number="103">bigfile.001.102</segment>
<segment bytes="768000" number="104">bigfile.001.103</segment>
<segment bytes="768000" number="105">bigfile.001.104</segment>
<segment bytes="768000" number="106">bigfile.001.105</segment>
<segment bytes="768000" number="107">bigfile.001.106</segment>
<segment bytes="768000" number="108">bigfile.001.107</segment>
<segment bytes="768000" number="109">bigfile.001.108</segment>
<segment bytes="768000" number="110">bigfile.001.109</segment>
<segment bytes="768000" number="111">bigfile.001.110</segment>
<segment bytes="768000" number="112">bigfile.001.111</segment>
<segment bytes="768000" number="113">bigfile.001.112</segment>
<segment bytes="768000" number="114">bigfile.001.113</segment>
<segment bytes="768000" number="115">bigfile.001.114</segment>
<segment bytes="768000" number="116">bigfile.001.115</segment>
<segment bytes="768000" number="117">bigfile.001.116</segment>
<segment bytes="768000" number="118">bigfile.001.117</segment>
<segment bytes="768000" number="119">bigfile.001.118</segment>
<segment bytes="768000" number="120">bigfile.001.119</segment>
<segment bytes="768000" number="121">bigfile.001.120</segment>
<segment bytes="768000" number="122">bigfile.001.121</segment>
<segment bytes="768000" number="123">bigfile.001.122</segment>
<segment bytes="768000" number="124">bigfile.001.123</segment>
<segment bytes="768000" number="125">bigfile.001.124</segment>
<segment bytes="768000" number="126">bigfile.001.125</segment>
<segment bytes="768000" number="127">bigfile.001.126</segment>
<segment bytes="768000" number="128">bigfile.001.127</segment>
<segment bytes="768000" number="129">bigfile.001.128</segment>
<segment bytes="768000" number="130">bigfile.001.129</segment>
<segment bytes="768000" number="131">bigfile.001.130</segment>
<segment bytes="768000" number="132">bigfile.001.131</segment>
<segment bytes="768000" number="133">bigfile.001.132</segment>
<segment bytes="768000" number="134">bigfile.001.133</segment>
<segment bytes="768000" number="135">bigfile.001.134</segment>
<segment bytes="768000" number="136">bigfile.001.135</segment>
<segment bytes="768000" number="137">bigfile.001.136</segment>
<segment bytes="768000" number="138">bigfile.001.137</segment>
<segment bytes="768000" number="139">bigfile.001.138</segment>
<segment bytes="768000" number="140">bigfile.001.139</segment>
<segment bytes="768000" number="141">bigfile.001.140</segment>
<segment bytes="768000" number="142">bigfile.001.141</segment>
<segment bytes="768000" number="143">bigfile.001.142</segment>
<segment bytes="768000" number="144">bigfile.001.143</segment>
<segment bytes="768000" number="145">bigfile.001.144</segment>
<segment bytes="768000" number="146">bigfile.001.145</segment>
<segment bytes="768000" number="147">bigfile.001.146</segment>
<segment bytes="768000" number="148">bigfile.001.147</segment>
<segment bytes="768000" number="149">bigfile.001.148</segment>
<segment bytes="768000" number="150">bigfile.001.149</segment>
<segment bytes="768000" number="151">bigfile.001.150</segment>
<segment bytes="768000" number="152">bigfile.001.151</segment>
<segment bytes="768000" number="153">bigfile.001.152</segment>
<segment bytes="768000" number="154">bigfile.001.153</segment>
<segment bytes="768000" number="155">bigfile.001.154</segment>
<segment bytes="768000" number="156">bigfile.001.155</segment>
<segment bytes="768000" number="157">bigfile.001.156</segment>
<segment bytes="768000" number="158">bigfile.001.157</segment>
<segment bytes="768000" number="159">bigfile.001.158</segment>
<segment bytes="768000" number="160">bigfile.001.159</segment>
<segment bytes="768000" number="161">bigfile.001.160</segment>
<segment bytes="768000" number="162">bigfile.001.161</segment>
<segment bytes="768000" number="163">bigfile.001.162</segment>
<segment bytes="768000" number="164">bigfile.001.163</segment>
<segment bytes="768000" number="165">bigfile.001.164</segment>
<segment bytes="768000" number="166">bigfile.001.165</segment>
<segment bytes="768000" number="167">bigfile.001.166</segment>
<segment bytes="768000" number="168">bigfile.001.167</segment>
<segment bytes="768000" number="169">bigfile.001.168</segment>
<segment bytes="768000" number="170">bigfile.001.169</segment>
<segment bytes="768000" number="171">bigfile.001.170</segment>
<segment bytes="768000" number="172">bigfile.001.171</segment>
<segment bytes="768000" number="173">bigfile.001.172</segment>
<segment bytes="768000" number="174">bigfile.001.173</segment>
<segment bytes="768000" number="175">bigfile.001.174</segment>
<segment bytes="768000" number="176">bigfile.001.175</segment>
<segment bytes="768000" number="177">bigfile.001.176</segment>
<segment bytes="768000" number="178">bigfile.001.177</segment>
<segment bytes="768000" number="179">bigfile.001.178</segment>
<segment bytes="768000" number="180">bigfile.001.179</segment>
<segment bytes="768000" number="181">bigfile.001.180</segment>
<segment bytes="768000" number="182">bigfile.001.181</segment>
<segment bytes="768000" number="183">bigfile.001.182</segment>
<segment bytes="768000" number="184">bigfile.001.183</segment>
<segment bytes="768000" number="185">bigfile.001.184</segment>
<segment bytes="768000" number="186">bigfile.001.185</segment>
<segment bytes="768000" number="187">bigfile.001.186</segment>
<segment bytes="768000" number="188">bigfile.001.187</segment>
<segment bytes="768000" number="189">bigfile.001.188</segment>
<segment bytes="768000" number="190">bigfile.001.189</segment>
<segment bytes="768000" number="191">bigfile.001.190</segment>
<segment bytes="768000" number="192">bigfile.001.191</segment>
<segment bytes="768000" number="193">bigfile.001.192</segment>
<segment bytes="768000" number="194">bigfile.001.193</segment>
<segment bytes="768000" number="195">bigfile.001.194</segment>
<segment bytes="768000" number="196">bigfile.001.195</segment>
<segment bytes="768000" number="197">bigfile.001.196</segment>
<segment bytes="768000" number="198">bigfile.001.197</segment>
<segment bytes="768000" number="199">bigfile.001.198</segment>
<segment bytes="768000" number="200">bigfile.001.199</segment>
<segment bytes="768000" number="201">bigfile.001.200</segment>
<segment bytes="768000" number="202">bigfile.001.201</segment>
<segment bytes="768000" number="203">bigfile.001.202</segment>
<segment bytes="768000" number="204">bigfile.001.203</segment>
<segment bytes="768000" number="205">bigfile.001.204</segment>
<segment bytes="768000" number="206">bigfile.001.205</segment>
<segment bytes="768000" number="207">bigfile.001.206</segment>
<segment bytes="768000" number="208">bigfile.001.207</segment>
<segment bytes="768000" number="209">bigfile.001.208</segment>
<segment bytes="768000" number="210">bigfile.001.209</segment>
<segment bytes="768000" number="211">bigfile.001.210</segment>
<segment bytes="768000" number="212">bigfile.001.211</segment>
<segment bytes="768000" number="213">bigfile.001.212</segment>
<segment bytes="768000" number="214">bigfile.001.213</segment>
<segment bytes="768000" number="215">bigfile.001.214</segment>
<segment bytes="768000" number="216">bigfile.001.215</segment>
<segment bytes="768000" number="217">bigfile.001.216</segment>
<segment bytes="768000" number="218">bigfile.001.217</segment>
<segment bytes="768000" number="219">bigfile.001.218</segment>
<segment bytes="768000" number="220">bigfile.001.219</segment>
<segment bytes="768000" number="221">bigfile.001.220</segment>
<segment bytes="768000" number="222">bigfile.001.221</segment>
<segment bytes="768000" number="223">bigfile.001.222</segment>
<segment bytes="768000" number="224">bigfile.001.223</segment>
<segment bytes="768000" number="225">bigfile.001.224</segment>
<segment bytes="768000" number="226">bigfile.001.225</segment>
<segment bytes="768000" number="227">bigfile.001.226</segment>
<segment bytes="768000" number="228">bigfile.001.227</segment>
<segment bytes="768000" number="229">bigfile.001.228</segment>
<segment bytes="768000" number="230">bigfile.001.229</segment>
<segment bytes="768000" number="231">bigfile.001.230</segment>
<segment bytes="768000" number="232">bigfile.001.231</segment>
<segment bytes="768000" number="233">bigfile.001.232</segment>
<segment bytes="768000" number="234">bigfile.001.233</segment>
<segment bytes="768000" number="235">bigfile.001.234</segment>
<segment bytes="768000" number="236">bigfile.001.235</segment>
<segment bytes="768000" number="237">bigfile.001.236</segment>
<segment bytes="768000" number="238">bigfile.001.237</segment>
<segment bytes="768000" number="239">bigfile.001.238</segment>
<segment bytes="768000" number="240">bigfile.001.239</segment>
<segment bytes="768000" number="241">bigfile.001.240</segment>
<segment bytes="768000" number="242">bigfile.001.241</segment>
<segment bytes="768000" number="243">bigfile.001.242</segment>
<segment bytes="768000" number="244">bigfile.001.243</segment>
<segment bytes="768000" number="245">bigfile.001.244</segment>
<segment bytes="768000" number="246">bigfile.001.245</segment>
<segment bytes="768000" number="247">bigfile.001.246</segment>
<segment bytes="768000" number="248">bigfile.001.247</segment>
<segment bytes="768000" number="249">bigfile.001.248</segment>
<segment bytes="768000" number="250">bigfile.001.249</segment>
<segment bytes="768000" number="251">bigfile.001.250</segment>
<segment bytes="768000" number="252">bigfile.001.251</segment>
<segment bytes="768000" number="253">bigfile.001.252</segment>
<segment bytes="768000" number="254">bigfile.001.253</segment>
<segment bytes="768000" number="255">bigfile.001.254</segment>
<segment bytes="768000" number="256">bigfile.001.255</segment>
</segments>
</file>
</nzb>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment