text:
from io import BytesIO
from struct import pack
from random import randint, choice
import time

from test_framework.authproxy import JSONRPCException
from test_framework.blocktools import create_coinbase, create_block
from test_framework.key import CECKey
from test_framework.messages import CTransaction, CTxOut, CTxIn, COIN, msg_block
from test_framework.mininode import network_thread_start
from test_framework.test_framework import BitcoinTestFramework
from test_framework.script import CScript, OP_CHECKSIG
from test_framework.util import hash256, bytes_to_hex_str, hex_str_to_bytes, connect_nodes_bi, p2p_port

from .util import TestNode, create_transaction, utxo_to_stakingPrevOuts, dir_size
''' -------------------------------------------------------------------------
PIVX_FakeStakeTest CLASS ----------------------------------------------------

General Test Class to be extended by individual tests for each attack test
'''
class PIVX_FakeStakeTest(BitcoinTestFramework):

    def set_test_params(self):
        ''' Setup test environment
        :param:
        :return:
        '''
        self.setup_clean_chain = True
        self.num_nodes = 1
        self.extra_args = [['-staking=1', '-debug=net']]*self.num_nodes

    def setup_network(self):
        ''' Can't rely on syncing all the nodes when staking=1
        :param:
        :return:
        '''
        self.setup_nodes()
        for i in range(self.num_nodes - 1):
            for j in range(i+1, self.num_nodes):
                connect_nodes_bi(self.nodes, i, j)

    def init_test(self):
        ''' Initializes test parameters
        :param:
        :return:
        '''
        self.log.info("\n\n*** Starting %s ***\n------------------------\n%s\n", self.__class__.__name__, self.description)
        # Global Test parameters (override in run_test)
        self.DEFAULT_FEE = 0.1
        # Spam blocks to send in current test
        self.NUM_BLOCKS = 30

        # Setup the p2p connections and start up the network thread.
        self.test_nodes = []
        for i in range(self.num_nodes):
            self.test_nodes.append(TestNode())
            self.test_nodes[i].peer_connect('127.0.0.1', p2p_port(i))

        network_thread_start()  # Start up network handling in another thread
        self.node = self.nodes[0]

        # Let the test nodes get in sync
        for i in range(self.num_nodes):
            self.test_nodes[i].wait_for_verack()

    def run_test(self):
        ''' Performs the attack of this test - run init_test first.
        :param:
        :return:
        '''
        self.description = ""
        self.init_test()
        return

    def create_spam_block(self, hashPrevBlock, stakingPrevOuts, height, fStakeDoubleSpent=False, fZPoS=False, spendingPrevOuts={}):
        ''' creates a block to spam the network with
        :param   hashPrevBlock:      (hex string) hash of previous block
                 stakingPrevOuts:    ({COutPoint --> (int, int, int, str)} dictionary)
                                      map outpoints (to be used as staking inputs) to amount, block_time, nStakeModifier, hashStake
                 height:             (int) block height
                 fStakeDoubleSpent:  (bool) spend the coinstake input inside the block
                 fZPoS:              (bool) stake the block with zerocoin
                 spendingPrevOuts:   ({COutPoint --> (int, int, int, str)} dictionary)
                                      map outpoints (to be used as tx inputs) to amount, block_time, nStakeModifier, hashStake
        :return  block:              (CBlock) generated block
        '''

        self.log.info("Creating Spam Block")

        # If not given inputs to create spam txes, use a copy of the staking inputs
        if len(spendingPrevOuts) == 0:
            spendingPrevOuts = dict(stakingPrevOuts)

        # Get current time
        current_time = int(time.time())
        nTime = current_time & 0xfffffff0

        # Create coinbase TX
        # Even if PoS blocks have empty coinbase vout, the height is required for the vin script
        coinbase = create_coinbase(height)
        coinbase.vout[0].nValue = 0
        coinbase.vout[0].scriptPubKey = b""
        coinbase.nTime = nTime
        coinbase.rehash()

        # Create Block with coinbase
        block = create_block(int(hashPrevBlock, 16), coinbase, nTime)

        # Find valid kernel hash - Create a new private key used for block signing.
        if not block.solve_stake(stakingPrevOuts):
            raise Exception("Not able to solve for any prev_outpoint")

        self.log.info("Stake found. Signing block...")

        # Sign coinstake TX and add it to the block
        signed_stake_tx = self.sign_stake_tx(block, stakingPrevOuts[block.prevoutStake][0], fZPoS)
        block.vtx.append(signed_stake_tx)

        # Remove coinstake input prevout unless we want to try double spending in the same block.
        # Skip for zPoS as the spendingPrevouts are just regular UTXOs
        if not fZPoS and not fStakeDoubleSpent:
            del spendingPrevOuts[block.prevoutStake]

        # remove a random prevout from the list
        # (to randomize block creation if the same height is picked two times)
        del spendingPrevOuts[choice(list(spendingPrevOuts))]

        # Create spam for the block. Sign the spendingPrevouts
        self.log.info("Creating spam TXes...")
        for outPoint in spendingPrevOuts:
            value_out = int(spendingPrevOuts[outPoint][0] - self.DEFAULT_FEE * COIN)
            tx = create_transaction(outPoint, b"", value_out, nTime, scriptPubKey=CScript([self.block_sig_key.get_pubkey(), OP_CHECKSIG]))
            # sign txes
            signed_tx_hex = self.node.signrawtransaction(bytes_to_hex_str(tx.serialize()))['hex']
            signed_tx = CTransaction()
            signed_tx.deserialize(BytesIO(hex_str_to_bytes(signed_tx_hex)))
            block.vtx.append(signed_tx)

        # Get correct MerkleRoot and rehash block
        block.hashMerkleRoot = block.calc_merkle_root()
        block.rehash()

        # Sign block with coinstake key and return it
        block.sign_block(self.block_sig_key)
        return block

    def spend_utxo(self, utxo, address_list):
        ''' spend amount from previously unspent output to a provided address
        :param      utxo:           (JSON) returned from listunspent used as input
                    addresslist:    (string) destination address
        :return:    txhash:         (string) tx hash if successful, empty string otherwise
        '''
        try:
            inputs = [{"txid":utxo["txid"], "vout":utxo["vout"]}]
            out_amount = (float(utxo["amount"]) - self.DEFAULT_FEE)/len(address_list)
            outputs = {}
            for address in address_list:
                outputs[address] = out_amount
            spendingTx = self.node.createrawtransaction(inputs, outputs)
            spendingTx_signed = self.node.signrawtransaction(spendingTx)
            if spendingTx_signed["complete"]:
                txhash = self.node.sendrawtransaction(spendingTx_signed["hex"])
                return txhash
            else:
                self.log.warning("Error: %s" % str(spendingTx_signed["errors"]))
                return ""
        except JSONRPCException as e:
            self.log.error("JSONRPCException: %s" % str(e))
            return ""

    def spend_utxos(self, utxo_list, address_list = []):
        ''' spend utxos to provided list of addresses or 10 new generate ones.
        :param      utxo_list:      (JSON list) returned from listunspent used as input
                    address_list:   (string list) [optional] recipient PIVX addresses. if not set,
                                    10 new addresses will be generated from the wallet for each tx.
        :return:    txHashes        (string list) tx hashes
        '''
        txHashes = []

        # If not given, get 10 new addresses from self.node wallet
        if address_list == []:
            for i in range(10):
                address_list.append(self.node.getnewaddress())

        for utxo in utxo_list:
            try:
                # spend current utxo to provided addresses
                txHash = self.spend_utxo(utxo, address_list)
                if txHash != "":
                    txHashes.append(txHash)
            except JSONRPCException as e:
                self.log.error("JSONRPCException: %s" % str(e))
                continue
        return txHashes

    def stake_amplification_step(self, utxo_list, address_list = []):
        ''' spends a list of utxos providing the list of new outputs
        :param      utxo_list:     (JSON list) returned from listunspent used as input
                    address_list:  (string list) [optional] recipient PIVX addresses.
        :return:    new_utxos:     (JSON list) list of new (valid) inputs after the spends
        '''
        self.log.info("--> Stake Amplification step started with %d UTXOs", len(utxo_list))
        txHashes = self.spend_utxos(utxo_list, address_list)
        num_of_txes = len(txHashes)
        new_utxos = []
        if num_of_txes> 0:
            self.log.info("Created %d transactions...Mining 2 blocks to include them..." % num_of_txes)
            self.node.generate(2)
            time.sleep(2)
            new_utxos = self.node.listunspent()

        self.log.info("Amplification step produced %d new \"Fake Stake\" inputs:" % len(new_utxos))
        return new_utxos

    def stake_amplification(self, utxo_list, iterations, address_list = []):
        ''' performs the "stake amplification" which gives higher chances at finding fake stakes
        :param      utxo_list:    (JSON list) returned from listunspent used as input
                    iterations:   (int) amount of stake amplification steps to perform
                    address_list: (string list) [optional] recipient PIVX addresses.
        :return:    all_inputs:   (JSON list) list of all spent inputs
        '''
        self.log.info("** Stake Amplification started with %d UTXOs", len(utxo_list))
        valid_inputs = utxo_list
        all_inputs = []
        for i in range(iterations):
            all_inputs = all_inputs + valid_inputs
            old_inputs = valid_inputs
            valid_inputs = self.stake_amplification_step(old_inputs, address_list)
        self.log.info("** Stake Amplification ended with %d \"fake\" UTXOs", len(all_inputs))
        return all_inputs

    def sign_stake_tx(self, block, stake_in_value, fZPoS=False):
        ''' signs a coinstake transaction
        :param      block:           (CBlock) block with stake to sign
                    stake_in_value:  (int) staked amount
                    fZPoS:           (bool) zerocoin stake
        :return:    stake_tx_signed: (CTransaction) signed tx
        '''
        self.block_sig_key = CECKey()

        if fZPoS:
            self.log.info("Signing zPoS stake...")
            # Create raw zerocoin stake TX (signed)
            raw_stake = self.node.createrawzerocoinstake(block.prevoutStake)
            stake_tx_signed_raw_hex = raw_stake["hex"]
            # Get stake TX private key to sign the block with
            stake_pkey = raw_stake["private-key"]
            self.block_sig_key.set_compressed(True)
            self.block_sig_key.set_secretbytes(bytes.fromhex(stake_pkey))

        else:
            # Create a new private key and get the corresponding public key
            self.block_sig_key.set_secretbytes(hash256(pack('<I', 0xffff)))
            pubkey = self.block_sig_key.get_pubkey()
            # Create the raw stake TX (unsigned)
            scriptPubKey = CScript([pubkey, OP_CHECKSIG])
            outNValue = int(stake_in_value + 2*COIN)
            stake_tx_unsigned = CTransaction()
            stake_tx_unsigned.nTime = block.nTime
            stake_tx_unsigned.vin.append(CTxIn(block.prevoutStake))
            stake_tx_unsigned.vin[0].nSequence = 0xffffffff
            stake_tx_unsigned.vout.append(CTxOut())
            stake_tx_unsigned.vout.append(CTxOut(outNValue, scriptPubKey))
            # Sign the stake TX
            stake_tx_signed_raw_hex = self.node.signrawtransaction(bytes_to_hex_str(stake_tx_unsigned.serialize()))['hex']

        # Deserialize the signed raw tx into a CTransaction object and return it
        stake_tx_signed = CTransaction()
        stake_tx_signed.deserialize(BytesIO(hex_str_to_bytes(stake_tx_signed_raw_hex)))
        return stake_tx_signed

    def get_prevouts(self, utxo_list, blockHeight, zpos=False):
        ''' get prevouts (map) for each utxo in a list
        :param   utxo_list: <if zpos=False> (JSON list) utxos returned from listunspent used as input
                            <if zpos=True>  (JSON list) mints returned from listmintedzerocoins used as input
                 blockHeight:               (int) height of the previous block
                 zpos:                      (bool) type of utxo_list
        :return: stakingPrevOuts:           ({COutPoint --> (int, int, int, str)} dictionary)
                                            map outpoints to amount, block_time, nStakeModifier, hashStake
        '''
        zerocoinDenomList = [1, 5, 10, 50, 100, 500, 1000, 5000]
        stakingPrevOuts = {}

        for utxo in utxo_list:
            if zpos:
                # get mint checkpoint
                checkpointHeight = blockHeight - 200
                checkpointBlock = self.node.getblock(self.node.getblockhash(checkpointHeight), True)
                checkpoint = int(checkpointBlock['acc_checkpoint'], 16)
                # parse checksum and get checksumblock
                pos = zerocoinDenomList.index(utxo['denomination'])
                checksum = (checkpoint >> (32 * (len(zerocoinDenomList) - 1 - pos))) & 0xFFFFFFFF
                checksumBlock = self.node.getchecksumblock(hex(checksum), utxo['denomination'], True)
                # get block hash and block time
                txBlockhash = checksumBlock['hash']
                txBlocktime = checksumBlock['time']
            else:
                # get raw transaction for current input
                utxo_tx = self.node.getrawtransaction(utxo['txid'], 1)
                # get block hash and block time
                txBlocktime = utxo_tx['blocktime']
                txBlockhash = utxo_tx['blockhash']

            # get Stake Modifier
            stakeModifier = int(self.node.getblock(txBlockhash)['modifier'], 16)
            # assemble prevout object
            utxo_to_stakingPrevOuts(utxo, stakingPrevOuts, txBlocktime, stakeModifier, zpos)

        return stakingPrevOuts

    def log_data_dir_size(self):
        ''' Prints the size of the '/regtest/blocks' directory.
        :param:
        :return:
        '''
        init_size = dir_size(self.node.datadir + "/regtest/blocks")
        self.log.info("Size of data dir: %s kilobytes" % str(init_size))

    def test_spam(self, name, staking_utxo_list,
                  fRandomHeight=False, randomRange=0, randomRange2=0,
                  fDoubleSpend=False, fMustPass=False, fZPoS=False,
                  spending_utxo_list=[]):
        ''' General method to create, send and test the spam blocks
        :param    name:               (string) chain branch (usually either "Main" or "Forked")
                  staking_utxo_list:  (string list) utxos to use for staking
                  fRandomHeight:      (bool) send blocks at random height
                  randomRange:        (int) if fRandomHeight=True, height is >= current-randomRange
                  randomRange2:       (int) if fRandomHeight=True, height is < current-randomRange2
                  fDoubleSpend:       (bool) if true, stake input is double spent in block.vtx
                  fMustPass:          (bool) if true, the blocks must be stored on disk
                  fZPoS:              (bool) stake the block with zerocoin
                  spending_utxo_list: (string list) utxos to use for spending
        :return:  err_msgs:           (string list) reports error messages from the test
                                      or an empty list if test is successful
        '''
        # Create empty error messages list
        err_msgs = []
        # Log initial datadir size
        self.log_data_dir_size()
        # Get latest block number and hash
        block_count = self.node.getblockcount()
        pastBlockHash = self.node.getblockhash(block_count)
        randomCount = block_count
        self.log.info("Current height: %d" % block_count)
        for i in range(0, self.NUM_BLOCKS):
            if i !=0:
                self.log.info("Sent %d blocks out of %d" % (i, self.NUM_BLOCKS))

            # if fRandomHeight=True get a random block number (in range) and corresponding hash
            if fRandomHeight:
                randomCount = randint(block_count - randomRange, block_count - randomRange2)
                pastBlockHash = self.node.getblockhash(randomCount)

            # Get spending prevouts and staking prevouts for the height of current block
            current_block_n = randomCount + 1
            stakingPrevOuts = self.get_prevouts(staking_utxo_list, randomCount, zpos=fZPoS)
            spendingPrevOuts = self.get_prevouts(spending_utxo_list, randomCount)

            # Create the spam block
            block = self.create_spam_block(pastBlockHash, stakingPrevOuts, current_block_n,
                                           fStakeDoubleSpent=fDoubleSpend, fZPoS=fZPoS, spendingPrevOuts=spendingPrevOuts)

            # Log time and size of the block
            block_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(block.nTime))
            block_size = len(block.serialize())/1000
            self.log.info("Sending block %d [%s...] - nTime: %s - Size (kb): %.2f",
                          current_block_n, block.hash[:7], block_time, block_size)

            # Try submitblock
            var = self.node.submitblock(bytes_to_hex_str(block.serialize()))
            time.sleep(1)
            if (not fMustPass and var not in [None, "bad-txns-invalid-zpiv"]) or (fMustPass and var != "inconclusive"):
                self.log.error("submitblock [fMustPass=%s] result: %s" % (str(fMustPass), str(var)))
                err_msgs.append("submitblock %d: %s" % (current_block_n, str(var)))

            # Try sending the message block
            msg = msg_block(block)
            try:
                self.test_nodes[0].handle_connect()
                self.test_nodes[0].send_message(msg)
                time.sleep(2)
                block_ret = self.node.getblock(block.hash)
                if not fMustPass and block_ret is not None:
                    self.log.error("Error, block stored in %s chain" % name)
                    err_msgs.append("getblock %d: result not None" % current_block_n)
                if fMustPass:
                    if block_ret is None:
                        self.log.error("Error, block NOT stored in %s chain" % name)
                        err_msgs.append("getblock %d: result is None" % current_block_n)
                    else:
                        self.log.info("Good. Block IS stored on disk.")

            except JSONRPCException as e:
                exc_msg = str(e)
                if exc_msg == "Can't read block from disk (-32603)":
                    if fMustPass:
                        self.log.warning("Bad! Block was NOT stored to disk.")
                        err_msgs.append(exc_msg)
                    else:
                        self.log.info("Good. Block was not stored on disk.")
                else:
                    self.log.warning(exc_msg)
                    err_msgs.append(exc_msg)

            except Exception as e:
                exc_msg = str(e)
                self.log.error(exc_msg)
                err_msgs.append(exc_msg)

        self.log.info("Sent all %s blocks." % str(self.NUM_BLOCKS))
        # Log final datadir size
        self.log_data_dir_size()
        # Return errors list
        return err_msgs


