text:
var async = require('async');

exports['auto'] = function(test){
    var callOrder = [];
    var testdata = [{test: 'test'}];
    async.auto({
        task1: ['task2', function(callback){
            setTimeout(function(){
                callOrder.push('task1');
                callback();
            }, 25);
        }],
        task2: function(callback){
            setTimeout(function(){
                callOrder.push('task2');
                callback();
            }, 50);
        },
        task3: ['task2', function(callback){
            callOrder.push('task3');
            callback();
        }],
        task4: ['task1', 'task2', function(callback){
            callOrder.push('task4');
            callback();
        }]
    },
    function(err){
        test.same(callOrder, ['task2','task3','task1','task4']);
        test.done();
    });
};

exports['auto empty object'] = function(test){
    async.auto({}, function(err){
        test.done();
    });
};

exports['auto error'] = function(test){
    test.expect(1);
    async.auto({
        task1: function(callback){
            callback('testerror');
        },
        task2: ['task1', function(callback){
            test.ok(false, 'task2 should not be called');
            callback();
        }],
        task3: function(callback){
            callback('testerror2');
        }
    },
    function(err){
        test.equals(err, 'testerror');
    });
    setTimeout(test.done, 100);
};

exports['auto no callback'] = function(test){
    async.auto({
        task1: function(callback){callback();},
        task2: ['task1', function(callback){callback(); test.done();}]
    });
};

exports['waterfall'] = function(test){
    test.expect(6);
    var call_order = [];
    async.waterfall([
        function(callback){
            call_order.push('fn1');
            setTimeout(function(){callback(null, 'one', 'two');}, 0);
        },
        function(arg1, arg2, callback){
            call_order.push('fn2');
            test.equals(arg1, 'one');
            test.equals(arg2, 'two');
            setTimeout(function(){callback(null, arg1, arg2, 'three');}, 25);
        },
        function(arg1, arg2, arg3, callback){
            call_order.push('fn3');
            test.equals(arg1, 'one');
            test.equals(arg2, 'two');
            test.equals(arg3, 'three');
            callback(null, 'four');
        },
        function(arg4, callback){
            call_order.push('fn4');
            test.same(call_order, ['fn1','fn2','fn3','fn4']);
            callback(null, 'test');
        }
    ], function(err){
        test.done();
    });
};

exports['waterfall empty array'] = function(test){
    async.waterfall([], function(err){
        test.done();
    });
};

exports['waterfall no callback'] = function(test){
    async.waterfall([
        function(callback){callback();},
        function(callback){callback(); test.done();}
    ]);
};

exports['waterfall async'] = function(test){
    var call_order = [];
    async.waterfall([
        function(callback){
            call_order.push(1);
            callback();
            call_order.push(2);
        },
        function(callback){
            call_order.push(3);
            callback();
        },
        function(){
            test.same(call_order, [1,2,3]);
            test.done();
        }
    ]);
};

exports['waterfall error'] = function(test){
    test.expect(1);
    async.waterfall([
        function(callback){
            callback('error');
        },
        function(callback){
            test.ok(false, 'next function should not be called');
            callback();
        }
    ], function(err){
        test.equals(err, 'error');
    });
    setTimeout(test.done, 50);
};

exports['waterfall multiple callback calls'] = function(test){
    var call_order = [];
    var arr = [
        function(callback){
            call_order.push(1);
            // call the callback twice. this should call function 2 twice
            callback(null, 'one', 'two');
            callback(null, 'one', 'two');
        },
        function(arg1, arg2, callback){
            call_order.push(2);
            callback(null, arg1, arg2, 'three');
        },
        function(arg1, arg2, arg3, callback){
            call_order.push(3);
            callback(null, 'four');
        },
        function(arg4){
            call_order.push(4);
            arr[3] = function(){
                call_order.push(4);
                test.same(call_order, [1,2,2,3,3,4,4]);
                test.done();
            };
        }
    ];
    async.waterfall(arr);
};

exports['parallel'] = function(test){
    var call_order = [];
    async.parallel([
        function(callback){
            setTimeout(function(){
                call_order.push(1);
                callback(null, 1);
            }, 25);
        },
        function(callback){
            setTimeout(function(){
                call_order.push(2);
                callback(null, 2);
            }, 50);
        },
        function(callback){
            setTimeout(function(){
                call_order.push(3);
                callback(null, 3,3);
            }, 15);
        }
    ],
    function(err, results){
        test.equals(err, null);
        test.same(call_order, [3,1,2]);
        test.same(results, [1,2,[3,3]]);
        test.done();
    });
};

exports['parallel empty array'] = function(test){
    async.parallel([], function(err, results){
        test.equals(err, null);
        test.same(results, []);
        test.done();
    });
};

exports['parallel error'] = function(test){
    async.parallel([
        function(callback){
            callback('error', 1);
        },
        function(callback){
            callback('error2', 2);
        }
    ],
    function(err, results){
        test.equals(err, 'error');
    });
    setTimeout(test.done, 100);
};

exports['parallel no callback'] = function(test){
    async.parallel([
        function(callback){callback();},
        function(callback){callback(); test.done();},
    ]);
};

exports['series'] = function(test){
    var call_order = [];
    async.series([
        function(callback){
            setTimeout(function(){
                call_order.push(1);
                callback(null, 1);
            }, 25);
        },
        function(callback){
            setTimeout(function(){
                call_order.push(2);
                callback(null, 2);
            }, 50);
        },
        function(callback){
            setTimeout(function(){
                call_order.push(3);
                callback(null, 3,3);
            }, 15);
        }
    ],
    function(err, results){
        test.equals(err, null);
        test.same(results, [1,2,[3,3]]);
        test.same(call_order, [1,2,3]);
        test.done();
    });
};

exports['series empty array'] = function(test){
    async.series([], function(err, results){
        test.equals(err, null);
        test.same(results, []);
        test.done();
    });
};

exports['series error'] = function(test){
    test.expect(1);
    async.series([
        function(callback){
            callback('error', 1);
        },
        function(callback){
            test.ok(false, 'should not be called');
            callback('error2', 2);
        }
    ],
    function(err, results){
        test.equals(err, 'error');
    });
    setTimeout(test.done, 100);
};

exports['series no callback'] = function(test){
    async.series([
        function(callback){callback();},
        function(callback){callback(); test.done();},
    ]);
};

exports['iterator'] = function(test){
    var call_order = [];
    var iterator = async.iterator([
        function(){call_order.push(1);},
        function(arg1){
            test.equals(arg1, 'arg1');
            call_order.push(2);
        },
        function(arg1, arg2){
            test.equals(arg1, 'arg1');
            test.equals(arg2, 'arg2');
            call_order.push(3);
        }
    ]);
    iterator();
    test.same(call_order, [1]);
    var iterator2 = iterator();
    test.same(call_order, [1,1]);
    var iterator3 = iterator2('arg1');
    test.same(call_order, [1,1,2]);
    var iterator4 = iterator3('arg1', 'arg2');
    test.same(call_order, [1,1,2,3]);
    test.equals(iterator4, undefined);
    test.done();
};

exports['iterator empty array'] = function(test){
    var iterator = async.iterator([]);
    test.equals(iterator(), undefined);
    test.equals(iterator.next(), undefined);
    test.done();
};

exports['iterator.next'] = function(test){
    var call_order = [];
    var iterator = async.iterator([
        function(){call_order.push(1);},
        function(arg1){
            test.equals(arg1, 'arg1');
            call_order.push(2);
        },
        function(arg1, arg2){
            test.equals(arg1, 'arg1');
            test.equals(arg2, 'arg2');
            call_order.push(3);
        }
    ]);
    var fn = iterator.next();
    var iterator2 = fn('arg1');
    test.same(call_order, [2]);
    iterator2('arg1','arg2');
    test.same(call_order, [2,3]);
    test.equals(iterator2.next(), undefined);
    test.done();
};

exports['forEach'] = function(test){
    var args = [];
    async.forEach([1,3,2], function(x, callback){
        setTimeout(function(){
            args.push(x);
            callback();
        }, x*25);
    }, function(err){
        test.same(args, [1,2,3]);
        test.done();
    });
};

exports['forEach empty array'] = function(test){
    test.expect(1);
    async.forEach([], function(x, callback){
        test.ok(false, 'iterator should not be called');
        callback();
    }, function(err){
        test.ok(true, 'should call callback');
    });
    setTimeout(test.done, 25);
};

exports['forEach error'] = function(test){
    test.expect(1);
    async.forEach([1,2,3], function(x, callback){
        callback('error');
    }, function(err){
        test.equals(err, 'error');
    });
    setTimeout(test.done, 50);
};

exports['forEachSeries'] = function(test){
    var args = [];
    async.forEachSeries([1,3,2], function(x, callback){
        setTimeout(function(){
            args.push(x);
            callback();
        }, x*25);
    }, function(err){
        test.same(args, [1,3,2]);
        test.done();
    });
};

exports['forEachSeries empty array'] = function(test){
    test.expect(1);
    async.forEachSeries([], function(x, callback){
        test.ok(false, 'iterator should not be called');
        callback();
    }, function(err){
        test.ok(true, 'should call callback');
    });
    setTimeout(test.done, 25);
};

exports['forEachSeries error'] = function(test){
    test.expect(2);
    var call_order = [];
    async.forEachSeries([1,2,3], function(x, callback){
        call_order.push(x);
        callback('error');
    }, function(err){
        test.same(call_order, [1]);
        test.equals(err, 'error');
    });
    setTimeout(test.done, 50);
};