text:
Making stepping out of home safer for women and girls in Marrakech
There is hardly a woman or a girl, in urban and rural areas alike, who has not experienced sexual harassment or the threat of sexual violence in public spaces. Unwanted sexual remarks and jokes, groping, indecent exposure and many other forms of sexual harassment are often trivialized and rarely legislated. As women's voices around the world rise in protest, UN Women's Safe City programme in Marrakech has engaged people from all walks of life—from bus and taxi drivers to journalists—to prevent and respond to sexual harassment.
Women participating in neighborhood safety audits. Photo: UN Women/Kimja Vanderheyden
As a woman, going out of the house and being in public spaces in Marrakech entails navigating unwanted sexual remarks, touches or worse, almost on a daily basis. Although often trivialized, sexual harassment against women and girls severely limits their mobility and opportunities for education, work and recreation.
The last national survey in Morocco (2009) estimated that 62.8 per cent of women living in urban areas experienced gender-based violence in public spaces. A 2015 local survey conducted by IMADEL, a non-profit organization in the Guéliz district of Marrakech, found that 67 per cent of women had experienced some form of violence in public spaces in the past 12 months. As a result, 60 per cent of women said they did not leave their home unaccompanied after dark, and only 9 per cent of women said they reported the incident of sexual harassment to the police.
To address the rampant sexual harassment, UN Women launched a city-wide initiative in 2014 in Marrakech, as part of its Global Flagship Programme Initiative Safe Cities and Safe Public Spaces, with support from the Spanish Agency of International Development Cooperation, and in collaboration with city and regional authorities, women's groups and UN partners. The programme engages people from all parts of society—from city officials to transportation workers and media professionals—to understand where and how women feel most vulnerable, who the perpetrators are, and what kind of interventions would be most effective.
Since public transportation and streets were the most common spaces in which sexual harassment occurred, the programme engaged transportation workers in prevention efforts. Taxi drivers were sensitized on sexual harassment in streets, and mobilized by trade unions and IMADEL, UN Women's local partner, to take action.
Haja Naima, a former taxi driver, illustrates the stereotypes of the taxi business: "When I worked as a taxi driver, I often heard criticisms and insults from my male colleagues; one of them told me to go knead bread and prepare lunch," shared Naima, who was among the few women taxi drivers in the city. "This work is not for women, go home," she was told.
But Naima knew that she was just as capable, and more trusted, than her male colleagues.
She had many female clients who preferred to ride with her, as they didn't want to be in a taxi with a man for fear of sexual harassment. However, Naima had to eventually quit her job because of harassment and social pressure. Today she is active in awareness-raising activities organized as part of the Safe Cities programme.
In 2015, UN Women also developed a new partnership with a private bus company ALSA, which provides a large network of buses throughout Marrakech, and integrated sexual violence prevention in ALSA's drivers' training modules. Since then, 1,520 drivers were trained on responding to sexual harassment in and around buses and bus stops.
Abdallah Lembarki, bus driver at ALSA one of the beneficiaries of the Safe Cities Marrakech training programme. Photo: UN Women/Hassan Chabbi
"We bus drivers are [often] the first witnesses of sexual harassment in public transport. Before, we did not know how to react in these cases," said local bus driver, Abdellah Lambarki. "The training programme, which we follow within ALSA, brings us the necessary knowledge to ensure safety in our buses. With our management, we have developed procedures that allow us to take immediate action to protect bus passengers from various acts of violence. Indeed, it is our responsibility, as citizens and drivers, to provide a safe space for all users," he added.
In Morocco, despite the high number of incidences of violence against women in public spaces, the draft law on violence against women is yet to be adopted, and sexual harassment in public spaces is still not legally recognized.
Preventing sexual harassment also requires a shift in public perceptions and views, since it's largely trivialized and normalized. "Women are often portrayed in the media as entertainment figures…. their image is depicted as inferior [to men] and provocative," observes Mohamed El Kennour, a journalist who has worked with a number of major Moroccan and Arab print media for 25 years. El Kennour was one of 27 local journalists who received training on how to improve women's representation in the media, as part of the Safe City and Safe Public Spaces programme in Marrakech.
Rochri Ahmimid, beneficiary of the taxi drivers training programme. Photo: UN Women/Hassan Chabbi
"It is our responsibility to cut existing stereotypes in the media, and to approach our reports and articles on women from a human rights and equality perspective," he says.
"Women and girls experience sexual harassment in all types of public spaces: on the streets, in buses, in taxis, on the beach, in cafés… There are many actors and many bystanders. Therefore, everyone must be involved in efforts to reduce this violence and in making women feel safe in public spaces, so that they can enjoy their freedom and benefit, equally as men, from the city's public services," says Leila Rhiwi, UN Women Representative in Morocco.
The first-ever participatory safety audit in Morocco was completed last year, led by 36 women in the neighbourhoods of Douar Sraghna and Hay Izdihar. Gradually, people's attitudes are starting to change. For many women, the process of leading safety audits, providing recommendations to the city officials and speaking out about the harassment they have suffered for so long, has been empowering. As one woman participant of the safety audit expressed: "No one had ever asked me what my concerns were about the neighbourhood. This process has been very powerful for me."
The programme in Marrakech is part of UN Women's Global Flagship Programme Initiative, Safe Cities and Safe Public Spaces, supported by over 15 donors from public and private sectors, currently spanning 27 cities around the world.
Advocacy and laws confront trafficking across the Arab States
New draft law to combat human trafficking brings hope in Morocco
Bringing bus drivers on board against sexual harassment in Marrakesh
Lakshmi Puri visits centre for women survivors of violence in Morocco
Remarks by Michelle Bachelet at the National Conference: "Morocco on the Path towards Equality"

redpajama_set_name: RedPajamaCommonCrawl


Published 04/19/2019 04:44:14 pm at 04/19/2019 04:44:14 pm in 22 Inch Curtain Rod.
22 inch curtain rod quality good loading capacity 2222mm78inch diameter double curtain rod set metal ball cage finialsteel brackets in curtain decorative accessories from 24 inch shower curtain rod.
18 to 24 inch shower curtain rods,24 inch shower curtain rod,22 inch curtain rods,22 inch curtain rod,18 22 inch curtain rods,22 inch shower curtain rod,22 inch adjustable shower curtain rod,22 inch tension curtain rod,22 inch tension curtain rods,20 22 inch curtain rod, rod desyne twine satin nickel inch curtain rod rod desyne twine satin nickel inch curtain rod.


text:
Tags: carter | terrorist | organizations | group | ease | sanctions | peace
Jimmy Carter: Ease Terror Sanctions
By Sandy Fitzgerald | Thursday, 20 June 2013 01:46 PM
Former President Jimmy Carter and other foreign policy experts want the United States to ease its sanctions on terrorist organizations so professional peace groups can legally work with them.
Carter, along with the Charity & Security Network, sent a petition to Secretary of State John Kerry Thursday, asking that peace groups be exempted from policies that make it a crime to offer training in negotiation and humanitarian law to terrorists, reports The Hill.
Urgent: Should the NSA Spy on Americans? Vote Here Now.
"The Secretary of State can, and should, exempt peace-building activities from this counterproductive application of the law," the petition says. "Doing so would open the door for professional peace-builders to fully engage in helping to end armed conflicts and suffering around the world, while making the United States safer."
The Charity and Security Network said its past efforts to work with the Taliban in Afghanistan; Hamas in the Palestinian territories; and guerilla fighters in Colombia have all been hindered by federal laws, many of which were enacted after the 9/11 terrorist attacks.
In addition, the Supreme Court ruled in 2010 that humanitarian aid fits the Patriot Act's definition of "material support" for terrorism, saying the aid frees up money used by terrorist groups for criminal activities while legalizing them.
The petition signees included more than two dozen groups and former officials. Among them: Mercy Corps; Andrew Natsios, the former administrator of the U.S. Agency for International Development under President George W. Bush; retired Ambassador Thomas Pickering; and Anne-Marie Slaughter, the director of policy planning at the State Department from 2009-2011.
Former President Jimmy Carter and other foreign policy experts want the United States to ease its sanctions on terrorist organizations so professional peace groups can legally work with them. Carter, along with the Charity & Security Network, sent a petition to...
carter,terrorist,organizations,group,ease,sanctions,peace
Thursday, 20 June 2013 01:46 PM
John McLaughlin to Newsmax TV: Big Backlash to Come
Ally of Poisoned Kremlin Critic Navalny Jailed in Moscow
Saturday, 16 Jan 2021 11:27 AM
Pavel Zelensky, a member of the Anti-Corruption Foundation team of Kremlin critic Alexei Navalny, was jailed by a Moscow . . .