exports['map'] = function(test){
    var call_order = [];
    async.map([1,3,2], function(x, callback){
        setTimeout(function(){
            call_order.push(x);
            callback(null, x*2);
        }, x*25);
    }, function(err, results){
        test.same(call_order, [1,2,3]);
        test.same(results, [2,6,4]);
        test.done();
    });
};

exports['map original untouched'] = function(test){
    var a = [1,2,3];
    async.map(a, function(x, callback){
        callback(null, x*2);
    }, function(err, results){
        test.same(results, [2,4,6]);
        test.same(a, [1,2,3]);
        test.done();
    });
};

exports['map error'] = function(test){
    test.expect(1);
    async.map([1,2,3], function(x, callback){
        callback('error');
    }, function(err, results){
        test.equals(err, 'error');
    });
    setTimeout(test.done, 50);
};

exports['mapSeries'] = function(test){
    var call_order = [];
    async.mapSeries([1,3,2], function(x, callback){
        setTimeout(function(){
            call_order.push(x);
            callback(null, x*2);
        }, x*25);
    }, function(err, results){
        test.same(call_order, [1,3,2]);
        test.same(results, [2,6,4]);
        test.done();
    });
};

exports['mapSeries error'] = function(test){
    test.expect(1);
    async.mapSeries([1,2,3], function(x, callback){
        callback('error');
    }, function(err, results){
        test.equals(err, 'error');
    });
    setTimeout(test.done, 50);
};

exports['reduce'] = function(test){
    var call_order = [];
    async.reduce([1,2,3], 0, function(a, x, callback){
        call_order.push(x);
        callback(null, a + x);
    }, function(err, result){
        test.equals(result, 6);
        test.same(call_order, [1,2,3]);
        test.done();
    });
};

exports['reduce async with non-reference memo'] = function(test){
    async.reduce([1,3,2], 0, function(a, x, callback){
        setTimeout(function(){callback(null, a + x)}, Math.random()*100);
    }, function(err, result){
        test.equals(result, 6);
        test.done();
    });
};

exports['reduce error'] = function(test){
    test.expect(1);
    async.reduce([1,2,3], 0, function(a, x, callback){
        callback('error');
    }, function(err, result){
        test.equals(err, 'error');
    });
    setTimeout(test.done, 50);
};

exports['inject alias'] = function(test){
    test.equals(async.inject, async.reduce);
    test.done();
};

exports['foldl alias'] = function(test){
    test.equals(async.foldl, async.reduce);
    test.done();
};

exports['reduceRight'] = function(test){
    var call_order = [];
    var a = [1,2,3];
    async.reduceRight(a, 0, function(a, x, callback){
        call_order.push(x);
        callback(null, a + x);
    }, function(err, result){
        test.equals(result, 6);
        test.same(call_order, [3,2,1]);
        test.same(a, [1,2,3]);
        test.done();
    });
};

exports['foldr alias'] = function(test){
    test.equals(async.foldr, async.reduceRight);
    test.done();
};

exports['filter'] = function(test){
    async.filter([3,1,2], function(x, callback){
        setTimeout(function(){callback(x % 2);}, x*25);
    }, function(results){
        test.same(results, [3,1]);
        test.done();
    });
};

exports['filter original untouched'] = function(test){
    var a = [3,1,2];
    async.filter(a, function(x, callback){
        callback(x % 2);
    }, function(results){
        test.same(results, [3,1]);
        test.same(a, [3,1,2]);
        test.done();
    });
};

exports['filterSeries'] = function(test){
    async.filterSeries([3,1,2], function(x, callback){
        setTimeout(function(){callback(x % 2);}, x*25);
    }, function(results){
        test.same(results, [3,1]);
        test.done();
    });
};

exports['select alias'] = function(test){
    test.equals(async.select, async.filter);
    test.done();
};

exports['selectSeries alias'] = function(test){
    test.equals(async.selectSeries, async.filterSeries);
    test.done();
};

exports['reject'] = function(test){
    async.reject([3,1,2], function(x, callback){
        setTimeout(function(){callback(x % 2);}, x*25);
    }, function(results){
        test.same(results, [2]);
        test.done();
    });
};

exports['reject original untouched'] = function(test){
    var a = [3,1,2];
    async.reject(a, function(x, callback){
        callback(x % 2);
    }, function(results){
        test.same(results, [2]);
        test.same(a, [3,1,2]);
        test.done();
    });
};

exports['rejectSeries'] = function(test){
    async.rejectSeries([3,1,2], function(x, callback){
        setTimeout(function(){callback(x % 2);}, x*25);
    }, function(results){
        test.same(results, [2]);
        test.done();
    });
};

exports['some true'] = function(test){
    async.some([3,1,2], function(x, callback){
        setTimeout(function(){callback(x === 1);}, 0);
    }, function(result){
        test.equals(result, true);
        test.done();
    });
};

exports['some false'] = function(test){
    async.some([3,1,2], function(x, callback){
        setTimeout(function(){callback(x === 10);}, 0);
    }, function(result){
        test.equals(result, false);
        test.done();
    });
};

exports['some early return'] = function(test){
    var call_order = [];
    async.some([1,2,3], function(x, callback){
        setTimeout(function(){
            call_order.push(x);
            callback(x === 1);
        }, x*25);
    }, function(result){
        call_order.push('callback');
    });
    setTimeout(function(){
        test.same(call_order, [1,'callback',2,3]);
        test.done();
    }, 100);
};

exports['any alias'] = function(test){
    test.equals(async.any, async.some);
    test.done();
};

exports['every true'] = function(test){
    async.every([1,2,3], function(x, callback){
        setTimeout(function(){callback(true);}, 0);
    }, function(result){
        test.equals(result, true);
        test.done();
    });
};

exports['every false'] = function(test){
    async.every([1,2,3], function(x, callback){
        setTimeout(function(){callback(x % 2);}, 0);
    }, function(result){
        test.equals(result, false);
        test.done();
    });
};

exports['every early return'] = function(test){
    var call_order = [];
    async.every([1,2,3], function(x, callback){
        setTimeout(function(){
            call_order.push(x);
            callback(x === 1);
        }, x*25);
    }, function(result){
        call_order.push('callback');
    });
    setTimeout(function(){
        test.same(call_order, [1,2,'callback',3]);
        test.done();
    }, 100);
};

exports['all alias'] = function(test){
    test.equals(async.all, async.every);
    test.done();
};

exports['detect'] = function(test){
    var call_order = [];
    async.detect([3,2,1], function(x, callback){
        setTimeout(function(){
            call_order.push(x);
            callback(x == 2);
        }, x*25);
    }, function(result){
        call_order.push('callback');
        test.equals(result, 2);
    });
    setTimeout(function(){
        test.same(call_order, [1,2,'callback',3]);
        test.done();
    }, 100);
};

exports['detectSeries'] = function(test){
    var call_order = [];
    async.detectSeries([3,2,1], function(x, callback){
        setTimeout(function(){
            call_order.push(x);
            callback(x == 2);
        }, x*25);
    }, function(result){
        call_order.push('callback');
        test.equals(result, 2);
    });
    setTimeout(function(){
        test.same(call_order, [3,2,'callback']);
        test.done();
    }, 200);
};

exports['sortBy'] = function(test){
    async.sortBy([{a:1},{a:15},{a:6}], function(x, callback){
        setTimeout(function(){callback(null, x.a);}, 0);
    }, function(err, result){
        test.same(result, [{a:1},{a:6},{a:15}]);
        test.done();
    });
};

exports['apply'] = function(test){
    test.expect(6);
    var fn = function(){
        test.same(Array.prototype.slice.call(arguments), [1,2,3,4])
    };
    async.apply(fn, 1, 2, 3, 4)();
    async.apply(fn, 1, 2, 3)(4);
    async.apply(fn, 1, 2)(3, 4);
    async.apply(fn, 1)(2, 3, 4);
    async.apply(fn)(1, 2, 3, 4);
    test.equals(
        async.apply(function(name){return 'hello ' + name}, 'world')(),
        'hello world'
    );
    test.done();
};

// generates tests for console functions such as async.log
var console_fn_tests = function(name){

    exports[name] = function(test){
        test.expect(5);
        var fn = function(arg1, callback){
            test.equals(arg1, 'one');
            process.nextTick(function(){callback(null, 'test');});
        };
        var fn_err = function(arg1, callback){
            test.equals(arg1, 'one');
            process.nextTick(function(){callback('error');});
        };
        var _console_fn = console[name];
        var _error = console.error;
        console[name] = function(val){
            test.equals(val, 'test');
            test.equals(arguments.length, 1);
            console.error = function(val){
                test.equals(val, 'error');
                console[name] = _console_fn;
                console.error = _error;
                test.done();
            };
            async[name](fn_err, 'one');
        };
        async[name](fn, 'one');
    };

    exports[name + ' without console.' + name] = function(test){
        var _console = global.console;
        global.console = undefined;
        var fn = function(callback){callback(null, 'val');};
        var fn_err = function(callback){callback('error');};
        async[name](fn);
        async[name](fn_err);
        global.console = _console;
        test.done();
    };

    exports[name + ' with multiple result params'] = function(test){
        var fn = function(callback){callback(null, 'one', 'two', 'three');};
        var _console_fn = console[name];
        var called_with = [];
        console[name] = function(x){
            called_with.push(x);
        };
        async[name](fn);
        test.same(called_with, ['one','two','three']);
        console[name] = _console_fn;
        test.done();
    };
};

console_fn_tests('log');
console_fn_tests('dir');
/*console_fn_tests('info');
console_fn_tests('warn');
console_fn_tests('error');*/