text:
A man who suffers visions of an apocalyptic deluge takes measures to protect his family from the coming flood.
Director: Darren Aronofsky, Jessica Lichtner
Cast: Anthony Hopkins, Ariane Rinehart, Douglas Booth, Emma Watson, Jennifer Connelly
20142h 5m188 views
A thriller set in New York City during the winter of 1981, statistically one of the most violent years in the city's history, and centered on a the lives of an immigrant and his family trying to expand their business...
Director: J.C. Chandor, Jessica Lichtner, Martha Pinson
Cast: Albert Brooks, Alessandro Nivola, Ashley Williams, Catalina Sandino Moreno, David Oyelowo
Charlie and Dan have been best friends and business partners for thirty years; their Manhattan public relations firm is on the verge of a huge business deal with a Japanese company. With two weeks to sew up the contract, Dan...
Director: Jessica Lichtner, Johnny Martin, Thomas Robinson Harper, Walt Becker
Cast: Bernie Mac, Dax Shepard, John Travolta, Justin Long, Kelly Preston
An innocent immigrant woman is tricked into a life of burlesque and vaudeville until a dazzling magician tries to save her and reunite her with her sister who is being held in the confines of Ellis Island.
Director: James Gray, Jessica Lichtner
Cast: Angela Sarafyan, Antoni Corone, Dagmara Domińczyk, Deedee Luxe, Gabriel Rush
A naive young man assumes a dead man's identity and finds himself embroiled in an underground world of power, violence, and chance where men gamble behind closed doors on the lives of other men.
Director: Géla Babluani, Jessica Lichtner
Cast: 50 Cent, Alexander Skarsgård, David Zayas, Emmanuelle Chriqui, Gaby Hoffmann
20111h 57m1,532 views
The new found married bliss of Bella Swan and vampire Edward Cullen is cut short when a series of betrayals and misfortunes threatens to destroy their world. Bella soon discovers she is pregnant, and during a nearly fatal childbirth, Edward...
Genre: Adventure, Fantasy, Romance
Director: Bill Condon, Jessica Lichtner
Cast: Anna Kendrick, Ashley Greene, Elizabeth Reaser, Jackson Rathbone, Kellan Lutz
In an innocent heartland city, five are shot dead by an expert sniper. The police quickly identify and arrest the culprit, and build a slam-dunk case. But the accused man claims he's innocent and says "Get Jack Reacher." Reacher himself...
Director: Christopher McQuarrie, Jessica Lichtner
Cast: Alexia Fast, David Oyelowo, Jai Courtney, Joseph Sikora, Michael Raymond-James
20121h 55m11,564 views
After the birth of Renesmee, the Cullens gather other vampire clans in order to protect the child from a false allegation that puts the family in front of the Volturi.
Genre: Adventure, Drama, Fantasy, Romance
Cast: Ashley Greene, Billy Burke, Elizabeth Reaser, Jackson Rathbone, Kellan Lutz
Desperate to pay the bills and come through for their loved ones, three lifelong pals risk it all by embarking on a daring bid to knock off the very bank that absconded with their money.
Director: Jessica Lichtner, Zach Braff
Cast: Alan Arkin, Ann-Margret, Christopher Lloyd, Joey King, John Ortiz
A cover-up that spanned four U.S. Presidents pushed the country's first female newspaper publisher and a hard-driving editor to join an unprecedented battle between journalist and government. Inspired by true events.
Director: Andrea Ulrich, Jessica Lichtner, Rachael Gillson, Steven Spielberg
Cast: Alison Brie, Bob Odenkirk, Bradley Whitford, Bruce Greenwood, Carrie Coon
Two Jesuit priests travel to seventeenth century Japan which has, under the Tokugawa shogunate, banned Catholicism and almost all foreign contact.
Director: David Webb, Jessica Lichtner, Martin Scorsese
Cast: Adam Driver, Andrew Garfield, Ciarán Hinds, Issei Ogata, Liam Neeson
During the Cold War, the Soviet Union captures U.S. pilot Francis Gary Powers after shooting down his U-2 spy plane. Sentenced to 10 years in prison, Powers' only hope is New York lawyer James Donovan, recruited by a CIA operative...
Director: Jessica Lichtner, Steven Spielberg
Cast: Alan Alda, Amy Ryan, Austin Stowell, Billy Magnussen, Edward James Hyland