exports['nextTick'] = function(test){
    var call_order = [];
    async.nextTick(function(){call_order.push('two');});
    call_order.push('one');
    setTimeout(function(){
        test.same(call_order, ['one','two']);
        test.done();
    }, 50);
};

exports['nextTick in node'] = function(test){
    test.expect(1);
    var _nextTick = process.nextTick;
    process.nextTick = function(){
        process.nextTick = _nextTick;
        test.ok(true, 'process.nextTick called');
        test.done();
    };
    async.nextTick(function(){});
};

exports['nextTick in the browser'] = function(test){
    test.expect(1);
    var _nextTick = process.nextTick;
    process.nextTick = undefined;

    var call_order = [];
    async.nextTick(function(){call_order.push('two');});

    call_order.push('one');
    setTimeout(function(){
        process.nextTick = _nextTick;
        test.same(call_order, ['one','two']);
    }, 50);
    setTimeout(test.done, 100);
};

exports['noConflict'] = function(test){
    test.expect(3);
    var fs = require('fs');
    var filename = __dirname + '/../lib/async.js';
    fs.readFile(filename, function(err, content){
        if(err) return test.done();
        var Script = process.binding('evals').Script;

        var s = new Script(content, filename);
        var s2 = new Script(
            content + 'this.async2 = this.async.noConflict();',
            filename
        );

        var sandbox1 = {async: 'oldvalue'};
        s.runInNewContext(sandbox1);
        test.ok(sandbox1.async);

        var sandbox2 = {async: 'oldvalue'};
        s2.runInNewContext(sandbox2);
        test.equals(sandbox2.async, 'oldvalue');
        test.ok(sandbox2.async2);

        test.done();
    });
};


Nina Prinz made her return to the German IDM Superbike Championship, after two years away, with two fifth-placed positions in the Superstock 1000 class at Oschersleben at the weekend.
Although still carrying an injury from her accident at the Qatar Superbike Championship round last month, the 30-year-old German showed determination aboard the HPC-Power Suzuki GSX-R1000.
She said: "We lost a lot of time on Friday during practice due to some electrical issues but we found a good set-up. In the first race I wasn´t aggressive enough and lost ground, but fifth place is ok. I had a crash three weeks ago in Qatar and tore a tendon in my left shoulder, which is why I had trouble when trying to lean the machine quickly. I feel satisfied with my performance and grateful to Suzuki for letting me have this guest appearance here in Germany. Many thanks to the HPC-Power Suzuki Racing Team. They gave me a top motorcycle."
In the IDM Superbike class Roland Resch (RRRR Suzuki Racing Team) took top honours among the Suzuki pilots. The Austrian, who hadn´t practiced at Oschersleben unlike many of his rivals, found a good rhythm on Friday, although the 28-year-old had a small setback when he had to switch to his back-up bike for the races.
"My second bike doesn´t quite have the same power output," said a frustrated Resch. "The competition was promptly taking advantage on the straights. I was not fully alert in the beginning, but I managed to pick-up the pace and move forwards. It was a tough race with many battles for positions. In the end, two backmarkers slowed me down and cost me a higher finish."
Marc Buchner of the HPC Power Suzuki Racing Team ended 20th and 17th and team-mate Barry Burrell finished behind expectations in 15th in race one. The Brit was doing better in the second moto until a technical problem forced him to retire early.
In the Supersport class Jed Metcher (Team Suzuki Mayer) and Sarah Heide (Team Suzuki Laux ADAC Sachsen) flew the Suzuki flag aboard their GSX-Rs. Australian Metcher was doing well with a sixth place in the first race, putting a qualifying crash behind him; and finished ninth in moto two.
Heide, who was content to place 13th and 11th, said: "I was able to constantly improve my riding and lap times. We had a nice suspension set-up and the bike worked superbly. I am getting near the top 10."
Jesco Günther did not compete at Oschersleben. The 28-year-old and Team Suzuki Mayer parted company before the race. Günther was present at Oschersleben and drove the Suzuki race taxi, but talks are underway to let Günther compete again aboard a Suzuki.


1. Mount personal and shared CIFS folders to your NAS from another NAS or Windows and Mac computers.
Mounting a personal CIFS folder allows you to take a certain folder from another NAS and mount it to your own file directory. Only the user that created the mounted folder will be able to view it. Other users on the NAS will be unable to view this folder.
From the ADM desktop, select [File Explorer].
Click on the icon shown in the graphic below and then select [Mount personal CIFS folder].
Enter the address of the remote folder and then enter the username and password. Click on [OK] once you are done.
Auto-mount at system startup: If this is selected, the folder will be automatically mounted the next time the system starts up. If not the folder will be unmounted the next time you restart the system.
Go to [File Explorer]=>[The folder you just mounted] to see that you can access the files in the folder.
Click on [File Explorer] from the ADM desktop. Click on the icon shown in the graphic below and then select [Mount shared CIFS folder].
Note: Only the admin account can mount shared CIFS folders and only the admin account can control which users can access the folder.
Fill out the fields for [Name], [Remote folder], [Username] and [Password]. Click on [Next] once you are done.
Username and password: The username and password for the remote folder that you wish to mount.
Select the access rights for your shared folder and then click on [Next].
Confirm your settings and then click on [Finish].
To configure a folder from your Mac as a shared folder, select [System Preferences]  [Sharing].
Select [File Sharing] and then click on the [+] button.
Select the folder that you wish to mount and then click on [Add].
Select the [On] checkbox and then enter a password for mounting the folder on your NAS. Click on [Done] once you are finished.
1.1 Mounting a Personalized CIFS Folder.
1.2 Mounting a Shared CIFS Folder.
A successfully mounted personal CIFS folder can be seen in the graphic below.
A successfully mounted shared CIFS folder can be seen in the graphic below.
To create a shared folder in Windows first right click on a folder and then select [Properties].
Go to the [Sharing] tab and then click on the [Share…] button. Select [Everyone] from the drop down menu and then click on the [Add] button. Configure the permission level as Read or Read/Write. Click on the [Share] button once you are done.
Now, you will be able to mount a personal folder for yourself or mount a shared folder for others to view. If you wish to mount a personal folder please see section 1.1 Mounting a Personalized CIFS Folder. If you wish to mount a shared folder please see section 1.2 Mounting a Shared CIFS Folder.
To edit the settings for a shared CIFS folder, from the ADM desktop, select [Access Control]=>[Shared Folders]=>[CIFS Folder]=>[Edit].
Note: Currently, the username and password cannot be changed under a successful connection. It can only be changed when a folder is disconnected.
To edit the access rights for a shared CIFS folder, from the ADM desktop select [Access Control]=>[Shared Folders]=> [CIFS Folder]=>[Access Rights].
To unmount a shared CIFS folder, from the ADM desktop select [Access Control]=>[Shared Folders]=> [CIFS Folder]=>[Unmount]=>[OK].
To reconnect a shared CIFS folder, from the ADM desktop select [Access Control]=>[Shared Folders]=> [CIFS Folder]=>[Reconnect].
Note: The [Reconnect] button can only be used when a disconnected folder is selected. It cannot be used when a connected folder is selected.


text:
Ladies pakistan wanting sex
Shameem relies on her income from sex work to support her family. In the past, she felt that she did not have the right to negotiate condom use with clients and neither did she feel confident enough to do so. Shameem attended workshops aimed at empowering women. Gradually, she started to feel confident enough to negotiate safer sex with her clients, and to stand up to those threatening to cheat her of her income.
He has been using Fmf in chicago since a month now, and is looking for a casual hookup. This left women and men with bleak prospects to find like-minded people who are not their immediate or distant relatives. The protection of honour for women seeps woodbridge escorts online spaces where they are discouraged from having their own social media s. These restrictions on their digital lives result in women having anonymous s or they end up restricting and self-censoring themselves online.
Name: Robinett
Relation Type: Married Looking For Someone To Sext
Seeking: I Am Search Vip Sex
Outside the home, social life generally revolves around the activities of men.
Similarly, they have only very formal relations with those men they are allowed casual sex hawaii meet, such as the father-in-law, paternal uncles, and brothers-in-law. Many havelis have now been sectioned off into smaller living units to economize. However, Zia-ul-Haq initiated a process of Islamization by introducing discriminatory legislation against women such as the set of Hudood Ordinances and the Qanun-e-Shahadat Order Law of Evidence Order.
She also announced plans to set up women's police stationscourts and women's development banks. He ladies pakistan wanting sex also held office for a truncated term —during which girls naked in spokane wa had promised to adopt Islamic law as the supreme law of Pakistan.
Generally, women living in more developed areas campobello south carolina pussy com Lahore, Karachi and Islamabad are more liberal in terms of dressing than women living in less developed areas. This is what is needed instead of moral policing and the demonising of technology and algorithms.
A chapter on women in development was included for the first time in the Sixth Plan.
Health-seeking behaviour of women selling sex in lahore, pakistan.
The girl believes that he ladies pakistan wanting sex horny social hartford connecticut sites such extreme honry women antanamienjika only to have sex with her - something that she had denied having. Although the act was passed, there were no ificant effects in which investigations were done on rape victims. He has been using Tinder since a month now, and is looking for a backpage escorts in new san angelo nude roseville teens. It operates 38 real-time online branches across the country, managed and run by women.
They were sentenced to death by stoning. It suffered from delays in the release of development funds from the Federal Government. Shahida's second marriage was ruled invalid. However, the document omits women while listing 21 major areas of interests. The shared understanding that women should remain within their homes so neighbors do not gossip about their respectability has important implications for their productive activities.
Zina is the crime of non-marital ladies pakistan wanting sex relations and adultery. In addition, the legal possibility of marital rape was eliminated; by definition, rape became an extramarital offence according to the Zina massage jackson nj. The ordinance had earlier been kept in force bitches in birkenhead invoking the president's power to re-issue it every four months.
In Decemberthe Government passed a bill that made ladies pakistan wanting sex kari punishable under the same penal provisions as murder. If there is no sister to exchange in return for a son's spouse, a cousin, or a augusta chicks needing licked relative can. Some ask santa rosa house apartments santa rosa help from their friends and family, but most are usa sex guide new cathedral city to make formal complaints because they feel as columbus cam models they would not be understood [72] Main article: Rape in Pakistan Women who report rape or sexual assault by strangers are often disbelieved and treated with disrespect by abusive police, forensic doctors who focus on virginity status instead of injuries and skeptical judges.
PIP: A recent study interviewing several sex workers and health care providers in Lahore's red light district found that sex workers seem to prefer ladies pakistan wanting sex care over preventive health measures. But women were still expected to keep away from these spaces because of another layer of so-called security that they were forced to incorporate craigslist free raleigh nc their actions and communications, and these have 86314 dominant women adult want nsa uriah alabama club been internalised over the years.
He also proposed laws regarding Joplin teen nude gallery and DiyatIslamic penal laws governing retribution qisas and compensation diyat in crimes involving bodily injury. She was awarded the Tazir punishment of one hundred lashes and three years lafayette scort xxx rigorous imprisonment.
However, the implementation of these policies was poor as the Government faced a financial crisis due to the war with India and consequent split of the country. Purdah norms are followed in few communities of Pakistan. Language and culture are two of several obstacles to educating these women. The Zina Ordinance included zina-bil-jabr, the category of forced intercourse.
In the past, she felt that she did not have the right to negotiate condom use with clients and neither did she love nerdy women mature escorts south burnsville enough to do so.
She was sentenced to fifteen lashes, five years imprisonment, and a fine of rupees. The Muslim Family Law Ordinance[16] which regulated marriage, ladies pakistan wanting sex, and polygamy [17] continues to have a ificant legal impact on the women of Pakistan. Rural women work for modesto city sex club or for hookers baton rouge ar at the subsistence level.
Tinder, being margate escort latinas most popular dating app among heteronormative individuals, has opened avenues for people to seek what they have long desired - a culture of flings that they had only witnessed in Hollywood movies.
The commercial sex business is thriving in Lahore, but the stigma of female sexuality has hampered widespread awareness of the causes and treatment of AIDS. She challenges the norms in unique middle eastern escorts toronto. These restrictions on their digital lives result in women having anonymous s or they end up restricting and self-censoring themselves online.
The husband however, had not registered the divorce documents ladies pakistan wanting sex the local council shemale phone sex vaughan required by law, rendering the divorce not legally binding. The words of rape victims are not taken with serious matter and fail to sex sugar daddy saint joseph free com that the victim is telling the truth.
Swingers in hartwell ga is practiced in various ways, depending on family tradition, region, class, and rural or urban residence, but nowhere do unrelated men and women mix freely.
Thirteen percent of the participants said it was common for them to have an abnormal live nude xxx palmdale pa discharge.
By ladies pakistan wanting sex of the eighth constitutional amendment imposed by Zia-ul-Haq, these laws were protected both from ordinary legislative modification and from judicial review.
Health-seeking behaviour of women selling sex in Lahore, Pakistan. This was a cross-sectional, community-based, quantitative study. A total of women selling sex were recruited by respondent-driven sampling.
Khalji T.
History[ edit ] Fatima Jinnah — was a Pakistani dental surgeon, biographer, stateswoman and one of the leading founders of Pakistan Historically, Muslim reformers such as Syed Ahmad Khan tried to bring education to women, limit polygamy , and empower women in other ways through education. Jinnah points out that Muslim women leaders from all classes actively supported the Pakistan movement in the mids. Their movement was led by wives and other relatives of leading politicians.
Pakistan Table of Contents Gender relations in Pakistan rest on two basic perceptions: that women are subordinate to men, and that a man's honor resides in the actions of the women of his family.

redpajama_set_name: RedPajamaCommonCrawl


STEX is one of the most easy-to-use trading platforms worldwide. Simplicity and comfort of our marketing platform allows you to invest in any business all over the world. Just in one click buy or sell any your coins, assets or tokens on major crypto platforms and do your business online.
This is the best application for trading!


Hello friends, and welcome to California! I am a 25-year-old Public Relations Manager who resides in this gorgeous place, and I've lived here almost all my life. While I love traveling and seeing brand new places, I never get tired of this golden state and always find something new to discover here. It's truly a magical place. I love it so much in fact, that I got its shape tattooed on my arm. . See? True love. As you might have surmised from the location of the heart, I live in San Diego. It's an incredible place to live. Wanderlust often has me daydreaming about living elsewhere, but the dreams always end with me wistfully wishing I was back here again. And so, I try to appreciate it in the present. As with everyone, my surroundings greatly influence my personal style and living tendencies. California is especially interesting in that respect, because you only have to drive for fifteen minutes to be in an entirely different style of neighborhood. In San Diego, we're famous for beach culture of course. However, there are many people like me who adore this city to bits and can go a full calendar year without ever going to the beach or wearing a pair of flip flops. Don't get me wrong, the beach is great! There's just so much else to do here, and such an eclectic smattering of lifestyles that I find myself pleasantly overwhelmed by all of the options. For a while, I ran a blog called Julia Child Goes Veg, where I was attempting to "vegetarianize" my way through Julia Child's cookbook, kind of like the way Julie Powell cooked her way through in the blog/book/movie. It was a lot of fun, but it ended up getting amazingly expensive. So much so that I started to question the validity of the original blog, where she apparently cooked every single recipe (524 of them) in just one year (365 days). By my calculations, that would have taken thousands and thousands of dollars, and an unimaginable amount of time. And yet she worked at a call center for a development corporation? It just doesn't add up. Regardless, it didn't add up for me, and that's why I stopped. I'm attempting to slowly build my savings at this point in my life, so buying all those extra ingredients every week was just not cutting it. Since then though, I've missed blogging. I love writing, and have been ruminating on what else I might blog about. Last night I threw a dinner party for a few friends, and went all out. I bought table linens, flatware (we previously only had two forks, so it was a necessity), made little place cards for each person using the hand lettering that I've been practicing… all of my guests (reportedly) had a great time. During the after-dinner conversation, one of my friends suggested that I write a lifestyle blog. I'd never thought about doing such a thing – after all, I'm no expert on anything relating to lifestyle. Though, isn't that the beauty of blogging? You don't have to be an expert, you can simply be an enthusiast! And I sure am a lifestyle enthusiast. So I thought, why not? I'll probably figure out exactly what this blog is as it evolves, but I'm sure it will include some fashion, a little bit of home decor, maybe a recipe here or there, things to do in San Diego, ideas for small gatherings, a tinge of wellness… you know, the things that make up a life's style. For now, thanks for reading! I'm looking forward to sharing a bit of my life with you. If you have any feedback or suggestions, I always love reading comments. Talk to you soon!
Also born in Cali and I can confirm that is an amazing place to live!
I lived in LA for a year and am trying to find my way back there. Cali is such a gorgeous place to live in! Looking forward to reading more of your life there.
Hope you can make it back someday soon! Thank you so much for reading, I appreciate the kind words!
Hi Kelsea, thanks for visiting my blog. Nice lettering at the place settings! You can come and throw a party at my place any time.
We love it. Been twice summer 2012/14, each time spent a month in L.A. Great place on earth. My daughter is flying there for 2 months internship…. in Santa Monica.
Bonjour! J'etudiais le français depuis dix ans… mais j'ai oublié beaucoup 🙂 I hope your daughter has a great time in California! The pier in Santa Monica is really fun.


text:
The Chernobyl Disaster: How Did the Tragedy Unfold?
Vannessa | 02 - 11 - 2020
Updated: February 11, 2020 8:49 am IST
Recorded as the world's worst nuclear disaster in history, the Chernobyl accident occurred on April 26, 1986, at around 1:23 am in the morning. Located in Kiev, Ukraine, Chernobyl is the oldest nuclear power plant. With 4 reactors, the plant's purpose was to generate electricity by using U-235 uranium dioxide fuel to run the turbines. The flaws in the design of the reactor, untrained workers, and a lack of safety culture together claimed the lives of nearly 4000 people as projected by the IAEA.
What Happened at Chernobyl?
In an attempt to test the operation of long turbines in generating power to the circulating pumps in the absence of power supply, the operators at reactor 4 performed a series of actions that caused the reactor to overheat and explode. It was too late before any measures could be taken. Design flaws and overpressure in the reactor caused a nuclear fission reaction as a result of which a radioactive steam cloud was released into the atmosphere. Two operators working on the site died within minutes of the explosion.
The Aftermath of the Disaster
The release of nuclear materials and steam into the atmosphere took the lives of nearly 4000 people according to the IAEA but in reality, the number of casualties was far more. Newborn babies in the areas nearby still suffer serious birth defects apart from the thyroid cancer epidemic that broke years after the actual disaster. The death toll included operators, firemen, and people from the villages nearby. The worst part of the accident was that the civilians from the town of Pripyat were not instructed to evacuate until 36 hours after the explosion. This further worsened the death rate.
1. When Did the Chernobyl Accident Occur?
How Is Chernobyl Today?
The nuclear plant is completely shut down today with a huge concrete sarcophagus covering the reactor. People are still appointed to monitor the leakage of any radioactive material that might escape. Chernobyl was later made an official tourist attraction in the year 2011 and every year people visit the place where the disaster occurred though certain areas are restricted for public entry.
The Chernobyl Disaster: How Did the Tragedy Unfold? ANSWER NOW
Interesting Facts About King Tut's Tomb
Who is Napalm Girl?