The online registration for the Council of Scientific and Industrial Research, New Delhi CSIR UGC So far, the Council has released the detailed information bulletin of the exam giving details of the exam, syllabus, eligibility, date, fees, etc. Online registration for the exam will begin on September 25, 2018. Interested candidates can apply till October 15 at csirhrdg.res.in.
CSIR, on behalf of UGC, holds the National Eligibility Test (NET) for the award of Junior Research Fellowships (JRF) and for determining eligibility for appointment of Lecturers in Chemical Sciences, Earth/ Atmospheric/ Ocean/ Planetary Sciences, Life Sciences, Mathematical Sciences, and Physical Sciences. Candidates with M.Sc. or Integrated BS-MS/ BS-4 years/ BE/ BTech/ BPharma/ MBBS can take the exam. Those candidates possessing only Bachelor's degree are eligible to apply only for JRF and not for Lectureship LS. Similarly, graduates will be eligible for CSIR fellowship only after getting registered/ enrolled for Ph.D./ Integrated Ph.D. program within the validity period of two years.
The maximum age limit for JRF (NET) is 28 years although there is no upper age limit for Lectureship. The question paper comprises of three sections: the first part will assess the general aptitude of the candidates while subject related MCQs will be asked in the second part. The third part will assess the scientific pursuit of the candidates. 'The questions shall be of analytical nature where a candidate is expected to apply the scientific knowledge to arrive at the solution to the given scientific problem,' reads the notice.
The CSIR June NET 2018 results are pending. For the June edition examination of 2017, CSIR had declared the result in December NET 2018) will begin on September 25, 2018, and the last date to apply online is October 15, 2018. You can apply on its official website, csirhrdg.res.in. The second edition of NET 2018 for science subjects will be conducted by the CSIR and the tentative date is on December 16, 2018.


Welcome to 8448 Chisolm Plantation!!! This 1.07 acre elevated custom built marsh front home is located on Edisto Island in the exclusive neighborhood of Middleton Plantation. It offers a long private gravel drive, brick laid driveway area closer to the home, fireplace in the family room, an elevator, screened in porch, large back deck, 3 car plus garage, vaulted smooth ceilings, granite counter tops, AGA European stove in the kitchen, tile & carpet throughout & a reverse osmosis water system. This house was built with all steel framing. The neighborhood offers 2 boat ramps & a large dock on Milton Creek.