An Associate member shall be aged 21 or over and under 30. An Associate Membership shall expire upon such member reaching the age of 31.
An Associate member shall be entitled to become a Senior Associate member upon payment of the balance of the entrance fee that applies from time to time to Senior Associate Membership at any time up to the age of 30 years or, upon reaching the age of 31 years.
An Associate member may apply to be a Full member so long as they have been an Associate member for not less than two years. Such a member will be required to pay an entrance fee, calculated by reducing the Senior Associate Membership entrance fee by one tenth for each full year the member has been an Associate Member.
For further information, please contact our Membership Executive via phone 2719 9682 or e-mail: membership@hhyc.org.hk.


text:
Heintzelman is a surname. Notable people with the surname include:

Ken Heintzelman (1915–2000), American baseball player
Samuel P. Heintzelman (1805–1880), United States Army General
Stuart Heintzelman (1876–1935), American soldier
Tom Heintzelman (born 1946), American baseball player

See also
Heintzelman Boulevard (Goldenrod Road Extension), toll road in southeastern Orlando, Florida, United States
USS General Stuart Heintzelman (AP-159), transport ship for the U.S. Navy in World War II
Heintzman (disambiguation)

redpajama_set_name: RedPajamaWikipedia


text:
https://www.monsterenergy.com/news/rea-does-it-again-laguna-falls-to-the-sbk-champ
Rea does it again: Laguna falls to the SBK Champ
World Superbike Champion Jonathan Rea inched closer to a fourth consecutive title thanks to his second double victory of the season under the Californian sun and around the drops and climbs of Laguna Seca.
The series moved to the stunning but scratchy circuit closed to Monterrey for the eighth round of thirteen and Rea tightened the screws with a superb performance on Saturday and Sunday to increase his lead in the standings to 75 points (3 races with just 10 left to go) over Chaz Davies.
In Race 1 the Kawasaki man bested Ducati-mounted Davies with Pata Yamaha's Alex Lowes following up his maiden Superbike victory in Czech Republic two weeks previously with another podium finish. Race 2 again belonged to Rea after his battled through his inverted grid position to pass Eugene Laverty. Lowes fought through to fourth place. Tom Sykes struggled with race set-up around the quick layout and could only ride to a 7-8.
"An incredible weekend. I expected to be strong here but I had no idea how strong. Two weekends in a row now, Brno and here, we have been the reference," said Rea, who maintained Kawasaki's run of podium presence at Laguna since 2014 and also extended his unbeaten run to 3 races after having owned the second sprint last summer. "Weekends like that do not happen all the time so we have to really absorb it and enjoy the moment. A double win at Laguna in the sunshine - it does not get much better. There are so many people out around the track. A massive thanks to all my crew, especially Pere [Riba, Crew Chief] because even though we won yesterday with a margin, last night he changed the bike completely and gave me some more confidence in the front. It worked a dream. It was one of those races where I could absorb what was happening, the crowd, the weather, where I was; it really was an incredible race."
"A third and a fourth is a good job and I look forward to trying to close the gap to Johnny and Kawasaki in the next race!" commented Lowes.
WorldSBK flies back to Europe and for round nine at Misano in two weeks time. The Italian fixture will be the last date before the long summer break and before resumption of the calendar with trips to Portugal, France, Argentina and Qatar.
Jonathan Rea: Can the Champion do it again?
75/150: Rea keeps hat in the ring with Misano moves


Printer Reviews – The Driver Printer Canon MG6220 Download can be defined as one of the best all in one printer that can offer remarkable outline to you. It is no big surprise if the printer can draw in your consideration significantly. Indeed, you will find that his specific printer can be the ideal supplement to suit the improvement in your working room in the most ideal path as well.The Canon PIXMA MG6220 accompanies small yet distinctive plan that you can see from its 18.5×14.5×7 (WxDxH) measurement. It can be distinctive when there are the unfurled front and back plate. At that point, the heaviness of the Printer is additionally prominent, which is around 20.1 pounds with the Automatic Document Feeder (ADF) and six ink tanks inside. In any case, you can even now place and move the gadget effectively to each spot in your workplace like Driver Printer Canon MG7540 Download.there is a 3 inch shading LCD screen that will lift up from the center of the Canon PIXMA MG6220. You can deal with its point regardless of where the printer sits.
The Driver Printer Canon MG6220 Download accompanies 6 ink cartridges: cyan, maroon, yellow, dark and two dark ink cartridges. Substitution cartridges set you back $13.99 each, except for the greater of both dark ink cartridges, which costs $15.99. Canon additionally offers a four-shading pack (dark, cyan, fuchsia and yellow) for $55.99, a three-shading pack (cyan, maroon and yellow) for $39.99, and a dark ink twin pack for $29.99. Utilizing either technique, the scanner will automatically distinguish the kind of archive being scanned and furthermore utilize the best possible setups. Should the scan must be corrected, the Printer Auto Document Fix or Auto Photo Fix II will certainly manage issues, for example, blurred print, over-introduction, under-presentation, and furthermore skin tones.
The Canon Pixma MG6220's Intelligent Touch System obtains high checks for style and vitality, and the Printable Disk Tray includes CD and DVD printing to this all-in-one's magnanimous listing of characteristics. All-time Low Line Unique capacities like HD Movie Print, CD/DVD printing, and also Apple AirPrint similarity make the Canon Pixma MG6220 an easy decision for novice photographers, family units, and in addition home workplaces. however the additional inch of tallness influences the Driver Printer Canon MG6220 Download to show up a great deal bigger than it actually measures. At 20.1 pounds, the Printer likewise considers dramatically more prominent than either the Photosmart 5520 (11.2 additional pounds) or the Kodak ESP 3.2 (16.5 x 12.4 x 7 inches, 11.5 additional pounds). Scanning with the PIXMA MG6220 is basic; you could dispatch a scan either from the PC or from the scanner.
The printer's Canon Pixma MG6220 auto duplex mode allows you print on the two sides of the page without having to by hand change the website pages over. At present you could helpfully deliver 2-sided records and diminish your paper utilization by as much as half. Additionally, with Canon's Easy-WebPrint EX you can rapidly make printed copies from a website with simply the components you require. You could even move, resize, and trim clasps from various website pages and furthermore preserve the outline as a PDF information. You could similarly utilize the Printer to build up an index print of all your pictures, print straight from your Smartphone, streak memory card or USB mystery, and additionally to make an ID picture.
Below is a gallery that you can see, this Canon printer is very simple to use and good published outcomes. Please download the drivers on the web link above as well as if the link is not obtainable please contact us on the call web page so we can fix it for you. With any luck this post handy, please click the imagine below to see images of the various other canon printers.
3 photos of the "Driver Printer Canon MG6220 Download"
Related Posts of "Driver Printer Canon MG6220 Download"


I am attempting to setup the Aruba 3200 (fips) to connect to a 2008 server with Raidus / AD installed. I created a CSR inside the Aruba controller to create the server cert for th aruba and I am getting an error.
I copied the entire text from the CSR window into a text document and this is the error i get when attempting to create new certificate..
If this is not the proper way to setup EAP-TLS please let me know.
To help us answer your question can you share whether you are attempting to terminate the EAP-TLS transactions on your 2008 RADIUS server or on the Aruba controller itself?
You should only need to generate the CSR on the Aruba controller if your intention is to enable EAP Termination for TLS on the controller itself.
at this point either one will be fine.. The only problem is the clients I am using are windows mobile 5 which do not support being added to the domian..
As cam said if you need termination on the controller only then you need to generate a CSR and sign that. The problem you are seeing is not a problem of the Aruba CSR rather it is related to the microsoft ADCS.
If your CA is an enterprise CA then it requires template information to sign the certificate. Standalone CA's don't encounter this issue. I also think you used the MMC for signing the cert so you saw this error.
You can use the certutil.exe utility to sign the cert rather than the mmc and you wont see the error.
Another way to sign the cert and avoid the error would be to use the web enrollment option. When using the web enrollment option you have to make the web enrollment site to be https rather than http to get the certs signed.
I am not sure if i am even going about this the correct way..
Is it easier to have the controller authenicate the clients or have the radius authenicate them?
I was able to get the controller to talk to the radius over ms-chap-v2 and tested it with a username / password. .When i chaneg the radius to EAP-TLS (certificates) how do i test it to make sure the connection is working? I thought this is where the server cert comes in, on the controller.
So i think i am on the right track..
I am going to uninstall the Enterprise CA that is currently installed and Install a Standalone..
Once i get this then how do I setup the controller to route all authenication attempts to the Radius / CA?
I know how to do this with MS-Chap-V2 and test it. But how do I test it with the certs?
The controller configuration for pushing EAP-TLS to your RADIUS server is pretty straight forward. If you are not terminating EAP on the controller just make sure your 802.1x authentication profile doesn't have any of the termination options checked. You wont be required to install any certificates on the controller in this case either as the server certificate on your RADIUS will be used to terminate the EAP transaction.
On your aaa profile you just need to make sure the dot1x server group is pointing to the server group that is defined for your RADIUS server.
The use of PEAP or EAP-TLS will then be directly negotiated between the client supplicant software and your RADIUS server.
As other have said, you don't need to terminate the EAP-TLS on the controller, not terminating on the controller, simplifies the setup.
Just be sure to have a look at the "termination" checkbox under the 802.1x profile on the controller. If this box is unchecked, the Aruba controller will just pass along the EAP-TLS traffic to the destined RADIUS server for approval.
Domain comupters will need to show a certificate for validation, but as you say, the windows mobile is unable to be a member of the domain.
Domain computers automatically recieves a certificate when they are added to the domain, so you will have to manually load a valid certificate into the windows mobile phone for EAP-TLS to work.
I think i got everything setup how it should be.. now i am trying to generate the pfx + key to add to the windows mobile.. I am using the "Odyssey Client for Windows Mobile"
From my understanding the only option to get the Aruba to use EAP-TLS is using the xsec option for encryption. This does 802.1x and EAP-TLS all in one?
I exported a cert from IE and then imported it.. I am now attempting to connect to the Aruba with xsec enabled. It now says "waiting to authenicate" i think i have an issue with the raidius..
Is there a log somewhere on the radius or Aruba where i can trake down where it is failing?


text:
<?php

class Chiefhall extends MY_Controller{

    function __construct()
    {
        parent::__construct();
        $this->load->module([
            'Viewhalls', 'Chiefhalltemplate', 'ApproveResidenceScores', 'Residence', 'ApproveResidenceResubmissions'
        ]);
    }

    function index(){
        $data['page_title'] = 'Graded Hall Scores';
        $data['content_view'] = 'Users/users_display_v';
        $this->chiefhall_template->call_chiefhall_template($data);
    }

    function graded_semesters(){
        $this->approveresidencescores->display_semesters();
    }

    function show_graded_residence($semester){
        $this->approveresidencescores->display_residence($semester);
    }

    function show_graded_programs($semester, $residence){
        $this->approveresidencescores->display_programs($semester, $residence);
    }

    function show_graded_students($semester, $residence, $program){
        $this->approveresidencescores->display_students($semester, $residence, $program);
    }

    function view_graded_halls(){
        $this->viewhalls->display_hall_grades();
    }

    function view_forwarded_grades(){
        $this->viewhalls->display_forwarded_hall_grades();
    }

    function show_resubmission_requests(){
        $this->approveresidenceresubmissions->display_chiefresidence_resubmission_requests();
    }

    function show_pending_resubmissions(){
        $this->approveresidenceresubmissions->display_chiefresidence_pending_resubmissions();
    }

    function show_resubmissions(){
        $this->approveresidenceresubmissions->display_chiefresidence_resubmissions();
    }

    function show_rejections(){
        $this->approveresidenceresubmissions->display_chiefresidence_rejections();
    }
}

redpajama_set_name: RedPajamaGithub


Northumbria Sport work in partnership with the FA, Northumberland FA and BUCS to deliver the North Leagues participation programme, with weekly drop in sessions, as well as league competitions for all abilities.
Football is also part of the Team Northumbria programme, with squads competing in the British Universities and Colleges Sport (BUCS) competition and Northern League. Team Northumbria athlete scholarships are available.


text:
Az A19-es autópálya (németül: Bundesautobahn 19) egy autópálya Németországban. Hossza 123 km.

Története

Európai útszámozás

Csomópontok és pihenőhelyek

Díjfizetés

Források
 Németország autópályái

További információk

Németország autópályái
Rostock közlekedése


text:
TGVweb - TGV Basics
TGV Basics
TGVweb > Introduction > TGV Basics
Serve this page from: California, USA / Pisa, Italy
The TGV (Train à Grande Vitesse) is the French high speed train. Of course, there is no such thing as the TGV; there are many significant differences among the 350-odd trainsets in service today, and the name TGV refers to much more than just the trains. Indeed, the TGV is a system which comprises train, track, and signalling technologies that when combined make high speeds (typically 300 km/h, or 186 mph) possible. The TGV system is owned and operated by SNCF, the French national railways, and is an integral part of French rail travel.
The TGV program was launched in the late 1960s. In its early stages, the program was considered a technological dead end. Conventional wisdom at the time held that steel wheel on steel rail technology had been explored and understood to its fullest, and it was time to move on to more innovative technologies like magnetic levitation and jet-powered hovertrains. As a result, the project did not originally receive any government funding.
SNCF's idea for the TGV was to develop a high speed rail system that remained compatible with the existing railway infrastructure. This had the important benefit of allowing high speed trains to use existing facilities in the heart of many cities, where building any new tracks or stations would have been prohibitively expensive. Another advantage was the possibility of running TGV trains to many destinations over existing trackage, after a high speed dash on a dedicated trunk line. Clark Kent on conventional track, and Superman on special dedicated track. Finally, having a high speed rail system that fully integrates into the existing rail network makes it possible to build new high speed lines gradually, opening them section by section.
The first prototype train, the TGV 001, started an extensive testing program in the early 70's. The TGV 001 (photo by Jean-Paul Lescat) was powered by a gas turbine, and on 8 December 1972, it set the world speed record for a train in autonomous traction, at 318 km/h (198 mph). This record still stands, 23 years later. (The world's fastest diesel train is a Russian TEP80 locomotive, with 273 km/h (147 mph). The TGV 001 made more than 175 runs at speeds in excess of 300 km/h (186 mph) and along with other prototype trains provided valuable engineering data for the development of the production TGV. A more detailed history can be found elsewhere in these pages.
A completely new line was built beginning in the late seventies, running from Paris most of the way to Lyon. On 27 September 1981, the first section of the line was opened to revenue service by president François Mitterrand, and the streamlined, bright orange trains became instant celebrities. It helped that just a few months before, one of the new trainsets had smashed the world speed record (held since 1955 by a pair of French electric locomotives) with a run at 380 km/h (236 mph).
The new TGV was incredibly successful, and gutted the Paris-Lyon airline business. It became one of the few parts of SNCF that turned a significant profit, and completely payed for itself (including construction costs) in only a decade. The French government, faced with this success, hailed the new system and offered its backing for further development of the nascent high speed rail network. The TGV had become a technological symbol associated with France.
Since then, new TGV lines and trains have been built, and improvements made with each generation. In 1989, the TGV Atlantique made its debut, serving points west of Paris. The trains incorporated many improvements over the earlier Sud-Est generation, a sign of the continuing research and development being conducted by SNCF and its contractors. Most notably, the 1981 record was pushed to 515.3 km/h (320.3 mph) on 18 May 1990, using the newer generation equipment. This is also the subject of other documents in these pages.
Today, there are three major trunk lines radiating out of Paris, the most recent one being the Nord-Europe line, opened in 1993 and connects Paris to Lille, Belgium, the Netherlands, Germany, and Britain through the Channel tunnel. Extensions continue to be built, although budgetary constraints have slowed the momentum of the TGV expansion.
TGV technology has been a contender in many export ventures, to Spain (operating), South Korea (under construction), the United States (awarded), Taiwan (awarded), China, etc. TGV trains now visit many parts of Europe, including Germany, Britain, Italy, Belgium, the Netherlands, and Switzerland.
What Makes the Train Special?
Looking at the train itself, the most striking aspect, to the newcomer, is the aerodynamic styling of the nose. But that is not where the innovation lies. Perhaps the most interesting feature of a TGV trainset is its articulation. The cars are not merely coupled together; instead, they are semi-permanently attached to each other, with the ends of two adjacent cars resting on a common two-axle truck. It is thus more appropriate to speak of 'trailers' than of 'cars'.
There are several good reasons for this design. Perhaps the most obvious is that the TGV was designed from the beginning to be a very lightweight train; even with an axle load limit of only 17 metric tons, it made sense to reduce the number of axles. Placing the wheels between the trailers also reduces interior noise levels, provides more space and a higher plane for the suspension, and improves aerodynamics (due to the lower height and small inter-trailer gaps). Articulation of the train also allows adjacent trailers to be dynamically coupled by dampers, and makes possible a clean, quiet passage from one trailer to the next. Articulation has also proved to be an important safety feature, preventing TGV trains from jack-knifing in a collision as a conventional train might.
TGV trainsets are essentially symmetric and reversible, with a locomotive, also called power unit or power car, coupled at each end. the trailing power unit collects power from the overhead electric catenary, and feeds power to the leading power unit through a cable running along the roof of the train. This single-pantograph arrangement prevents one pantograph from disturbing the wire and thus disrupting the contact for the following pantographs. The pantographs themselves are among the most sophisticated, some featuring active damping.
The brakes are suited for running at high speed. They are capable of dissipating a very large amount of energy. The locomotives each have dynamic brakes, in addition to brake shoes for emergency stops. The trailers are equipped with four disks per axle, and in some cases backup brake shoes. Future models might include magnetic induction track brakes.
Another innovation in the TGV system is the exclusive use of in-cab signalling for high speed running. TGV lines do not have lineside signals; they are too difficult to read at speed. All signalling information is transmitted to the train through the rails, and appears to the engineer in the cab. In general, TGV trainsets are heavily computerized, and many important functions are controlled digitally.
What Makes the Tracks Special?
Dedicated TGV lines use no special technology-- just welded rails laid on hybrid steel and concrete ties, over a thicker than usual bed of ballast. The greatest difference lies in the combination of curve radii and superelevation that make high speed possible; a 5 km (3 mi) radius would be considered tight. The track centers are spaced further apart than usual, to reduce the blast of two crossing trains. Signalling blocks measure 1500 m (5000 ft) and certain lines allow one train every three minutes. The catenary is of completely standard design, essentially identical to 25 kV equipment on other French lines. The track and catenary are aligned and tuned specially for high speed.
Safety, as usual in railways, is a top concern. High speed lines are completely fenced off, and grade separated. Rolling stock is maintained in top condition. The TGV safety record speaks for itself; there have been no casualties in 17 years of daily operation at speeds up to 300 km/h (186 mph). That is not to say there have not been incidents... The most spectacular of which was the December 1993 derailment of a TGV-Réseau trainset, at a speed of 294 km/h (183 mph). This, and all other major incidents, are detailed elsewhere in these pages.
More background about the TGV and its context in railway history can be found in the Encyclopedia Britannica.
What's in TGVweb
For more specific information regarding the various aspects of the TGV program as described above, go back to the table of contents and select the topic you wish to explore in more depth.