Muursticker Yoga Namasté 2 met de tekst ; "My soul honors your soul. I honor the place in you where the entire Universe resides. I honor the light, love, truth, beauty and peace within you, because it is also within me. In sharing these things we are united, we are the same, we are one."
Muursticker Yoga Namaste Tekst is 90 cm breed en75 cm hoog. en verkrijgbaar in meerdere kleuren.


Withoutabox Submit to Film Festivals. Share your thoughts with other customers. Wendy marked it stamzteas to-read Aug 15, Jane discovers that he has a. Customers who viewed this item also viewed.
ALI marked it as to-read May 20, Just a moment while we sign you in to quererme mas stamateas Goodreads account. Product details Paperback Publisher: Roberto Campos marked it as to-read Sep 03, And since then books become his constant companions, help quwrerme understand difficult situations and resolve the most important problems of life.
Ships from and sold by Stars and Stripes Bookstore. Macarena marked it as to-read Dec 11, Pablo Allen rated it liked it Feb 24, sgamateas Emi marked it as to-read Feb 11, It not that good the book. Laia Hurtado Arnaiz marked it as to-read Dec 02, The Reader of the Tower stamateaz it as quererme mas stamateas Feb 14, Descargar libro gente toxica bernardo stamateas pdf En nuestra vida.
This information helps quererme mas stamateas to understand the nature of events that happen nowadays.
Please click button to get jane eyre s sisters book quererme mas stamateas. There was a problem filtering reviews right now. Christian Miranda rated it really liked it Jun 18, Stamatsas who bought this item also bought. Laia Hurtado Arnaiz marked it as to-read Dec 02, Quality-based payment stamatras healthcare—also known as pay-for-performance—is Download and Read Jane Eyre Ebook. Alicia Armario rated quererme mas stamateas really liked it Jul 18, Abel Nh marked it as to-read Jan 03, Refresh and try again.
East Dane Designer Men's Fashion. Want to Read Currently Reading Read.
Nina Barbero rated it really liked it Feb 12, Buy the selected items together This item: Theory, Practice, and Management by Patricia L. Carito marked it as to-read Dec 24, Emi marked it as to-read Feb 11, Ships from and sold by Amazon.
Figure quererme mas stamateas Queeerme of a coil triad.
Want to Read Currently Reading Read. Kybel rated it it was amazing May 07, Carito marked it as to-read Dec 24, Descargar el libro Quererme ms de Bernardo Stamateas. Amazon Inspire Digital Educational Resources. Lists quererme mas stamateas This Book.
Roberto Campos marked it as to-read Sep 03, Alicia Armario rated it really liked it Jul 18, Buy the selected items together This item: Cristina marked it as to-read Sep 24, Marcela marked it as quererme mas stamateas Jun 22, Buy the Jane Eyre ebook. Claudia Finocchio added it Mar 26, It becomes our true friend in a difficult moment when you have to find a unique solution that will help to get out of this situation. Ana Molina marked it as to-read Jun 29, Get fast, free shipping with Amazon Quererme mas stamateas.


text:
Jump to site navigation
Patient Care, Locations, Press Releases
NYU Langone Medical Center Announces $50 Million Gift to Create the New Ronald O. Perelman Center for Emergency Services
NYU Langone Medical Center and its longtime trustee Ronald O. Perelman, chairman and chief executive officer of MacAndrews & Forbes Holdings Inc., announced a $50 million gift to create the Ronald O. Perelman Center for Emergency Services (Perelman Emergency Center). The Perelman Emergency Center, expected to be completed in April 2014, will be a 22,000 square-foot state-of-the-art emergency care center located in Tisch Hospital on the Medical Center's main campus on Manhattan's east side. The Perelman Emergency Center more than triples the size of the former Emergency Department (ED).
"We are delighted that The Ronald O. Perelman Center for Emergency Services will soon transform the way emergency care is delivered in the community, hard-hit after Superstorm Sandy caused our emergency department to close," said Robert I. Grossman, MD, dean and CEO of NYU Langone Medical Center. "Mr. Perelman's generous gift will allow us to provide the community with access to advanced adult and pediatric emergency services, and is central to our ability to run a 21st century academic medical center."
The new Perelman Emergency Center is part of NYU Langone's sweeping campus transformation designed to modernize its infrastructure in order to more efficiently and effectively meet the health care demands of today's complex health care delivery system. Located at 570 First Avenue, it will include:
A separate, dedicated entrance on 33rd Street and 1st Avenue for adult walk-in and ambulance patients;
For the first time there will be an area solely dedicated to pediatric emergency services;
Spacious waiting rooms and improved wayfinding to increase patient flow and enable patients and families to be more comfortable;
Increase in treatment rooms designed to allow flexibility of use and to meet patients' needs, improved patient privacy and infection control and enhanced visibility and contact between caregivers and patients;
Expanded state-of-the-art imaging facilities that are fully integrated into emergency care procedures to enable faster diagnosis, including two new X-ray units and a dedicated ED ultrasound unit; and
A new disposition lounge will accommodate patients as they prepare for discharge, which makes treatment areas available for new patients quicker.
In addition to being an accomplished businessman, Mr. Perelman is a generous philanthropist, contributing to the arts, education, research, and Jewish causes among other areas of interest. In fact, in 2012 he was ranked #27 in the Chronicle of Philanthropy's ranking of America's top donors. For Mr. Perelman, the impetus behind his financial contributions is about creating a long-lasting, extraordinary impact. Mr. Perelman's holding company, MacAndrews & Forbes, which includes Revlon, is one of the country's largest privately-held businesses.
Mr. Perelman has been deeply involved with NYU Langone for three decades. He previously provided the Ronald O. Perelman Fund to support bio-molecular medicine at NYU School of Medicine and continues to support the Ronald O. Perelman Department of Dermatology at NYU Langone.
"I am very proud of my long association with NYU Langone Medical Center," said Ronald O. Perelman. "The need for a state-of-the-art emergency center is of paramount importance to the people of the City of New York and I look forward to this facility playing a crucial role in emergency patient care."
Though the original ED remains closed at this time, in the aftermath of Superstorm Sandy NYU Langone immediately established an Urgent Care Center to help address the community's need for emergency services. Though New York City Fire Department (FDNY) 9-1-1 ambulance service has not yet returned, the Urgent Care Center's patient volumes currently equal or exceed the ED's previous daily patient visits, signaling that the expanded and renovated space will be critical additions.
Ronald O. Perelman Center for Emergency Services
Need help finding a doctor?
Search all doctors or call 844-698-7243.
Research, Patient Care
Inside NYU Langone's High-Volume, High-Speed COVID-19 Testing Center
NYU Langone's 24-hour turnaround for reliable COVID-19 test results is a game changer.
NYU Langone Health Magazine, NYU Langone Health Magazine Fall 2020
How Our Emergency Departments Are Keeping You Safe
Learn how we are keeping patients safe in our emergency care locations in the wake of COVID-19.
The information entered on this page will not be used to send unsolicited email, and will not be sold to a third party.
Filter News by Category
Complex Cases
MyChart Patient Login