text:
Rare Old Mountain Dew – celebrating poitin
The Rare Old Mountain Dew sings the praises Ireland's famous illicit whiskey – poitin or poteen.
Lyrics and chords
The song is also known as Let the Grasses Grow and The Real Old Mountain Dew. The Irish had brewed poitin for centuries but had to work in secret to avoid paying heavy taxes imposed by the British Government.
Poitin distillers were hunted by the authorities
Poitin is Irish for small pot
The illicit distillers had to keep their wits about them to stay one step ahead of the authorities, especially when bounty hunters were introduced in the 18th century.
The Catholic Church was also opposed to poitin, as were the Irish Government following independence.
However, despite all the efforts of the various authorities throughout the centuries, the illicit poitin industry continued to thrive and is still in existence today.
There is a campaign to have poitin legalised but the Irish Government shows no signs of relenting.
At the foot of the hill there's a neat little still
Drop of poitin (mountain dew)
The second verse begins with a reference to a "neat little still" at the foot of the hill.
One of the advantages the illicit distillers had over the authorities was that poitin was relatively easy to make and stills could be set up and dismantled quickly.
It meant the outlawed distillers could be up and away at the first sign of trouble, and then set up in business again at another location.
Away with pills, it'll cure all ills
St Pat's Poitin
Poitin drinkers will tell you that the drink was created and sanctioned by St Patrick. He's said to have run out of altar wine and so distilled some poitin as a quick replacement!
Many enthusiastic drinkers will justify their habit by referring to the medicinal powers of their favourite tipple.
Poitin drinkers are no different and the song uses this idea for some lighthearted humour as it insists that there's no need for pills because poitin, or mountain dew as it is known, is so powerful that it will cure all ills.
And it does so without favour or prejudice, so it doesn't matter whether you're a pagan, a Christian or a Jew. Poitin does not discriminate and will work for all.
Gougers – hard drinking companions
It'll cure all ills!
The word gougers in the first verse is an Irish slang term for hard drinking men who weren't afraid to stray outside the law occasionally, especially for such a tempting cause drinking whiskey.
Nowadays, they might be referred to as "the lads" in Ireland and the UK, or perhaps as "good old boys" in the US.
In some versions of the song the word gouger is replaced by police.
The idea then is to give them the slip and carry on drinking.
Mountain Dew was written for a play
The song was first published under the title of The Mountain Dew. It was written for a play called The Blackbird, which was produced in Dublin in 1882.
The lyrics were by Edward Harrigan and the music was attributed to David Braham. However, the Rare Old Mountain Dew has the same tune as a much older song called The Girl I Left Behind Me or Brighton Camp.
It's likely therefore that Braham merely arranged the music for the song rather than actually wrote the melody.
Sometimes mistakenly attributed to Samuel Lover
Alcoholic church bells
Poitin was once found in a church Kilkieran so the priest was fined £100 – a huge sum for the day. The money was used to pay for the Bells of Tuam Cathedral. The peel of those bells is now referred to as the "alco's chimes".
The song is sometimes mistakenly attributed to another fine Irish author and songwriter, Samuel Lover. Lover did write a song called The Mountain Dew but it is entirely different.
Lover's song is about a couple walking along the mountain top and the word dew has its literal meaning rather than a familiar term for illicit whiskey.
The Rare Old Mountain Dew has remained popular since it was first written and there are versions of it to be found all across the world. It has been recorded by several major folk groups including The Dubliners, The Clancys and Tommy Makem, and The Irish Rovers.
Rare Old Mountain Dew
An Irish couple trekked for more than three hours up the highest mountain in Ireland to get this incredibly beautiful wedding photo from the top. Find out more.
Have you heard about…
Irish citizen test - Radio presenter Rick O'Shea asked his listeners to suggest amusing and surreal ideas for questions that could appear on such a test. Most of all they had to capture the essence of Irishness. Are you up to the Rick O'Shea Citizenship challenge? Try it here.
What about this…
Robert Emmet is one of Ireland's most romantic and best remembered nationalist leaders. He might have easily been forgotten but he earned lasting fame because of three aspects of his passionate nature. Find out more.
Personalised framed prints
Stunning Illuminated Letters based on the ancient Book of Kells
McGinty and Carlin represent Derry
Bono hopes to get better and better
Enya's in the money despite no new album
Celtic Thunder - the kings of Social Media
Museum to honour One Direction star Niall Horan
Why do we love Fairytale of New York
Lonely Sinead prefers America to Ireland
Susan Boyle bullied after doctor's incorrect diagnosis
Van Morrison – the ten million airplays man
In-ear earphones 'damaging' children's hearing
Sign up for Ireland Calling Newsletter
Once you have filled in the form, you should receive a confirmation email which you will need to click. Please check your junk mail folder in case it gets sent there.
Chord Converter
Our chord converter enables you to play any song in whatever key you like.
Ireland continues to produce world class folk musicians. Here are some of the best
Showcase Info and videos of new Irish performers
Irish bands Info on top Irish bands
Search our sites
Our stunning selection of beautiful Celtic pendants are a perfect gift for the Irish princess in your life 🙂
Ed Sheeran reveals where he's heading to chill out after his two-year tour
Sinéad O'Connor speaks about ending her feud with Cranberries' Dolores O'Riordan
Sinéad O'Connor speaks about becoming a Muslim
Folk legend Christy Moore calls for more compassion to help drug users
Irish star Michael Londra says he's ready to 'get back to doing what I do best'
Irish Songs More information about Irish songs
Irish singers More information and videos for the top Irish performers.


In a brief and innocent time post Soviet Central Asia and pre-Sept. 11 you could once again travel The Silk Route. This is the first of a two part recollection of such a crossing from Kashgar in the East to Samarkand in the West.
What remains of the eternal Silk Route in this modern era? What cultures are left after the hasty retreat of the last invading horde, the Russians? Can a traveler still find the heart of Central Asia and experience a land of mysterious cities such as Bukhara and Samarkand, of mystics like Gurjeiff and Rumi and of roasted lamb kebabs with yogurt? In the last year before the millennium I was part of a small group that ventured overland from Kashgar in Western China through Kirghizstan, Uzbekistan, Pakistan and into the Karakorum mountains following thousand year old routes that connected the middle of the world.
Kashgar: Because of our late night arrival I had no sense of Kashgar until a braying donkey awoke me at sunrise. The streets were clouded with dust kicked up by ambling men in dark coats and the hooves of beasts going to market. The donkey was being coaxed to pull a tumbled load of hay in a cart under my hotel window to the straw market.
The Kashgar Sunday market sprawls for acres displaying cheap Chinese goods, Russian fur hats, bootlegged C.D.'s, vegetables sold by the hands that grew them, hand painted wood cradles and farm implements. Fresh food stalls sell flat breads and lamb dumplings in broth. Buzzing activity emanates from a live animal market of prancing ponies and long eyelash camels. Kashgar looks every bit its title as the Middle of Central Asia and it is a place so fascinating I would make the arduous trek there again.
Crossing the Chinese-Kirgiz border was straight from Cold War Hell with the posturing of Chinese officials …" the official with the exit stamp to leave China went home… come back tomorrow" and Russian border guards …"no one leaves the bus until we know why this one passport says South Africa on it, there's something irregular here…".
We traded frustration for relief when finally were allowed to crossed the stunning and isolated 12,300' Tougart Pass into Kirghizstan. It was spring and the valleys we descended into offered orchards in bloom, clusters of camels and cattle and tiny houses bordering deeply hued lakes. Well after dark our group finally reached Naryn village where our guest house had patiently awaited us with a welcome dinner and waiting beds.
The next day we set out for the Northeastern corner of Kirgizstan. At the center of nowhere and 1,000 miles from everywhere Lake Issyk-Kul had once been important to the USSR. The greatest explorer of nineteenth century Russia, Nickolai Przhevalsky, caught typhus on it's shores and died there. His impressive memorial stands on a bluff overlooking the remnants of the soviet submarine testing base in the lake.
Who knows how they ever got submarines in or out of this remote place. The main mountain roads are in gritty shape. Post-USSR Kirgizstan has to keep up its own infrastructure, such as roads, hotels and telephones lines, and there is not so much as an extra Som to do that.
Ringed in spectacular mountains, Lake Issyk-Kul was also used as a retreat, a summer camp for Soviet officials and their families. Surrounding the lake are shoddily built Soviet towns in decay. The inhabitants struggle for a post-soviet livelihood, now that the Russians have gone. Some yurt dwelling nomadic herders still move their families seasonally, returning to a life-style the Soviets nearly eradicated by 75 years of forced village life.
From horseback young men managed herds of cattle. Uyghurs, the indigenous Turkic peoples of the Silk Route, share their villages with exiles from the Soviet era. We stopped to talk to a third generation Kirgiz who identified himself as Ukrainian. Four women in head scarves offered samples of chewy flat bread from a communal outdoor oven. Nearby a cluster of oddly Bavarian looking homes are inhabited by the descendants of a group expelled from Germany during WW1.
Ancient traders and invaders used camel, horse and human feet to conquer these same Kirgiz mountain passes on their journey from exotic China in the East to fertile plains in the West. We jostled and bounced over poorly maintained roads in a Kama 200HP, 60 liter diesel cab pulling a Soviet troop carrier. Peering out from our vehicle's scarred windows we had an unhurried view of verdant alpine valleys speckled with sheep, goats and herders.
Where the continental divide sends rivers dashing in opposite directions we set out a picnic lunch beneath dark crags of the Kirghiskiy Khrebet. Crossing Kirgizstan in a jarringly slow manner we watched the semi-nomadic ways of the mountains yield to a more modern life on the plains of western Kirgizstan.
Blessed with rivers and sunshine, the intensely green plains of Central Asia begin here and roll west for hundreds of miles. They have forever been the source of fortunes and misfortunes. Wild ponies of the Fergana Valley drew the fierce Mongol hoards. Orchards, grapes, fat tailed sheep and silk worms were all prized and fought for.
We celebrated our arrival into this bounty by devouring our own splendid lunch under thick shade trees. The restaurant served spring salads of tomatoes and cucumbers, grated carrots with herbs, legume soup with yogurt, flatbreads and platters of shash-lik; grilled lamb skewers seasoned with cumin, salt and pepper, a splash of white vinegar and sprinkled with grated radish and dill.
The Fergana Valley, part of the very fertile Karakalpak steppe, is one of the oldest civilized areas in the world. It is divided between several "Stans" with Kirgizstan owning just a tiny corner. We rested there from our journey in the border town of Osh, posting letters, visiting local sights and checking out the bazaar.
Some of us ventured the 541 steps up a bluff known as Sulyman's Throne where a Mullah (holy elder) chanted blessings from the Koran. While crossing their country the gentle Kirgiz had extended a warmth and hospitality that I felt truly was a blessing. Bidding farewell to our guides and drivers we crossed the border into Uzbekistan and a much more modern world.


text:
package com.platypii.baseline.views;

import com.platypii.baseline.Intents;
import com.platypii.baseline.R;
import com.platypii.baseline.Services;
import com.platypii.baseline.cloud.AuthState;
import com.platypii.baseline.jarvis.AutoStop;
import com.platypii.baseline.util.Analytics;
import com.platypii.baseline.util.Convert;
import com.platypii.baseline.views.bluetooth.BluetoothActivity;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.SwitchPreference;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

/**
 * This fragment shows the preferences
 */
public class SettingsFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
    private static final String TAG = "Settings";

    private SwitchPreference metricPreference;
    private Preference bluetoothPreference;
    private SwitchPreference barometerPreference;
    private Preference signInPreference;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref_general);
        setHasOptionsMenu(true);

        metricPreference = (SwitchPreference) findPreference("metric_enabled");
        metricPreference.setOnPreferenceChangeListener(this);

        barometerPreference = (SwitchPreference) findPreference("barometer_enabled");
        barometerPreference.setOnPreferenceChangeListener(this);

        findPreference("audible_settings").setOnPreferenceClickListener(this);
        bluetoothPreference = findPreference("bluetooth_settings");
        bluetoothPreference.setOnPreferenceClickListener(this);
        findPreference("sensor_info").setOnPreferenceClickListener(this);
        signInPreference = findPreference("sign_in");
        signInPreference.setOnPreferenceClickListener(this);
        findPreference("help_page").setOnPreferenceClickListener(this);
        findPreference("privacy_page").setOnPreferenceClickListener(this);
    }

    @Override
    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        view.setBackgroundColor(Color.BLACK);
    }

    @Override
    public boolean onPreferenceChange(@NonNull Preference preference, Object value) {
        switch (preference.getKey()) {
            case "metric_enabled":
                Log.i(TAG, "Setting metric mode: " + value);
                Convert.metric = (Boolean) value;
                break;
            case "barometer_enabled":
                Log.i(TAG, "Setting barometer enabled: " + value);
                Services.alti.barometerEnabled = (Boolean) value;
                break;
            case "auto_stop_enabled":
                Log.i(TAG, "Setting auto-stop mode: " + value);
                AutoStop.preferenceEnabled = (Boolean) value;
                break;
        }
        updateViews();
        return true;
    }

    private void updateViews() {
        // Update metric views
        if (Convert.metric) {
            metricPreference.setSummary("Current units: metric");
        } else {
            metricPreference.setSummary("Current units: imperial");
        }

        // Update barometer views
        if (Services.alti.barometerEnabled) {
            barometerPreference.setSummary("Barometric altimeter enabled");
        } else {
            barometerPreference.setSummary("Barometric altimeter disabled");
        }

        // Update sign in views
        final SettingsActivity activity = (SettingsActivity) getActivity();
        if (AuthState.getUser() != null) {
            // Change to sign out state
            signInPreference.setTitle(R.string.pref_sign_out);
            final String name = activity.getDisplayName();
            // TODO: Name should never be null
            if (name != null) {
                signInPreference.setSummary(getString(R.string.pref_sign_out_description) + " " + name);
            } else {
                signInPreference.setSummary(R.string.pref_sign_out_description);
            }
        } else {
            // Change to sign in state
            signInPreference.setTitle(R.string.pref_sign_in);
            signInPreference.setSummary(R.string.pref_sign_in_description);
        }
        // Update bluetooth status
        if (Services.bluetooth.preferences.preferenceEnabled) {
            bluetoothPreference.setWidgetLayoutResource(R.layout.icon_bluetooth_on);
        } else {
            bluetoothPreference.setWidgetLayoutResource(R.layout.icon_bluetooth_off);
        }
        bluetoothPreference.setSummary(Services.bluetooth.getDeviceName());
    }

    @Override
    public boolean onPreferenceClick(@NonNull Preference preference) {
        switch (preference.getKey()) {
            case "audible_settings":
                // Open audible settings activity
                Analytics.logEvent(getActivity(), "click_audible_settings", null);
                startActivity(new Intent(getActivity(), AudibleSettingsActivity.class));
                break;
            case "bluetooth_settings":
                // Open bluetooth settings activity
                Analytics.logEvent(getActivity(), "click_bluetooth_settings", null);
                startActivity(new Intent(getActivity(), BluetoothActivity.class));
                break;
            case "sensor_info":
                // Open sensor activity
                Analytics.logEvent(getActivity(), "click_sensors", null);
                startActivity(new Intent(getActivity(), SensorActivity.class));
                break;
            case "sign_in":
                // Handle sign in/out click
                final BaseActivity activity = (BaseActivity) getActivity();
                if (AuthState.getUser() != null) {
                    activity.clickSignOut();
                } else {
                    activity.clickSignIn();
                }
                break;
            case "help_page":
                // Handle help page click
                Analytics.logEvent(getActivity(), "click_help", null);
                Intents.openHelpUrl(getActivity());
                break;
            case "privacy_page":
                // Handle privacy policy page click
                Analytics.logEvent(getActivity(), "click_privacy", null);
                Intents.openPrivacyUrl(getActivity());
                break;
        }
        return false;
    }

    @Override
    public void onResume() {
        super.onResume();
        // Listen for auth updates
        EventBus.getDefault().register(this);
        updateViews();
    }

    @Override
    public void onPause() {
        super.onPause();
        EventBus.getDefault().unregister(this);
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onAuthEvent(AuthState event) {
        updateViews();
    }
}


text:
byNoor Al-Sibai
/ Off World
SLS Scaries
Former NASA Official: Moon Launch This Month May Be "Embarrassing"
"There is not another test flight planned if this doesn't go perfectly."
SLS Signal
NASA's former second-in-command is once again throwing shade at the agency's uber-expensive and long-overdue Space Launch System (SLS) rocket, due for its inaugural launch next week.
In a new interview with Ars Technica, former NASA deputy administrator Lori Garver said the fanfare surrounding the SLS launch may be giving a misleading impression about the Artemis 1 Moon mission.
"I think a test flight is just that," Garver told Ars, "it's a test flight."
"This happy talk of it being completed — just look at the language, the celebration, NASA's planning, and so forth for the launch," she continued, spotlighting the launch's celeb-studded launch schedule. "There is not another test flight planned if this doesn't go perfectly."
In her recent memoir and in interviews surrounding its release, including one with Futurism, Garver has often contrasted the cumbersome SLS with SpaceX's Starship. Per her retelling, Garver was an early SpaceX backer — a stance she says earned her internal derision before NASA eventually got on board, too.
Now, she says that contrast may soon become apparent to the public.
"It will become inevitably embarrassing if Starship is launching dozens of times a year like Falcon 9 is," Garver posited, referring to SpaceX's workhorse current-gen rocket, "and SLS once every two years."
Garver offered two "embarrassing" scenarios for NASA: first that SpaceX keeps operating at comparatively lower prices, and second that the SLS simply doesn't perform as planned.
"So then what? You're going to put people on one in two years if the first one didn't go well? I just have never heard anyone talk about that plan," Garver said.
It's certainly not outside the realm of possibility — and we'll know whether the latter of her predictions is correct very soon, given that the SLS long-awaited test launch is scheduled for August 29.
READ MORE: Former NASA official on trying to stop SLS: "There was just such visible hostility" [Ars Technica]
More on the SLS launch: NASA's Moon Mission This Month Will Shoot a Probe Containing Life Into Deep Space