text:
Home News Accused in Orchard Towers murder who skipped court appearance re-arrested, back in...
Accused in Orchard Towers murder who skipped court appearance re-arrested, back in court
Tan Hong Sheng who is the youngest among the seven who are linked to the murder is also facing a separate charge for rioting
Photo: The accused being brought back to the crime scene
Singapore—After having jumped bail last month, 22-year-old Tan Hong Sheng, who is one of seven individuals charged in connection with the murder of Satheesh Noel Gobidass at Orchard Towers in July, was arrested again on September 26, Thursday, and was back in court the following day, where he also faced a separate charge for rioting.
Mr Tan is the youngest of the seven linked to the murder of Mr Satheesh. His co-accused individuals are Joel Tan Yun Sheng, age 26; Chan Jia Xing, age 26; Ang Da Yuan, age 26; Tan Sen Yang, age 28, Loo Boon Chong, age 25, and Natalie Siow Yu Zhen, age 23.
Mr Tan's rioting charges stem from his allegedly being involved in an unlawful assembly along with four other individuals who gathered to inflict hurt on a man named Desmond Neo Zhao Fu, age 30. This occurred at about 3:40 am August 9 just outside Club Secret at Central Mall in Magazine Road, when the accused was out on bail, according to a report from the Straits Times (ST).
Messrs Tan Hong Sheng, Loo Bong Chong and Chan Jia Xing had been initially accused of the murder following Mr Sateesh's death, but the classification of the charge against them was later amended to consorting with a person carrying an offensive weapon in a public place, after which the three men were released on bail. Messrs Tan and Chan were each offered bail of S$25,000 while Mr Loo's bail was set at S$15,000.
If they are found guilty, they could receive six strokes of the cane, as well as a maximum three-year jail sentence.
Messrs Loo and Chan reappeared in court on their scheduled date on August 29, but Tan Hong Sheng did not show up that day, after which a warrant of arrest was issued against him.
Their other four companions are still accused of murder with common intention and could receive the death penalty if convicted—Tan Sen Yang, Ang Da Yuan, Natalie Siow, and Joel Tan Yun Sheng.
Court documents show that they were with Tan Sen Yang, who allegedly had a folded "kerambit" knife (a curved knife which looks like a claw) on him on July 2 at the Naughty Girl Club in Orchard Towers.
Mr Sateesh was found motionless and lying in his own blood by the police at 6:25 am on July 2. Mr Satheesh was pronounced dead around an hour later when he was brought to Tock Seng Hospital.
Video footage from the scene showed a man walking in front of an escalator and then collapsing, with bystanders coming to his aid.
Mr Tan Hong Sheng is now in police custody at Central Police Division and will return to court on October 4, with Messrs Loo and Chan appearing in court again on October 10.
Their companions have been charged with murder, Ms Siow, and Messrs Joel Tan, Tan Seng Yang, and Ang, were sent in July to Changi Prison Complex's medical centre for psychiatric evaluation.
Ms Siow was ordered to undergo three weeks of psychiatric evaluation at Changi Women's Prison.
Another woman was at first thought to also have been involved in the case but she has not been charged for any offense./ TISG
Read related: Orchard Towers murder: Arrest warrant issued to accused who skipped court appearance
Orchard Towers murder: Arrest warrant issued to accused who skipped court appearance
criminal offence
Orchard Towers murder


text:
Mozilla To End ftp Support. What Are the Alternatives?
John McDermott
In March of this year, Mozilla followed in the steps of Google and announced the upcoming end to support for the ftp protocol in its browser. That is a very good thing!
The ftp URI is the mechanism for browsers to use FTP (the File Transfer Protocol) to send and receive data from servers supporting that protocol. FTP first appeared in TCP/IP environments in 1980, but was developed in 1971 and used NCP, the TCP/IP predecessor. The protocol is not considered secure in any way, sending data, usernames, and passwords in the clear.
To understand why the had insecure protocols such as FTP in its early days, we need to look a bit at history. In the early 1980s – and more so in the 1970s – computers and networks were very slow compared those of today. Other than large computers and military hardware, encrypting most data was fundamentally impractical. In addition, what we now know as the Internet was still controlled by the US Department of Defence. In those early days, unencrypted data transfer was impractical and not a huge risk. Today encrypting data (e.g. with TLS using https) is the standard.
There are five common more secure methods of uploading and downloading files over the internet or another TCP/IP network.
Web pages can allow uploading and downloading of files. A page can request the upload or download. Mozilla has a Javascript example one could include in a web page.
This is the FTP protocol over TLS, as HTTPS is HTTP over TLS. That means it is encrypted the same way web page access is encrypted. It is sadly not an approved protocol for a URI (i.e. to use in the browser), and requires a separate tool to use.
This is the Secure File Transfer Protocol. It is part of the SSH (Secure Shell) suite. Implementations of SSH generally include an SFTP installation. It is described in an Internet-Draft, not an RFC.
Usually referred to as "scp", this is a simpler protocol than SFTP and only supports file transfer, not the other ftp features provided by FTP.SFTP and scp are generally available on Linux and other UNIX-like systems. Windows users will find them in WinSCP (free) and other tools, potentially not for free. The WinSCP interface is intuitive for most Windows users.
By using file-sharing tools. Google, Dropbox, Box, Amazon S3, and others allow users to share files or folders. Some can share with specific users and some allow information to be shared with anyone. The latter can be formatted (e.g. as a web page) or raw data.
I use scp when I manage web sites. Sometimes I store data on Amazon S3. I use other sites to share data depending on with whom I share them. I sometimes use those services to share files with myself, allowing access to the data from different devices.
In Learning Tree's Cyber SecurIty introduction, Course 468 participants use hands-on activities to experience the issues with FTP and see how other tools are more secure.
Cyber Security, Networking & Virtualization


In coming days, India will have to harness modern technologies, like artificial intelligence (AI) and Internet of Things (IoT), to facilitate cross-border trade and to check tax evasion, the Central Board of Indirect Taxes and Customs (CBIC) Chairperson S Ramesh said on Monday.
Speaking on the occasion of India becoming the vice-chair of the Asia Pacific (APAC) region of the World Customs Organisation (WCO), Ramesh said, the country in coming days for actualising such a goal will encourage greater communication and connectivity and implement a single-window system for inter-operability among stakeholders.
Stating that it is imperative to harness technological advancements, he said there is no alternative to adopting technology for the objective of facilitating trade and checking revenue loss.
"We shall endeavour to ensure that modern technologies, such as blockchain, AI and IoT, become essential tools available to all customs administrations. What we now require is to remove the bottlenecks in trade to have a faster release time and lower cost, and to enhance competitiveness and business opportunities", said Ramesh at an event organised by the CBIC.


While in federal prison, our client's repeated complaints of nasal blockage and difficulty breathing were ignored by prison physicians. If properly worked up, he would have been timely diagnosed with Stage I laryngeal cancer; but instead the delay caused his cancer to go unrecognized until it was Stage III. His cancer further progressed to Stage IV, requiring multiple surgeries, including a permanent tracheostomy and a hemilaryngectomy–partial removal of the larynx; and nine months of chemotherapy and radiation treatment.
In June 2000, plaintiff, an inmate incarcerated at the federal correctional institution located in Loretto, Pa., reported that he was suffering a nasal blockage and breathing difficulty. He was subsequently examined by several of the institution's physician's assistants.
On July 6, 2000, plaintiff submitted an "inmate request to staff" form that requested an examination by an ear, nose and throat specialist. The request was denied. Plaintiff appealed the denial, but the jail warden denied the appeal.
During the period that spanned September 2000 and June 2001, plaintiff repeatedly reported that he was suffering hoarseness, a sore throat, speaking difficulties and a dry cough. He was examined more than 13 times by the prison medical staff, which ultimately determined that plaintiff was suffering recurrent pharyngitis–an infection or irritation of the pharynx or tonsils. Plaintiff was administered several different antibiotics.
During the period that spanned June 2001 and July 2001, plaintiff was transferred three times. He was sent to the federal penitentiary in Lewisburg, Pa., to the federal transfer center in Oklahoma and, finally, to the federal detention center in Oakdale, La. At each stop, he repeated his complaints, was examined and was administered antibiotics.
On Oct. 24, 2001, plaintiff was examined by Dr. Leslie Warshaw Jr., an ear, nose and throat specialist who was employed by the Federal Bureau of Prisons. Warshaw recommended performance of a CT scan and requested a follow-up examination of plaintiff. He did not examine plaintiff's larynx, but such an examination was performed during the follow-up examination, which occurred Jan. 22, 2002. During that examination, Warshaw observed a lesion that was located on plaintiff's larynx. Warshaw recommended performance of a biopsy.
On Feb. 6, 2002, Warshaw performed a panendoscopy–an examination of the lining of the esophagus. He also performed a laser biopsy of the larynx lesion. He removed a mass legion that occupied the anterior two-thirds of plaintiff's right true vocal cord. After the procedure, Warshaw determined that plaintiff was suffering laryngeal cancer.
Plaintiff sued the Federal Bureau of Prisons and its operator, the United States of America. He alleged that the bureau's staff failed to timely diagnose and treat his cancer and that the failure constituted medical malpractice. The matter proceeded to a bench trial.
Plaintiff claimed that he repeatedly requested examinations by an ear, nose and throat specialist, but that his requests were denied. His counsel contended that the cancer was diagnosed during stage III, but that it could have been diagnosed in September 2000 or October 2000, when it was a stage-I condition. He also contended that plaintiff's treatment did not begin until after March 1, 2002, when plaintiff was released from the federal prison system.
Defense counsel contended that plaintiff's cancer was timely diagnosed. They also contended that his medical history included a series of throat ailments that were unrelated to his cancer. They noted that one of the ailments necessitated performance of a tonsillectomy.
Plaintiff claimed that he suffered stage-III laryngeal cancer that progressed to stage IV. He contended that his treatment did not begin until after March 1, 2002, when he was released from the federal prison system. His treatment comprised multiple surgeries, which included a permanent tracheostomy and a hemilaryngectomy–partial removal of the larynx. He also underwent nine months of chemotherapy and radiation treatment. The cancer recurred in 2003, but it was subsequently eradicated, and plaintiff remains cancer-free.
Plaintiff claimed that his tracheostomy tube often causes coughing and that he cannot talk unless he covers the tube's opening. (He uses a finger to cover the opening.) He contended that he suffers esophageal stenosis–or narrowing–and that he will require additional surgical procedures. He also contended that his cancer has produced a 10-year shortening of his life expectancy. His counsel contended that the disease could have been diagnosed before or during stage-I status and that an earlier diagnosis would have produced a more favorable result.
Plaintiff's medical expenses totaled $18,149. They were paid by insurance, but a lien was pending. He sought recovery of the lien amount, his future medical expenses and damages for his past and future pain and suffering. His damages request totaled $6 million–the maximum allowed by the Federal Tort Claims Act.
Defense counsel noted that plaintiff was a smoker and contended that his cancer may have fully or partially stemmed from damage caused by smoking. They also contended that his cancer-treatment choices might have fully or partially caused the residual conditions that he experiences. Specifically, they claimed that radiation therapy could have achieved a better result than the hemilaryngectomy. They contended that radiation therapy would have preserved his voice and that it would not have caused esophageal stenosis.
Defense counsel also contended that plaintiff's cancer was diagnosed during stage II, that it was timely diagnosed and treated, and that an earlier diagnosis would not have altered the outcome of his treatment.
Defense counsel further noted that plaintiff's incarceration included stays in three states and that it ended in Louisiana. They argued that Louisiana law should have been applied to this case and that, as such, plaintiff's damages recovery should have been limited to that state's maximum: $500,000. In response, plaintiff's counsel argued that Pennsylvania law was applicable because a cancer diagnosis could have been made while plaintiff was incarcerated in that state. Judge Charles Sifton accepted the latter argument.
Sifton rendered a plaintiff's decision. He found that the Bureau of Prisons failed to timely diagnose and treat plaintiff's cancer and that the failures were a proximate cause of plaintiff's damages. Plaintiff was awarded $1,156,149.


Mobile pitcher Matt Torra threw six shutout innings before an unearned run in the seventh as the visiting Jacksonville Suns lost 5-1 to the BayBears on Tuesday night in the opener of a five-game Southern League series.Derell McCall (0-1) took the loss for the Suns in his debut. He struck out six and allowed three earned runs in 51/3 innings. McCall gave up a two-run homer in the third inning to BayBears catcher Orlando Mercado Jr., the son of the former major-leaguer.Ryan Klosterman drove in the Suns' lone run in the seventh on a ground-rule double that scored Bryan Petersen. Petersen and Kevin Randel each had two hits for the Suns.